我的文档中有一个特定的通用函数,其签名是$\mathscr{T}_{i}(\cdot)$
。此函数与文本中的不同参数一起使用,例如,,$\mathscr{T}_{i}(\Lambda_j)$
等$\mathscr{T}_{i}(\Lambda_j)$
。使用glassories
包和\gls
命令,符号列表中的每个符号都与文本中的符号完全相同。但是,我需要的是将带参数的函数替换为符号列表中函数的通用签名。这是一个MWE
:
main.tex
:
\documentclass{article}
\usepackage[nogroupskip]{glossaries}
\makenoidxglossaries
\loadglsentries{gloss-symb}
\newglossarystyle{mylong}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}%
{\begin{longtable}[l]{@{}p{\dimexpr 2cm-\tabcolsep}p{0.8\hsize}}}
{\end{longtable}}%
}
\begin{document}
\printnoidxglossary[sort=def,style=mylong,title={List of Symbols}]
\printnoidxglossary[type=symbols,sort=use]
\input{myChap}
\end{document}
myChap.tex
:
Here is the function \gls{myFunction}
Here is the function $\mathsf{T}_{i}(\Lambda_j)$
gloss-symb
:
\newglossaryentry{myFunction}{name={\ensuremath{\mathsf{T}_{i}(\Omega_j)}},description={The intended function}}
输出结果为:
我怎么会这样呢?:
答案1
这似乎有效:
\documentclass{article}
\usepackage[nogroupskip]{glossaries}
\makenoidxglossaries
%%% this can go in the gloss-symb file
\protected\def\myFunctionArg{{\cdot}}
\newglossaryentry{myFunction}{
name={\ensuremath{\mathsf{T}_{i}(\myFunctionArg})},
description={The intended function},
}
%%% (gloss-symb end)
\newglossarystyle{mylong}{%
\setglossarystyle{long}%
\renewenvironment{theglossary}%
{\begin{longtable}[l]{@{}p{\dimexpr 2cm-\tabcolsep}p{0.8\hsize}}}
{\end{longtable}}%
}
\makeatletter
\newcommand{\vargls}[2]{%
\begingroup
\@namedef{#1Arg}{#2}%
\gls{#1}%
\endgroup
}
\makeatother
\begin{document}
\printnoidxglossary[sort=def,style=mylong,title={List of Symbols}]
\clearpage
% page 2
Here is the function \vargls{myFunction}{\Omega_j}
\clearpage
% page 3
Here is the function $\vargls{myFunction}{\Lambda_j}$
\end{document}
变量部分存储在\myFunctionArg
(以标签为模型并添加Arg
)。\vargls
我们可以将辅助宏设置为任何我们想要的。在组中执行此操作可确保初始定义(需要\protected
)用于词汇表。