循环中的条件赋值

循环中的条件赋值

客观的:

我想对temporary.tex包含 PSTricks 代码的文件进行两次编译。一次使用-jobname=Rotated,另一次使用-jobname=Unrotated。结果Rotated.ps将传递给ps2pdfwithout -dAutoRotatePages=/None,但Unrotated.ps将传递给ps2pdfwith -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 }

无需新的“如果”

相关内容