我在不同的文件中描述了包含大量变量的复杂协议。问题是我以后可能会更改变量名。我的想法是将变量名定义为 Latex 命令,例如\lengthtree
(而不是写成例如)。以后我只需重新定义 latex 命令$\ell_t$
即可轻松更改\lengthtree
为。$L_t$
现在我想创建一个符号列表,正在寻找一种自动创建它的可能性。我尝试了词汇表包,但如果我在数学环境中使用这些符号,就会出现 Latex 错误。
什么是“最先进的”解决方案来在一个全局点定义我的变量(也可以在数学模式下使用)?应该自动创建一个符号列表。
答案1
正如芭芭拉提到的,你可以\ensuremath
这样使用:
\documentclass{article}
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{lengthtree}%
{%
name={\ensuremath{L_t}},
description={description here},
sort={L}
}
\begin{document}
In line: \gls{lengthtree}. In math mode:
\[
\gls{lengthtree}
\]
\printglossary[title={List of Symbols}]
\end{document}
反对的论点\ensuremath
归结为两个主要问题(见何时不应使用 \ensuremath 作为数学宏?):
$
首先,你可能会在 的参数内得到\ensuremath
。这在本例中不会发生,因为 的参数\ensuremath
被明确设置为L_t
。
其次,存在语义问题。按照这种说法,您应该在不带\ensuremath
and do 的情况下定义条目$\gls{lengthtest}$
,这在您键入的文档文本中是可以的,但这会导致词汇表中出现问题,即当涉及到条目名称时,样式不会自动转换为数学模式。就我个人而言,我认为\ensuremath
在这种情况下是可以的,但对于无法忍受它的纯粹主义者,这里有一个替代解决方案:
\documentclass{article}
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{lengthtree}%
{%
name={$L_t$},
text={L_t},
description={description here},
sort={L}
}
\begin{document}
In line: $\gls{lengthtree}$. In math mode:
\[
\gls{lengthtree}
\]
\printglossary[title={List of Symbols}]
\end{document}
以上两个示例均产生以下结果:
答案2
我认为你的意思是这样的,定义命令并同时列出列表。
\documentclass{article}
\newcommand\mysymbol[3]{%
\protected\gdef#1{#2}%
\item[$#2$]#3}
\begin{document}
\section*{List of symbols}
\begin{description}
\mysymbol{\zzz}{z_z^z}{Something about $Zzzzz$.}
\mysymbol{\Txxx}{Tx_{xx}}{The xx component of T.}
\mysymbol{\vvvv}{V_2}{$V$, the second.}
\mysymbol{\vvvvv}{V_3}{$V$, the third.}
\end{description}
\section{zzz}
\[ \zzz=\Txxx\]
where
\[\vvvv=3\]
and
\[\vvvvv=X\]
\end{document}