在文本中使用变量后显示定义的变量

在文本中使用变量后显示定义的变量

我遇到过一种情况,我需要访问在文本中使用后定义的变量。下面是我想要实现的一个示例,本质上变量的定义发生在 latex 文档的后面,这显然会导致编译器错误。

\begin{document}
\Varirable
\renewcommand{\Varirable}{Updated}
\end{document}

有没有什么方法可以让我以某种方式预先声明该变量,并在编译时交叉引用它,以便可以用正确的值(在最后定义)进行更新?

答案1

您需要将其写入.aux文件中。

\documentclass{article}

\ExplSyntaxOn

% at point of definition, store in the aux file
\NewDocumentCommand{\definevariable}{mm}{%
  % #1 = symbolic name, #2 = value
  \iow_now:cn { @auxout } {\setvariable{#1}{#2}}
 }

% the container for the variables
\prop_new:N \g_tracey_variables_prop

% \setvariable populates the property list
\NewDocumentCommand{\setvariable}{mm}
 {
  \prop_gput:Nnn \g_tracey_variables_prop { #1 } { #2 }
 }

% \usevariable uses (or prints ??)
\NewExpandableDocumentCommand{\usevariable}{m}
 {
  \tl_if_empty:eTF { \prop_item:Nn \g_tracey_variables_prop { #1 } }
   { ?? }
   { \prop_item:Nn \g_tracey_variables_prop { #1 } }
 }

\ExplSyntaxOff

\begin{document}

\usevariable{mytext}

Some text

\definevariable{mytext}{Ööç}

\end{document}

第一次运行:

在此处输入图片描述

第二次运行:

在此处输入图片描述

相关内容