在LaTeX中,如何定义一个字符串变量,而不是已编译的PDF中的变量使用其内容?
假设我正在用软件编写技术文档,并且想在序言中或某处定义软件包名称,这样,如果名称更改,则不必在很多地方替换它,而只需在一个地方替换。
在LaTeX中,如何定义一个字符串变量,而不是已编译的PDF中的变量使用其内容?
假设我正在用软件编写技术文档,并且想在序言中或某处定义软件包名称,这样,如果名称更改,则不必在很多地方替换它,而只需在一个地方替换。
Answers:
在您的序言中添加以下内容:
\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}
)
对于变量描述的距离,你可以使用\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