当我尝试在同一文档中使用 LaTeX 软件包pst-poker
和时,我遇到了问题。特别是,由 生成的脸部卡片的脸部图像显示在错误的位置。例如:asymptote
pst-poker
\documentclass{standalone}
\usepackage{asymptote}
\usepackage{pst-poker}
\begin{document}
\crdKh
\end{document}
\documentclass{standalone}
\usepackage{pst-poker}
\begin{document}
\crdKh
\end{document}
产生预期据我所知,数字卡的命令都能产生正确的输出。我尝试过查看文件.sty
本身,但没有找到潜在的冲突。我很好奇是否有人知道这些包之间是否存在冲突。
答案1
问题是asymptote.sty
重新定义了\Ginclude@eps
。 中的定义xetex.def
是
\def\Ginclude@eps#1{%
\Gin@log{<#1>}%
\bgroup
\ifx\Undefined\Gin@vllx\else\@trim@vporttrue\fi
\def\@tempa{!}%
\dimen@\Gin@urx\p@
\advance\dimen@ -\Gin@llx\p@
\if@trim@vport
\advance\dimen@ \Gin@vllx\p@
\fi
\edef\Gin@urx{\strip@pt\dimen@}%
\dimen@\Gin@ury\p@
\advance\dimen@ -\Gin@lly\p@
\if@trim@vport
\advance\dimen@ \Gin@vlly\p@
\fi
\edef\Gin@ury{\strip@pt\dimen@}%
\dimen@\Gin@req@width
\[email protected]%
\divide\dimen@\dimen@ii
\@tempdima\Gin@req@height
\divide\@tempdima\dimen@ii
\special{PSfile="#1"\GPT@space
\if@trim@vport
llx=\Gin@vllx\GPT@space
lly=\Gin@vlly\GPT@space
\fi
urx=\Gin@urx\GPT@space
ury=\Gin@ury\GPT@space
\ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\GPT@space\fi
\ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\GPT@space\fi
\ifGin@clip clip\fi}%
\egroup}
而其中一个asymptote.sty
是
\def\Ginclude@eps#1{%
\message{<#1>}%
\bgroup
\def\@tempa{!}%
\dimen@\Gin@req@width
\[email protected]\relax
\divide\dimen@\dimen@ii
\@tempdima\Gin@req@height
\divide\@tempdima\dimen@ii
\special{PSfile=#1\space
llx=\Gin@llx\space
lly=\Gin@lly\space
urx=\Gin@urx\space
ury=\Gin@ury\space
\ifx\Gin@scalex\@tempa\else rwi=\number\dimen@\space\fi
\ifx\Gin@scaley\@tempa\else rhi=\number\@tempdima\space\fi
\ifGin@clip clip\fi}%
\egroup
}
如果我恢复了正确的含义(对于 XeTeX),那么运行就成功了。
\documentclass{standalone}
\usepackage{graphicx}
\makeatletter
\let\Ginclude@eps@orig\Ginclude@eps
\makeatother
\usepackage{asymptote}
\makeatletter
\let\Ginclude@eps\Ginclude@eps@orig
\makeatother
\usepackage{pst-poker}
\begin{document}
\crdKh
\end{document}
为了避免 Ghostscript 发出的警告(这些警告可能无害,但也可能不安全,具体取决于所涉及的图形类型),您应该使用
xelatex-unsafe
(其实不是那不安全)。
另一种方法可能是将eps
文件转换pst-poker
为 PDF。我试过了epstopdf
,成功了。
答案2
使用最新版本的 TeX Distribution 和 Ghostscript 命令
xelatex -output-driver="xdvipdfmx -i dvipdfmx-unsafe.cfg -q -E" -file-line-error -synctex=1 file.tex
使用 xelatex 排版包含 pstricks 命令的 file.tex。