使用独立程序将 \special、\​​put、\makebox 命令创建的图像转换为 pdf

使用独立程序将 \special、\​​put、\makebox 命令创建的图像转换为 pdf

这个问题与我的一个老问题相关:忽略非 PDF 特殊内容!使用 \special 命令创建的图像

在这个问题中,用户 Ulrike Fischer 建议通过创建standalone文档然后使用来解决我的问题latex->dvips->ps2pdf

这解决了我当时的问题,但我遇到了另一个问题。我现在处理的图形不仅包含\special命令,还\put包含\makebox。例如:

\documentclass[11pt]{standalone}
\begin{document}

\begin{picture}( 45.7200, 10.3100)(  3.6000,-15.9100)
\special{pn 8}%
\special{sh 1.000}%
\special{ar 936 596 36 36  0.0000000 6.2831853}%
\special{pn 8}%
\special{sh 1.000}%
\special{ar 936 1136 36 36  0.0000000 6.2831853}%
\put(9.3600,-16.7600){\makebox(0,0){$H_0$}}%
\end{picture}
\end{document}

使用后latex->dvips->ps2pdf,生成的图形将被裁剪,使其成为包含由\special命令生成的图形所有部分的最小框,并忽略\put\makebox

到目前为止,我能想到的最简单的解决方法是编译文章文档类中的图形并使用 Adob​​e 手动裁剪它们,但我更愿意将该解决方案作为最后的手段。

答案1

正如其他用户在评论中提到的,TeX 无法将作为特殊内容添加的内容的大小考虑在内,因为这只能稍后通过例如进行处理dvips

border您可以使用类的键手动添加所需的边框standalone。您可以使用例如ghostscript扫描生成的 PDF 以获取实际使用的大小,并使用此信息计算边框。一种更简单的方法是简单地pdfcrop在 PDF 上使用,因为它ghostscript在内部使用。由于它只考虑可见材料,您需要事先添加较大的边距,例如border=10cm在上述情况下,然后再次裁剪它pdfcrop

所以

\documentclass[11pt,border=10cm]{standalone}
...

进而

latex <filename>.tex
dvips <filename>
ps2pdf <filename>.ps
pdfcrop <filename>.pdf

你就得到了<filename>-crop.pdf结果。

相关内容