ChatGPT解决这个技术问题 Extra ChatGPT

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

在 LaTeX 中,如何定义一个字符串变量,其内容用于代替已编译 PDF 中的变量?

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

对于庞大的内容,值得一提的是 \savebox (en.wikibooks.org/wiki/LaTeX/Boxes#savebox)。

W
Werner

在序言中添加以下内容:

\newcommand{\newCommandName}{text to insert}

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

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

例子:

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

输出:

30

@DiAlex 省略花括号时要小心,因为它会干扰插入文本后的空白。请参阅this question
我无法让它与非 ascii 字符一起正常工作。有任何想法吗?
这不是一个好的答案。该命令将在调用时进行评估,而不是在定义时进行评估。所以这不是传统语言意义上的变量。如果命令从未被调用,则命令的“主体”将永远不会评估,如果命令被调用两次,“主体”将被评估两次。
非常赞成,它肯定符合 OP 的目的。但这并不是真正的变量。
工作,但编译器打印一条错误消息:“未定义的控制序列”。有没有办法解决这个问题?
p
plaes

使用 \def 命令:

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

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


使用 \def 可能会出现问题,因为它不检查预先存在的宏。请参阅 second circle of LaTeX hell - 因此,最好使用 \newcommand
感谢@RyanAtallah 对此添加了注释。但是,variable 的含义不是意味着它可能会改变吗? :)
@plaes 你是对的,但这并不意味着你想使用 \def。相反,我认为最好的做法是首先“初始化”您想与 \newcommand 一起使用的所有变量(即使它只是与 \@empty 一起使用),然后创建您的命令来使用 \renewcommand 修改变量。这会让你知道你的变量是否已经退出,因为 \newcommand 会抛出一个错误(或者至少是一个警告)。
请注意,\def 适用于数学模式,而 \newCommandName 不适用。 (例如,\def\mathExpression{\pi^2 + \sin x}
使用下划线会弄乱我必须做的绘图 myVar
d
dmckee --- ex-moderator kitten

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

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

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


\newlength{\hcolw}\setlength{\hcolw}{0.47\textwidth} 之类的简单用法示例会很有用。
F
Fran

如果要使用\newcommand,还可以包含\usepackage{xspace}并通过\newcommand{\newCommandName}{text to insert\xspace}定义命令。这可以让您只使用 \newCommandName 而不是 \newCommandName{}

如需更多详细信息,http://www.math.tamu.edu/~harold.boas/courses/math696/why-macros.html


R
Roald Nefs

我认为您可能希望为此目的使用令牌列表:设置令牌列表 \newtoks\packagename 以分配名称:\packagename={New Name for the package} 将名称放入您的输出:\the\packagename


V
Vineetha Vijayan

这对我有用: \newcommand{\variablename}{the text}

例如:\newcommand\m{100}

因此,当您在源代码中键入“\m\ is my mark”时,

pdf输出显示为:

100是我的标记


现有答案的重复,没有信息增益。
这不是重复。正如我已经提到的“这对我有用”

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅