变量已定义但在类文件中使用并且想要在 tex 文件中指定值

变量已定义但在类文件中使用并且想要在 tex 文件中指定值

我是 TeX 新手,我“继承”了一个 tex 文档和类文件。该类文件具有:

\newtoks\copyrtyr
\newtoks\acmcopyr
\newtoks\boilerplate
\def\CopyrightYear#1{\global\copyrtyr{#1}}
\def\crdata#1{\global\acmcopyr{#1}}
\def\permission#1{\global\boilerplate{#1}}

但它从不使用copyrtyracmcopyr、、或中的任何一个。我如何在类文件中使用这些boilerplate,但在 tex 文件中指定值?所有帮助都将不胜感激。CopyrightYearcrdatapermission\toappear{}

答案1

\newtoks定义一个令牌寄存器,即存储令牌的地方。

\newtoks{\copyrtyr}--> 令牌寄存器 \copyrtyr 已定义。

\copyrtyr{2015}将设置寄存器为值 2015。如果稍后要使用(“打印”),\the\copyrtyr则使用 -->\theTeX命令序列(几乎)总是强制打印寄存器的某些值或状态。

\def\CopyrightYear#1是一个宏定义 -> 它将使用一对中包含的值{...}并将其存储到这里令牌寄存器中\copyrtyr(这是给定代码中的定义) --> 所有其他的\def\newtoks非常相似。

在类中,你可以将命令定义\toappear为任何内容,例如,像下面这样打印出寄存器值:

\newcommand{\toappear}{\the\copyrtyr\ \the\acmcopyr\ \the\boilerplate}

这个定义不是一个调用(并且\toappear此刻的有用性是*doubtfull ;-)) --> it just says what\toappear`应该做如果稍后调用它的话。

的调用\CopyrightYear{2015}可以在之后发生\begin{document},即不需要在前言中,也不需要在类中,除非从一开始就应该给出一些值。

另请参阅,重复使用等将会改变以后\CopyrightYear的输出,但不会改变之前的输出。\toappear

\documentclass{article}

%% Suppose this is class content

\newtoks{\copyrtyr}
\newtoks{\acmcopyr}
\newtoks{\boilerplate}
\def\CopyrightYear#1{\global\copyrtyr{#1}}
\def\crdata#1{\global\acmcopyr{#1}}
\def\permission#1{\global\boilerplate{#1}}




\newcommand{\toappear}{\the\copyrtyr\ \the\acmcopyr\ \the\boilerplate}

%End of class content

% Now set the values of the token registers (can be done later on too)

\CopyrightYear{2015}
\crdata{Groucho Marx}
\permission{No copying allowed}


\begin{document}

% Call \toappear here or later on
\toappear

% Redefine the register contents
\CopyrightYear{2016}
\crdata{Harpo Marx}
\permission{All copying is allowed}


\toappear


\end{document}

在此处输入图片描述

相关内容