将编译标志传递给 pdflatex

将编译标志传递给 pdflatex

在 CI 中可以这样做:

gcc -DOPTION file.c
---
#ifdef OPTION
  ...code...
#endif

LaTeX 中有类似的机制吗?

我正在尝试为具有许多选项的产品编写手册。我想保留一个*.tex文件,但使用不同的编译标志重新编译它以生成特定单元的文档。

pdflatex \def\option{1} file.tex
---
To begin, press the \ifx\option1 green\else blue\fi button.

阅读时man pdflatex,我没有看到任何让我印象深刻的东西。 TEXINPUTS只是定义搜索路径。-src-specials看起来很有趣,因为文件中插入了一些东西,但它不适用于 PDF 模式。


我认为一个解决方案可能是\input{options},其中options.tex是指向定义变体选项的文件的符号链接。我不知道这是否是最好的主意。


我想这不是一个不寻常的用例。很可能我的想法是错误的。


搜索起来非常困难。搜索“latex flags”会给出如何渲染国旗的软件包。搜索“latex options”会给出如何将选项传递给 的信息\documentClass[option...]

答案1

通过命令行传递实际上不是 tex 的方式,您可以这样做pdflatex \def\option{1} \input{file.tex}(不pdflatex \def\option{1} file.tex),但更常见的是让您的文档使用\documentclass{mymanual}并这样mymanual.cls\InputIfFileExists{mymanual.cfg} ,这样您就可以将您想要的任何设置放在 cfg 文件中(ltxdoc、hyperref 等都有类似的机制)

也就是说,也许比在命令行上定义宏更方便的是,你可以使用kpsewhichwithout shell-escape 来访问环境变量

\documentclass{article}


\begin{document}

\input{"|kpsewhich  -expand-var $HOME"}

\end{document}

然后

pdflatex file生产

在此处输入图片描述

HOME=wibblepdflatex file生产

在此处输入图片描述

相关内容