使用 Matlab,我想创建一个 pdf 文档,总结几个实验的结果。理想情况下,每个实验我会有一个页面,包含 2 个多面板图形和一些文本。
我认为这publish.m
是要走的路,但是,发布到 pdf 不支持插入分页符,我既不能控制图形质量(这相当糟糕),也不能控制图形大小(这意味着 2 个数字占用整个页面),我也不能将文本填充到页眉/页脚中。
我还能如何创建一个多页 pdf,并在 Matlab 中对布局进行一些控制?
有 Matlab 报告生成器工具箱,它可以很容易地做到这一点。当然,这需要一些钱。
您可以尝试从 Matlab 中写出一些标记文本,然后使用其他一些工具将其转换为 PDF。可能的转换器:
如果您不想这样做,请查看 Matlab 文档。您可以为已发布的数字指定图像大小/分辨率,我认为存在插入换行符的可能性。
如果您真的想控制 pdf 的生成,请查看iText Java PDF 库——您可以在 MATLAB 中相当轻松地使用 Java 库。
这是一个 example.m 文件,其中包含要发布的循环中的图:
x = -5 : 5
for i=1:3
plot(x, x .^ i );
snapnow;
disp('<latex>\clearpage</latex>')
end
从您的 MATLAB 安装目录中获取示例 xsl-stylesheet 文件
...\toolbox\matlab\codetools\private\mxdom2latex.xsl
并将其复制到您的 example.m 文件旁边,例如 custom_mxdom2latex.xsl。
在您的自定义 .xsl 文件中找到以下破坏输出顺序的邪恶行:
<xsl:apply-templates select="text"/>
<xsl:apply-templates select="mcode"/>
<xsl:apply-templates select="img"/>
<xsl:apply-templates select="mcodeoutput"/>
用这个替换这些行:
<xsl:apply-templates select="text|mcode|img|mcodeoutput"/>
发布:
opts.format='latex';opts.stylesheet='custom_mxdom2latex.xsl'
publish('example', opts)
你完成了 :)
PS是的,没有记录,很遗憾。
最后我选择了 LaTeX,因为它提供的文档质量比我通过 HTML 高得多。
不幸的是,即使在发布到 LaTeX 时,publish.m 也相当有限。例如,如果您在循环中添加多个图形,则无法设置分页符,并且调整图形大小以将 N 个图形精确地放在页面上是非常困难的。
因此,我编写了一个函数来直接写入 LaTeX 文件(使用文件交换中的 export_fig 保存数字),另一个编译为 pdf。这样,我可以轻松地生成 LaTeX 文件,并且我对格式化有很大的影响力。
MathWorks 提供了一个报告生成器工具箱,可让您设置输出样式 - 基本上,它是该publish
函数的一个更高级的版本。
是的,如上所述,LaTeX。如果您发布方程式,您最终会发现这对于良好的输出是必要的。一旦你走这条路,下面的标记就会很好地工作。然后我使用 TexWorks 将 LaTeX 转换为 pdf。一个附带的好处(也是我走这条路的真正原因)是得到比内置 pdf 转换器更好看的方程。当我在做其他事情时,下载和安装花了一两个小时,它的运行速度比直接转到 pdf 时要快一些。
%%
% <latex>
% \clearpage
% </latex>
旁注:Matlab 2012b 中的每个新方程都出现了一些我不记得的错误(方程出现了,我只是有一个错误)。当我切换到 LaTeX 时,这停止了,但我需要在 Matlab 中指定一个首选项文件,并插入这些行以获得我想要的所有方程功能。
\使用包{amsmath}
\使用包{amssymb}
我对 LaTeX 或 TeXworks 了解不够,不知道这些包在发布到 pdfLaTeX+MakeIndex+BibTeX 时默认使用的 TeXworks 添加了哪些功能