“发布”为pdf

时间:2010-01-15 13:07:31

标签: pdf matlab publish

使用Matlab,我想创建一个pdf文档,总结几个实验的结果。理想情况下,每个实验我有一页有2个多面板图和一些文字。

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

我怎样才能在Matlab中创建多重pdf并对布局进行一些控制?

6 个答案:

答案 0 :(得分:5)

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

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

  • 写出LaTeX,然后使用PdfLaTeX生成PDF
  • 写出reStructuredText,然后使用Python docutils生成PDF
  • 写出DocBook XML,然后使用任何DocBook转PDF转换器
  • 写出HTML,然后使用浏览器或OpenOffice将其打印为PDF。

如果您不想这样,请查看Matlab文档。 您可以为已发布的数字指定图像大小/分辨率,我认为存在插入换行符的可能性。

答案 1 :(得分:1)

如果您真的想要控制pdf生成,请查看iText Java PDF library - 您可以从MATLAB中轻松使用Java库。

答案 2 :(得分:1)

  1. 这是一个example.m文件,其中包含要发布的循环中的图:

    x = -5 : 5
    for i=1:3
      plot(x, x .^ i );
      snapnow;
      disp('<latex>\clearpage</latex>')
    end
    
  2. 从MATLAB安装目录中获取样本xsl-stylesheet文件

    ...\toolbox\matlab\codetools\private\mxdom2latex.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)
    

    你已经完成了:)

  6. P.S。是的,没有记录,很可惜。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

最后我选择了LaTeX,因为它提供的文档质量远高于我使用HTML格式的文档。

不幸的是,即使发布到LaTeX,publish.m也相当有限。例如,如果在循环中添加多个图形,则无法设置分页符,并且调整图形大小以在页面上准确获得N个图形非常困难。

因此,我编写了一个函数来直接编写LaTeX文件(使用export_fig从文件交换中保存图形),另一个编译为pdf。 通过这种方式,我可以轻松生成LaTeX文件,并且我对格式化有很大的帮助。

答案 5 :(得分:0)

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

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

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

\ usepackage {amsmath}

\ usepackage {amssymb}

我不太了解LaTeX或TeXworks知道这些软件包在发布到pdfLaTeX + MakeIndex + BibTeX时默认使用的功能添加到TeXworks的功能