独立包和用户定义的宏/长度

独立包和用户定义的宏/长度

这是我在这个令人惊奇的网站上的第一篇文章,大家好!!

我想知道是否有办法将一些参数(宏或长度)传递给独立文件。

这是我的 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启动第二次编译所需的功能),则子文件就会看到定义。

为了解决这个问题,我建议你

  1. 要么将定义放在\input由其他两个文件编辑的第三个小文件中,要么
  2. 避免使用本文档的buildnew其他build...选项,但将子文件作为 TeX 代码而不是图像包含其中。

相关内容