使用Matlab,我想创建一个pdf文档,总结几个实验的结果。理想情况下,每个实验我有一页有2个多面板图和一些文字。
我认为publish.m
是可行的方法,但是,发布到pdf不支持插入分页符,我既不能控制数字质量(相当糟糕),也不能控制数字大小(这意味着2个数字占据整个页面),我也不能将文本填充到页眉/页脚中。
我怎样才能在Matlab中创建多重pdf并对布局进行一些控制?
答案 0 :(得分:5)
存在Matlab报告生成器工具箱,它可以很容易地做到这一点。 当然要花一些钱。
您可以尝试从Matlab写出一些标记文本,然后使用其他工具将其转换为PDF。可能的转换器:
如果您不想这样,请查看Matlab文档。 您可以为已发布的数字指定图像大小/分辨率,我认为存在插入换行符的可能性。
答案 1 :(得分:1)
如果您真的想要控制pdf生成,请查看iText Java PDF library - 您可以从MATLAB中轻松使用Java库。
答案 2 :(得分:1)
这是一个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)
你已经完成了:)
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的功能