我正在写一份文件,其中人 A 的名字会出现在 A 部分的多个地方。同样,人 B 的名字也会出现在 B 部分的多个地方,等等。
有没有什么方法可以在 A 部分之前定义一个变量,比如 PersonName,为其分配一个与 Person A 相关的值,并在 A 部分中使用它。然后,在 B 部分的开头重新定义 PersonName,在 B 部分中使用它,等等。
如果 PersonName 无法在正文中定义,我可以在序言中声明它并在正文中不断为其分配不同的值吗?
答案1
这正是宏的用途。您可以使用 定义自己的宏\newcommand{\command}{<actions>}
,然后使用 重新定义它们\renewcommand
。这两个命令都可以在文档中的任何位置给出,因此您可以执行以下操作:
\documentclass{article}
\begin{document}
\section{Section A}
\newcommand{\PersonName}{Person A}
Some text written by \PersonName.
\section{Section B}
\renewcommand{\PersonName}{Person B}
Some text written by \PersonName.
\end{document}
答案2
随着scontents
包很容易完成您要查找的操作。全部存储在内存中,当然,如果您更喜欢外部文件,则可以使用环境版本和密钥,write-env=file.tex
除了将它们存储在内存中之外,您还可以将内容放在单独的文件中,然后使用\input
。我更喜欢保存在内存中:)
\documentclass{article}
\usepackage{scontents}
\setupsc{store-cmd=person}
\Scontents{Person A}
\Scontents{Person B}
\begin{document}
\section{Section A}
Some text written by \getstored[1]{person}
\section{Section B}
Some text written by \getstored[2]{person}
\end{document}