在 LaTeX 中,如何定义一个字符串变量,其内容用于代替已编译 PDF 中的变量?
假设我正在编写关于软件的技术文档,并且我想在序言或某处定义包名称,以便如果它的名称发生变化,我不必在很多地方替换它,而只需在一个地方.
在序言中添加以下内容:
\newcommand{\newCommandName}{text to insert}
然后你可以在文本中使用 \newCommandName{}
有关 \newcommand
的更多信息,请参见例如 wikibooks
例子:
\documentclass{article}
\newcommand\x{30}
\begin{document}
\x
\end{document}
输出:
30
使用 \def
命令:
\def \variable {Something that's better to use as a variable}
请注意,\def
会在没有任何警告的情况下覆盖预先存在的宏,因此可能会导致各种细微错误。为了克服这个问题,要么使用命名空间变量,如 my_var
,要么回退到 \newcommand
、\renewcommand
命令。
variable
的含义不是意味着它可能会改变吗? :)
\def
。相反,我认为最好的做法是首先“初始化”您想与 \newcommand
一起使用的所有变量(即使它只是与 \@empty
一起使用),然后创建您的命令来使用 \renewcommand
修改变量。这会让你知道你的变量是否已经退出,因为 \newcommand
会抛出一个错误(或者至少是一个警告)。
\def
适用于数学模式,而 \newCommandName
不适用。 (例如,\def\mathExpression{\pi^2 + \sin x}
)
myVar
对于描述距离的变量,您可以使用 \newlength
(并使用 \setlength
、\addlength
、\settoheight
、\settolength
和 \settodepth
操作值)。
同样,您可以访问 \newcounter
以获取应在整个文档中递增的部分和图形编号。我过去曾使用过这个来提供与其他数字分开编号的代码示例......
另外值得注意的是 \makebox
,它允许您存储一些布局文档以供以后重复使用(以及与 \settolength
一起使用...)。
\newlength{\hcolw}
和 \setlength{\hcolw}{0.47\textwidth}
之类的简单用法示例会很有用。
如果要使用\newcommand
,还可以包含\usepackage{xspace}
并通过\newcommand{\newCommandName}{text to insert\xspace}
定义命令。这可以让您只使用 \newCommandName
而不是 \newCommandName{}
。
如需更多详细信息,http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html
我认为您可能希望为此目的使用令牌列表:设置令牌列表 \newtoks\packagename
以分配名称:\packagename={New Name for the package}
将名称放入您的输出:\the\packagename
。
这对我有用: \newcommand{\variablename}{the text}
例如:\newcommand\m{100}
因此,当您在源代码中键入“\m\ is my mark”时,
pdf输出显示为:
100是我的标记