有什么方法可以在LaTeX中定义变量吗?

And*_*ini 329 variables latex

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

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

sec*_*ond 340

在序言中添加以下内容:

\newcommand{\newCommandName}{text to insert}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 省略花括号时@DiAlex要小心,因为它会在插入文本后干扰空格.见[这个问题](http://tex.stackexchange.com/q/31091). (28认同)
  • 这不是一个好的答案。该命令将在调用时进行评估,而不是在定义时进行评估。所以这不是传统语言意义上的变量。如果该命令从未被调用,则该命令的“主体”将永远不会被评估,如果该命令被调用两次,则“主体”将被评估两次。 (4认同)
  • 非常赞成,这当然符合OP的目的。但它并不是真正的变量。 (3认同)

pla*_*aes 158

使用\def命令:

\def \variable {Something that's better to use as a variable}
Run Code Online (Sandbox Code Playgroud)

请注意,在\def没有任何警告的情况下覆盖预先存在的宏,因此可能会导致各种细微错误.为了克服这个问题或者使用命名空间的变量,如my_var或退回到\newcommand,\renewcommand命令代替.

  • 使用`\ def`可能会有问题,因为它不会检查预先存在的宏.参见[LaTeX地狱的第二圈](http://dabacon.org/pontiff/?p=6101) - 因此,最好使用`\newcommand` (10认同)
  • @plaes你是对的,但这并不意味着你想要使用`\ def`.相反,我认为最好首先"初始化"你想要用`\newcommand`使用的所有变量(即使它只是用`\ @ empty`),然后使用`\ renewcommand创建命令来修改变量`.如果你的变量已经退出,这将告诉你,因为`\newcommand`会抛出一个错误(或者至少是一个警告). (4认同)
  • 请注意,`\ def`适用于数学模式中的事物,而`\newCommandName`则不适用.(例如,`\ def\mathExpression {\ pi ^ 2 +\sin x}`) (4认同)
  • 谢谢@RyanAtallah补充说明.但是,"变量"的含义是否意味着它可能会发生变化?:) (2认同)

dmc*_*kee 32

对于变量描述的距离,你可以使用\newlength(与操纵值\setlength,\addlength,\settoheight, \settolength\settodepth).

同样,您可以访问\newcounter部分和图形编号等内容,这些内容应在整个文档中递增.我过去曾使用过这个来提供与其他数字分开编号的代码示例...

另外值得注意的是\makebox,它允许您存储一些布局文档以供以后重复使用(以及与\settolength...... 一起使用).

  • 简单的用法示例如`\newlength {\ hcolw}`和`\ setlength {\ hcolw} {0.47\textwidth}`会很有用. (21认同)

小智 18

如果要使用\newcommand,还可以包含\usepackage{xspace}和定义命令\newcommand{\newCommandName}{text to insert\xspace}.这可以让你只使用\newCommandName而不是\newCommandName{}.

有关详细信息,请访问http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html