我注意到 pstricks 宏 psGTriangle(用于绘制具有 Gouraud 着色的三角形)无法与 auto-pst-pdf/pdflatex 结合使用。没有错误消息,只是忽略了 pspicture 环境。下面是一个最小示例来说明问题:
\documentclass{minimal}
\usepackage{pstricks,pstricks-add}
\usepackage{auto-pst-pdf}
\begin{document}
\psset{unit=0.5cm}
\begin{pspicture}[showgrid=true](-5,-5)(5,5)
\psGTriangle(-2,-2)(3,-1)(-0.5,3){red}{white}{blue}
\end{pspicture}
\begin{pspicture}[showgrid=true](-5,-5)(5,5)
\psline(-3,-2)(4,3)
\end{pspicture}
\end{document}
使用 latex -> dvips -> ps2pdf 编译此示例会给出具有 pspictures 环境的 pdf。
latex pdfmini.tex && dvips pdfmini.dvi && ps2pdf pdfmini.ps pdfmini_latex.pdf
使用 pdflatex 编译相同的示例会得到一个包含 2 个空白页的 pdf 和第三页上的第二个 pspicture 环境。
pdflatex -shell-escape pdfmini.tex
查看生成的pdfmini-图片.pdf文件,可以看出包含 psGTriangle 的图形有问题,即使它被显示了。似乎不知何故裁剪工作不太好。
在我研究解决这个问题的过程中,我发现使用 xelatex 编译可以生成一个好的 pdf 文件。但是我在更大的文档中使用 psGTriangle 宏,我宁愿继续使用 pdflatex(因为我对 xelatex 真的不熟悉)。
这个问题是已知的、可以解决的,还是我必须忍受它?
感谢您的帮助。
编辑:@percusse:我正在使用 Ubuntu 12.04
texlive 版本 2012.20120611-3~ubuntu12.04.1。
pdfTeX 3.1415926-2.4-1.40.13(TeX Live 2012/Debian)
XeTeX 3.1415926-2.4-0.9998(TeX Live 2012/Debian)
答案1
这只是一条建议。将您的绘图代码放入单独的可编译输入文件中,如下所示。
% figure.tex
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}
\psset{unit=0.5cm}
\begin{document}
% figure-1
\begin{pspicture}[showgrid=true](-5,-5)(5,5)
\psGTriangle(-2,-2)(3,-1)(-0.5,3){red}{white}{blue}
\end{pspicture}
% figure-2
\begin{pspicture}[showgrid=true](-5,-5)(5,5)
\psline(-3,-2)(4,3)
\end{pspicture}
\end{document}
figure.tex
按顺序编译latex-dvips-ps2pdf
以获得包含一些页面的 PDF。每页代表一个图表。
从主输入文件中,使用\includegraphics
(来自graphicx
包)导入 PDF 图像,如下所示。
% main.tex
\documentclass{article}
\usepackage{graphicx}
\newcommand\Insert[2][1]{\includegraphics[scale=#1,page=#2]{figure}}
\begin{document}
\Insert{1}
\Insert{2}
\end{document}
main.tex
用编译pdflatex
。
模拟
以下代码在单个文件中模拟了上述场景。使用 进行编译pdflatex -shell-escape simulation.tex
。
% simulation.tex
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{figure.tex}
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pstricks-add}
\psset{unit=0.5cm}
\begin{document}
% figure-1
\begin{pspicture}[showgrid=true](-5,-5)(5,5)
\psGTriangle(-2,-2)(3,-1)(-0.5,3){red}{white}{blue}
\end{pspicture}
% figure-2
\begin{pspicture}[showgrid=true](-5,-5)(5,5)
\psline(-3,-2)(4,3)
\end{pspicture}
\end{document}
\end{filecontents*}
\usepackage{graphicx}
\usepackage{pgffor}
\foreach \compiler/\ext in {latex/tex,dvips/dvi,{ps2pdf -dAutoRotatePages=/None}/ps}{\immediate\write18{\compiler\space figure.\ext}}
\newcommand\Insert[2][1]{\includegraphics[scale=#1,page=#2]{figure}}
\begin{document}
\Insert{1}
\Insert{2}
\end{document}
笔记
ps2pdf -dAutoRotatePages=/None figure.ps
用于防止自动改变页面方向。下面给出ps2pdf
模拟自动旋转页面的简单示例。ps2pdf
\begin{pspicture}[showgrid=false](4,4)% grid must be disabled
\rput{90}(2,2){PSTricks}% the text should be rotated by 90 ccw
\end{pspicture}
答案2
使用
\documentclass{minimal}
\usepackage{pstricks-add}
\usepackage[crop=off]{auto-pst-pdf}%%%%%%%
\begin{document}
\psset{unit=0.5cm}
\begin{pspicture}[showgrid](-5,-5)(5,5)
\psGTriangle(-2,-2)(3,-1)(-0.5,3){red}{white}{blue}
\end{pspicture}
\begin{pspicture}[showgrid](-5,-5)(5,5)
\psline(-3,-2)(4,3)
\end{pspicture}
\end{document}
在某些特殊情况下,pdfcrop
命令会失败。