我使用 glossaries-extra 包在我的文档中定义符号,例如:
\glsxtrnewsymbol[description={Lagrangian}]{lag}{\ensuremath{\mathit{L}}}
然而,我将在我的文档中经常提到这一点 - 主要是在方程式中。通常,如果我不需要符号列表,我会定义
\newcommand{\lag}{\mathit{L}}
并在等式内各处简单地写入 \lag。现在我要么每次都需要使用 \gls{lag},要么对于每个词汇表符号条目,我应该使用上面的 \newcommand。我的问题是,有没有办法告诉 latex 在我输入 \label 时打印 \gls{label}?
....根据@schtandard 的评论进行编辑.....
那么 MWE 是这样的
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[symbols,nonumberlist]{glossaries-extra}
\makeglossaries
\glsxtrnewsymbol[description={Field on Minima spce}]{minfield}{\ensuremath{\varphi}}
\glsxtrnewsymbol[description={General Field}]{field}{\ensuremath{\phi}}
\newcommand{\field}{\gls{field}}
\newcommand{\minfield}{\gls{minfield}}
\begin{document}
I have a configuration space with fields $\field$ that has a minima. Fields on the minima space are called $\minfield$.
\begin{equation}
\delta V (\field=\minfield)=0
\end{equation}
\clearpage
\printglossaries
\end{document}
我想要的是根本不需要定义s ,但仍然能够使用和\newcommand
之间完全相同的代码获得结果。我可能想要的是,\begin{document}
end{document}
\newsymbol{#1,#2,#3}
{
\glsxtrnewsymbol[description={#1}]{#2}{#3},
\newcommand{\#2}{#3}
}
我不知道这样的事情是否已经存在或者可能,我对这种级别的乳胶还很陌生。
...编辑 2... 我很高兴地使用了 @egreg 建议的解决方案,我认为它对我有很大帮助。我曾尝试对首字母缩略词使用同样的东西,但是遇到了一个小问题。让我解释一下。考虑以下代码:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[acronyms,nomain,shortcuts]{glossaries-extra}
\newcommand{\acryn}[3]{%
\newacronym{#1}{#2}{#3}%
\expandafter\newcommand\csname #1\endcsname{\acs{#1}}}%
\newcommand{\acryntwo}[3]{%
\newacronym{#1}{#2}{#3}%
\expandafter\newcommand\csname #1\endcsname{\acs{#1}~}}%
\makeglossaries
\acryn{gr}{GR}{General Relativity}
\acryntwo{grtwo}{GR}{General Relativity}
\begin{document}
If I use the glossary package command I can say \acs{gr} and it prints nicely. But if I use the command I define when I say \gr unfortunately no gap appears.\\
I could add tilde to the command and this problem would be solved \grtwo as one can see, but now the gap appears where I do not want it to appear: (\grtwo). Note that this does not happen with the built-in command: (\acs{gr}).
\printglossary[type=\acronymtype]
\end{document}
结果是:
答案1
你可以很容易地做到这一点:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[symbols,nonumberlist]{glossaries-extra}
\makeglossaries
\newcommand{\makenewsymbol}[3][]{%
\glsxtrnewsymbol[#1]{#2}{#3}%
\expandafter\newcommand\csname #2\endcsname{\gls{#2}}%
}
\makenewsymbol[description={Field on Minima space}]{minfield}{\ensuremath{\varphi}}
\makenewsymbol[description={General Field}]{field}{\ensuremath{\phi}}
\begin{document}
I have a configuration space with fields $\field$ that has a minima.
Fields on the minima space are called $\minfield$.
\begin{equation}
\delta V (\field=\minfield)=0
\end{equation}
\printglossaries
\end{document}
从语法角度来看,“a minima”看起来很奇怪。
答案2
好的,通过阅读 overleaf 网站上对 Latex 宏的更深入讨论,我得到了答案:
对我的问题的回答当然是否定的。但我可以避免使用 {},这实际上是我想要的,因为它们在我的键盘上更难写(alt+0 和 alt+7)。我可以做以下定义:
\def\sym*#1*{\gls{#1}}
并写下\sym*label*
。是的,也许区别不大,但至少我了解了 TeX 如何更好地工作。