我想为我的工作创建一个符号列表,其中的符号通常带有索引。现在我不想为每个符号和索引创建一个新条目。是否可以使用调用 \ gls {\label, {#1}} 中的另一个参数将索引 (#1) 放到所需位置。如果我表达得太隐晦,下面这个最小的例子可能会有所帮助:
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{BetragVektor1}{name=\ensuremath{|\overline{u_1}|},description={Länge des Vektors}}
\newglossaryentry{BetragVektor2}{name=\ensuremath{|\overline{u_2}|},description={Länge des Vektors}}
\newglossaryentry{BetragVektor}{name=\ensuremath{|\overline{u_2}|},description={Länge des Vektors}}
\begin{document}
target:\\
The vector $|\overline{u_1}|$ is longer than the vector $|\overline{u_2}|$.
option1:\\
The vector \gls{BetragVektor1} is longer than the vector \gls{BetragVektor2}.
option2(gloosarie-documentation) :\\
\gls{BetragVektor}{1}
This option writes the 1 at the end - not behind u.
\end{document}
感谢您的所有建议,希望能有一个解决方案。
答案1
这是一个可能的解决方案,它使用类似命令的最后一个可选参数\gls
:
\documentclass{scrreprt}
\usepackage{glossaries}
\makeglossaries
\glssetnoexpandfield{text}% don't expand text field when defining an entry
\newcommand{\symbolidx}{i}% default index
\newglossaryentry{BetragVektor}{
name=\ensuremath{|\overline{u_\symbolidx}|},
text=|\overline{u_\symbolidx}|,
description={}}
% modify the entry's format
\defglsentryfmt{%
\let\symbolidx\glsinsert
\def\glsinsert{}%
\glsgenentryfmt
}
\begin{document}
$\gls{BetragVektor}$
$\gls{BetragVektor}[1]$
$\gls{BetragVektor}[2]$
\printglossaries
\end{document}
得出的结果为:
但是,您不能将此可选参数用于任何其他词汇表条目。
编辑:
抱歉,我忘了您还需要阻止密钥的扩展first
。以下是更新版本,我已使用以下方法关闭了扩展\glsnoexpandfields
:
\documentclass{scrreprt}
\usepackage{glossaries}
\makeglossaries
\glsnoexpandfields
\newcommand*{\glsarg}{i}
\newglossaryentry{BetragVektor}{
name=\ensuremath{|\overline{u_i}|},
text=|\overline{u_\glsarg}|,
description={}}
% modify the entry's format
\defglsentryfmt{%
\let\orgglsarg\glsarg
\ifdefempty\glsinsert
{}%
{%
\let\glsarg\glsinsert
\let\glsinsert\relax
}%
\glsgenentryfmt
\let\glsarg\orgglsarg
}
\begin{document}
$\gls{BetragVektor}[1]$
$\gls{BetragVektor}$
$\gls{BetragVektor}[1]$
$\gls{BetragVektor}[2]$
$\gls{BetragVektor}[]$
\printglossaries
\end{document}