如何通过 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
根据标志的值来处理您的文档。