这个问题与我的一个老问题相关:忽略非 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
。
到目前为止,我能想到的最简单的解决方法是编译文章文档类中的图形并使用 Adobe 手动裁剪它们,但我更愿意将该解决方案作为最后的手段。
答案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
结果。