我编写了一个简单的 makefile 来编译我的 latex 代码。
我在该 makefile 中有一些变量,我想将它们传递给 latex 代码,但我不知道如何做到这一点。
示例 1:
在 makefile 中:
# set Type to A or B
Type = B
在乳胶代码中:
\ifdefined\B
%%%%%%%%%%%%%%%Some LaTeX Code%%%%%%%%%%%%%%%
\else
\ifdefined\A
%%%%%%%%%%%%%%%Some LaTeX Code%%%%%%%%%%%%%%%
\fi
\fi
示例 2:
在 makefile 中:
Version = J
在 LaTeX 代码中:
Some random text \Version
下面是我用于编译的 makefile 中的一行:
latexmk -lualatex -output-directory=$(OUTDIR) --jobname=$(REPORT_PDF) $(REPORT)
有什么帮助吗?
答案1
由于您正在使用 luatex,您可以轻松访问环境
\documentclass{article}
\begin{document}
\directlua{tex.write(os.getenv("FOO"))}
\end{document}
将打印 7 个给定
FOO=7 lualatex file
这样你就可以使用 Lua 或 TeX 条件代码进行测试/
答案2
你始终可以在 Makefile 中创建 LaTeX 将读取的辅助文件:即在 Makefile 中,
echo "\\def\\foo{$WHATEVER}" > foo.inc
在您的.tex
文件中,只需\input{foo.inc}
。
catchfile
另一种选择是,你可以使用将 LaTeX 宏设置为文件内容的包来做一些不那么脆弱的事情:即在 Makefile 中,
echo $WHATEVER > foo.var
在你的.tex
文件中,
\usepackage{catchfile}
\CatchFileDef{\foo}{}{foo.var}
(或者,如果您愿意的话,使用\file_get:nnN
)。
在这两种情况下,latexmk
都会注意到这些辅助文件的变化,并在它们改变时触发重新编译。