
Ich möchte für meine Arbeit eine Liste von Symbolen erstellen, wobei die Symbole häufig mit einem Index versehen sind. Nun möchte ich nicht für jedes Symbol und jeden Index einen neuen Eintrag erstellen. Ist es möglich mit einem weiteren Parameter im Aufruf \gls{\label,{#1}} den Index (#1) an die gewünschte Stelle zu setzen. Falls ich mich zu kryptisch ausgedrückt habe, hilft vielleicht das Minimalbeispiel:
\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}
Danke für alle Ratschläge und ich hoffe, es gibt eine Lösung.
Antwort1
Hier ist eine mögliche Lösung, die das letzte optionale Argument von Befehlen wie diesem verwendet \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}
Das Ergebnis:
Sie können dieses optionale Argument jedoch nicht für Ihre anderen Glossareinträge verwenden.
Bearbeiten:
Entschuldigung, ich habe vergessen, dass Sie auch die Erweiterung des first
Schlüssels verhindern müssen. Hier ist eine aktualisierte Version, in der ich die Erweiterung mithilfe von deaktiviert habe \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}