在LaTeX中,我如何定义一个字符串变量,其内容被使用而不是编译PDF中的变量?

假设我正在写一个软件的技术文档,我想在序言或其他地方定义包的名称,这样如果它的名称发生了变化,我就不必在很多地方替换它,而只需在一个地方替换它。


在序言中增加以下内容:

\newcommand{\newCommandName}{text to insert}

然后你可以在文本中使用\newCommandName{}

有关\newcommand的更多信息,请参见例如wikibooks

例子:

\documentclass{article}
\newcommand\x{30}
\begin{document}
\x
\end{document}

输出:

30

对于描述距离的变量,您可以使用\newlength(并使用\setlength, \addlength, \settoheight, \ settolth和\settodepth来操作这些值)。

类似地,您可以访问\newcounter,用于在整个文档中递增的节号和图号。我过去曾使用此代码提供代码示例,这些代码示例与其他数字分开编号……

同样值得注意的是\makebox,它允许你存储一些布局好的文档以供以后重用(以及与\ settolth…一起使用)。


使用\def命令:

\def \variable {Something that's better to use as a variable}

请注意\def会在没有任何警告的情况下覆盖现有的宏,因此可能会导致各种微妙的错误。要克服这个问题,可以使用my_var这样的命名空间变量,或者改用\newcommand、\renewcommand命令。


如果你想使用\newcommand,你也可以包括\usepackage{xspace}和通过\newcommand{\newCommandName}{text定义命令来插入\xspace}。 这可以允许你只使用\newCommandName而不是\newCommandName{}。

欲了解更多详情,请访问http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html


我认为你可能想要使用一个令牌列表来实现这个目的: 设置令牌列表 \ newtoks \ packagename 要分配名称: \packagename={包的新名称} 将名称放入输出: \ \ packagename。