使用xs2pdf函数在Scilab中调整图的大小
问题描述:
我写了生成矩阵的Scilab代码行。它是一个函数,其参数是一个包含两个正整数的向量,并根据某种算法返回一个尺寸为向量值的矩阵。该函数还将矩阵导出为LaTeX样式的图形,这要归功于prettyprint
函数。使用xs2pdf函数在Scilab中调整图的大小
我希望将该数字导出为PDF文件,为此我使用了函数xs2pdf
。它工作得很好。问题在于,在达到预期目的时,该函数会生成一个大小在40x40左右的矩阵,并且它不适合页面。在我看来,创建的PDF文档甚至不是A4。
我并没有包括整个代码,所有你需要知道的是,代码生成一个名为z
矩阵,然后我有台词:
//just for this post
z=rand(40,40)
//export to figure
A=prettyprint(z) ;
clf ;
xstring(0,0,A) ;
//export to PDF
xs2pdf(0, '_path_to_pdf_file') ;
在这里创建为了z
矩阵来模拟我的程序实际生成的矩阵。如果您运行此代码,填写'_path_to_pdf_file'
位,您是否获得了体面的PDF输出?
答
我可以重现相同的问题。有时PDF输出甚至不会生成,Scilab会返回错误。
一种解决方法是让Scilab创建一个新的TeX文件并在Scilab外部用pdflatex
进行编译。好的部分是,你可以运行同一个Scilab脚本中的所有内容。当然,你需要安装一个LaTeX发行版。
r = 40; c = 40;
z = rand(r,c);
A = prettyprint(z) ;
texfile = "\documentclass{standalone}" + ...
"\usepackage{graphics}" + ...
"\usepackage{amsmath}" + ...
"\setcounter{MaxMatrixCols}{"+ string(c) +"}" + ...
"\begin{document}" + ...
A + ...
"\end{document}"
filename = "matrix.tex";
write(filename,texfile) //write() cannot overwrite a file
dos("pdflatex " + filename) //use unix() instead of dos() in case you're not on Windows
我不知道你是否有乳胶的任何知识,所以我应该做的一些注释:
- 输出变为当前的Scilab目录。 LaTeX生成的所有辅助文件也将在那里创建。
- 它使用
standalone
类,它将PDF输出精确地裁剪为.tex文件中描述的任何内容。在这种情况下,只打印矩阵,没有边距。要使用此课程,您需要安装用于LaTeX的standalone
软件包。 -
prettystring()
使用pmatrix
输出矩阵,这需要amsmath
包,因此您还需要安装此一个。 - 如果您的矩阵的列数超过10列,则需要行
\setcounter{MaxMatrixCols}{c}
。
是这是一个非常合适的替代 –