客观的:
我想对temporary.tex
包含 PSTricks 代码的文件进行两次编译。一次使用-jobname=Rotated
,另一次使用-jobname=Unrotated
。结果Rotated.ps
将传递给ps2pdf
without -dAutoRotatePages=/None
,但Unrotated.ps
将传递给ps2pdf
with -dAutoRotatePages=/None
。
下面的代码会抛出一些错误。错误信息你可以自己查看。
% this input file name is filename.tex
% compile it with pdflatex -shell-escape filename.tex
\documentclass[preview,border=12pt]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{temporary.tex}
\documentclass[pstricks,border=12pt]{standalone}
\begin{document}
\begin{pspicture}(4,2)
\rput{90}(2,1){Marienplatz}
\end{pspicture}
\end{document}
\end{filecontents*}
\usepackage{graphicx,pgffor}
\newif\ifAutoRotatePages
\def\AutoRotatePages{%
\ifAutoRotatePages
% do nothing
\else
-dAutoRotatePages=/None
\fi}
\def\JobName#1{-jobname=#1}
\foreach \outputname/\isautorotate in {Rotated/true,Unrotated/false}
{
\AutoRotatePages\isautorotate
\foreach \compiler/\ext in {latex \JobName{\outputname}/tex,dvips/dvi,ps2pdf \AutoRotatePages/ps}
{
\immediate\write18{\compiler\space \outputname.\ext}
}
}
\begin{document}
\foreach \filename in {Rotated,Unrotated}{\begin{center}\includegraphics{\filename}\end{center}}
\end{document}
如何解决这个问题?
答案1
\AutoRotatePages\isautorotate
将传递一个带有值的宏,true
或者您可以重新定义宏来接受这样的字符串,但更简单的方法是false
\AutoRotatePages
\csname AutoRotatePages\isautorotate\endcsname
和...一起
\def\AutoRotatePagestrue{}
\def\AutoRotatePagesfalse{ -dAutoRotatePages=/None }
无需新的“如果”