
Quero criar uma lista de símbolos para o meu trabalho, onde os símbolos geralmente são fornecidos com um índice. Agora não quero criar uma nova entrada para cada símbolo e índice. É possível com outro parâmetro na chamada \gls {\label, {#1}} o índice (#1) colocado no local desejado. Se me expressei muito enigmático, o exemplo mínimo pode ajudar:
\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}
Obrigado por todos os conselhos e espero que haja uma solução.
Responder1
Aqui está uma solução possível que usa o 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}
Isso produz:
No entanto, você não poderá usar esse argumento opcional para nenhuma das outras entradas do glossário.
Editar:
Desculpe, esqueci que você também precisa impedir a expansão da first
chave. Aqui está uma versão atualizada onde desativei a expansão 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}