我正在尝试找出定义别名的最佳方法。我有一些中等复杂的变量名,例如$p^{i,j}_{t}$
,必须一遍又一遍地输入它们,这很麻烦。更重要的是,如果我稍后决定更改命名约定,我必须返回并在整个文档中搜索替换,这看起来很荒谬。我尝试使用这种方法:
\newcommand{\varn}{$p^{i,j}_{t}$}
但这种方法不够强大。首先,我无法在数学模式下使用它,必须定义另一个命令
\newcommand{\mathvarn}{p^{i,j}_{t}}
这似乎是多余的。
其次,Latex 不知道在文本环境中使用该命令后应该插入空格。如果我在命令中强制插入空格,则无法在句号或逗号等标点符号之前使用该命令。
有什么建议吗?谢谢!
答案1
你可以用\ensuremath
奔跑来掩护,埃格尔很快就会赶来。
\documentclass{article}
\newcommand*{\varn}{\ensuremath{p^{i,j}_{t}}}
\begin{document}
\varn \qquad $\varn$
Here is how \varn{} is used in text again \varn.
\end{document}
对于第二部分,您可以在需要空格时在后面插入一个空原子。这是通常的行为。这也是一个{}
包,但有时可能会失败。\varn
\varn{}
xspace
\documentclass{article}
\usepackage{xspace}
\newcommand*{\varn}{\ensuremath{p^{i,j}_{t}}\xspace}
\begin{document}
\varn \qquad $\varn$
Here is how \varn is used in text again \varn.
\end{document}
$\varn$
正如 egreg 所指出的,覆盖并不需要太多工作\varn
。它还更有助于您识别数学代码。因此最好定义\newcommand*{\varn}{p^{i,j}_{t}}
并使用$\varn$
。
答案2
请不要试图“去掉‘额外的美元’”。首先,你很容易将数学误解为文本。其次,这会导致执行诸如 之类的操作\varn=0
,在文本模式下,它会变成$p^{i,j}_{t}$=0
,并且会得到完全错误的间距。因此,你应该定义
\newcommand{\varn}{p^{i,j}_{t}}
然后按如下方式使用它:
We have that $\varn=0$ if and only if the guy $\varn$ is really zero.