2010-01-15 67 views
5

使用Matlab,我想创建一个总结几个实验结果的pdf文档。理想情况下,我会为每个实验设置一个页面,其中包含2个多面板数字和一些文本。“Publish”to pdf

我认为publish.m是要走的路,但是,发布到pdf不支持插入分页符,我既不能控制图形质量(这是相当糟糕的),也不是数字大小(这意味着2个数字占据整个页面),我也不能将文本填充到页眉/页脚中。

我怎么能创建一个多页PDF与一些控制从Matlab内的布局?

回答

5

存在Matlab报告生成器工具箱,它可以很容易地做到这一点。 当然它花了一些钱。

您可以尝试从Matlab写出一些标记文本,然后使用其他工具将其转换为PDF。可能的转换器:

  • 写出胶乳中,然后用PdfLaTeX生成PDF
  • 写下新结构化,然后使用Python docutils的生成PDF
  • 写出来的DocBook XML,然后使用任何DocBook到PDF转换器
  • 写出HTML,然后用浏览器或OpenOffice将其打印为PDF。

如果你不想要这个,看看Matlab文档。 您可以指定发布图形的图像大小/分辨率,我认为存在插入换行符的可能性。

+0

谢谢您的建议。当然,报表生成器工具箱恰好是我无法访问的那些工具箱之一。 不幸的是,这是不可能发布到PDF指定图像尺寸/分辨率和换行符,因为我在这个问题提到的(看看Matlab的文档和服务请求确认)。 我想这将是学习足够乳胶做出一个很好的文件,或者使用发布到HTML使一些快之间难以取舍。 – Jonas 2010-01-15 18:57:01

+0

在M-File注释中使用预格式化文本(单元格>插入文本标记>预格式化文本)怎么办?它支持换行符。 为了能够定义图像的大小,第一使用'打印-dpng'命令(见'帮助print')来创建一个单独的图像文件,然后在您的发布M-文件生成的文件(<>)。您可以指定选项来定义打印图像的大小。 – 2010-01-15 20:09:49

+0

对不起,我的意思是'分页符',而不是'换行符'。 – Jonas 2010-02-17 03:35:36

0

MathWorks做了一个Report Generator toolbox,它允许你设置你的输出样式 - 基本上它是publish函数的一个更有趣的版本。

1

如果你真的想要控制pdf的生成,看看iText Java PDF library - 你可以很容易地从MATLAB使用Java库。

0

最后,我使用了LaTeX,因为它提供的文档质量远高于通过HTML访问的文档。

不幸的是,即使涉及发布到LaTeX,publish.m也相当有限。例如,如果在循环中添加多个数字,则不可能设置分页符,并且调整图形大小以在页面上精确地显示N个数字是非常困难的。

因此,我写了一个函数来直接编写LaTeX文件(使用export_fig从文件交换中保存数字),另一个编译为pdf。 通过这种方式,我可以轻松生成LaTeX文件,并且在格式化方面我拥有很多功能。

+1

看一看https://github.com/Jubobs/pretty_publish – Jubobs 2014-08-07 16:45:52

0

对于LaTeX是的,如上所述。如果您发布方程式,您最终会发现对于良好输出而言必要的。一旦你走上了这条路,下面的标记效果很好。然后,我使用TexWorks将LaTeX转换为pdf。一个副作用(以及我走上这条路的真正原因)是要获得比我内置的pdf转换器更好的方程。下载和安装需要一两个小时,而我在做其他事情时,运行速度要比直接阅读pdf时要快一些。

%% 
% <latex> 
% \clearpage 
% </latex> 

旁注:一些错误,我不记得了与在Matlab 2012B每个新方程上来(等式出现了,我只是有一个错误)。当我切换到LaTeX时,这停止了,但我需要一个在Matlab中指定的首选项文件,插入这些行以获得我想要的所有等式功能。

\ usepackage {} amsmath

\ usepackage {} amssymb

我不知道有足够的了解乳胶或TEXworks的知道添加到发布到pdfLaTeX当什么TEXworks的默认情况下使用什么样的能力,这些包+ MakeIndex +中文提供

1
  1. 这是一个阴谋文件example.m在循环中被公开:

    x = -5 : 5 
    for i=1:3 
        plot(x, x .^ i); 
        snapnow; 
        disp('<latex>\clearpage</latex>') 
    end 
    
  2. 从MATLAB安装目录

    ...\toolbox\matlab\codetools\private\mxdom2latex.xsl 
    

    采取抽样XSL样式表文件和明年将它复制到你的example.m文件,比方说,作为custom_mxdom2latex.xsl。

  3. 查找您的自定义的.xsl文件中的以下邪恶线,破坏的输出顺序:

    <xsl:apply-templates select="text"/> 
    <xsl:apply-templates select="mcode"/> 
    <xsl:apply-templates select="img"/> 
    <xsl:apply-templates select="mcodeoutput"/> 
    
  4. 与此更换线路:

    <xsl:apply-templates select="text|mcode|img|mcodeoutput"/> 
    
  5. 发布:

    opts.format='latex';opts.stylesheet='custom_mxdom2latex.xsl' 
    publish('example', opts) 
    

    大功告成:)

附:是的,没有记录,这是一个遗憾。

+0

看起来有前途的! – Jonas 2013-06-03 16:49:38

+0

该死的,我刚刚被抛出MATLAB,并且在我对R/Sweave的积极体验之后,它的报告一直很糟糕...... – vak 2013-06-03 17:07:28