通过 Linux 终端在 LaTeX 中确定布尔运算

通过 Linux 终端在 LaTeX 中确定布尔运算

如何通过 Linux 终端在 LaTeX 中确定布尔运算?也就是说,我有:

%myfile.tex
\documentclass{article}

if parameter=true
is true
else
is false

\begin{document}
parameter
\end{document}

我想输入类似终端的内容

pdflatex -p myfile.tex #是真的

或者

pdflatex myfile.tex #是假的

答案1

最好的方法概述如下向文档传递参数,这应该更广为人知。如果文档以

\ifcase\flag\relax
  <what to do when \flag=0>\or
  <what to do when \flag=1>\or
  <what to do when \flag=2>\or
  ...
  <what to do when \flag=n>\else
  <what to do otherwise>\fi

我们可以通过调用编译来自由地选择多种情况

pdflatex '\def\flag{<value>}\input{myfile}'

你也可以通过将上面的代码放在

\ifdefined\flag
   <code above>
\else
   <default setting>
\fi

并且该调用pdflatex myfile将会被编译<default setting>

当然,代码也可能位于\documentclass声明之后,例如,用于在运行时选择包,或某些命令的不同定义。我正在考虑一个“可打印”版本(带有黑色链接),而不是“网络”版本(其中链接是彩色的)。但\ifcase我们可以根据需要定义任意数量的版本。

对于两个版本,只有一个可以使用简化版本:

\documentclass{article}
...
\usepackage{hyperref}
\ifdefined\coloredoutput
  \hypersetup{colorlinks,...}
\else
  \hypersetup{colorlinks=false,...}
\fi

和电话

pdflatex '\let\coloredoutput=T\input{myfile}'

将为链接着色,同时

pdflatex myfile

不使用任何颜色。

答案2

pdflatex '\scrollmode\newif\ifflag\flagtrue\input{myfile.tex}'
pdflatex '\scrollmode\newif\ifflag\flagfalse\input{myfile.tex}'

\scrollmode使得 TeX 在出现错误时不会停止。在 Makefile 中使用时很方便,但如果pdflatex从命令行调用,则可以省略它。

myfile.tex可以\ifflag .. \else .. \fi根据标志的值来处理您的文档。

相关内容