是否有可能为由 glossaries-extra 生成的符号创建通用的新命令?

是否有可能为由 glossaries-extra 生成的符号创建通用的新命令?

我使用 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 宏的更深入讨论,我得到了答案:

TeX 宏的工作原理

对我的问题的回答当然是否定的。但我可以避免使用 {},这实际上是我想要的,因为它们在我的键盘上更难写(alt+0 和 alt+7)。我可以做以下定义:

\def\sym*#1*{\gls{#1}}

并写下\sym*label*。是的,也许区别不大,但至少我了解了 TeX 如何更好地工作。

相关内容