这是我在这个令人惊奇的网站上的第一篇文章,大家好!!
我想知道是否有办法将一些参数(宏或长度)传递给独立文件。
这是我的 MWE:
考虑以下 main.tex 文件:
\documentclass{report}
\usepackage{standalone}
\standaloneconfig{mode=buildnew}
\newlength{\mylen}
\setlength{\mylen}{50pt}
\newcommand{\myl}{50pt}
\begin{document}
\ \\
main: \the\mylen, \myl \\
\includestandalone{safile}\\
\end{document}
这是独立文件 safile.tex:
\documentclass[varwidth]{standalone}
\begin{document}
standalone: \the\mylen, \myl\\
\end{document}
我得到的结果如下:
main: 50.0pt, 50pt
standalone: 0
但我期望看到:
main: 50.0pt, 50pt
standalone: 50.0pt, 50pt
有没有什么办法可以让它工作?
提前感谢您的回复。
答案1
您之所以会遇到standalone: 0
这种情况,是因为\standaloneconfig{mode=buildnew}
。您告诉standalone
要自行编译子文件。这会在子文件上再次内部调用 LaTeX,然后将生成的 PDF 作为图像包含。只要子文件不变,图像就会保留,不会再次构建。
这样,主文件中的宏定义就永远不会被子文件代码看到,因为它们是单独编译的。我猜是0
的后备,因为在这种情况下没有定义。实际上,由于该错误,子文件编译在那里停止了。\the
\mylen
但是,如果您使用主文档对其进行编译(例如,通过更改mode
或不启用-shell-escape
启动第二次编译所需的功能),则子文件就会看到定义。
为了解决这个问题,我建议你
- 要么将定义放在
\input
由其他两个文件编辑的第三个小文件中,要么 - 避免使用本文档的
buildnew
其他build...
选项,但将子文件作为 TeX 代码而不是图像包含其中。