
Quiero crear una lista de símbolos para mi trabajo, donde los símbolos a menudo cuentan con un índice. Ahora no quiero crear una nueva entrada para cada símbolo e índice. ¿Es posible con otro parámetro en la llamada \ gls {\label, {#1}} colocar el índice (#1) en la ubicación deseada? Si me he expresado demasiado críptico, puede ayudar el ejemplo mínimo:
\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}
Gracias por todos los consejos y espero que haya una solución.
Respuesta1
Aquí hay una posible solución que utiliza el argumento opcional final de comandos como \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}
Esto produce:
Sin embargo, no podrá utilizar este argumento opcional para ninguna de las otras entradas del glosario.
Editar:
Lo siento, olvidé que también debes evitar la expansión de la first
clave. Aquí hay una versión actualizada en la que desactivé la expansión usando \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}