Hallo Community,

ist es möglich, beim ersten Erwähnen eines Begriffs aus einem bestimmten Glossar, diesen Begriff speziell hervorzuheben? Bei Begriffen aus einem anderen Glossar soll dies aber nicht der Fall sein. Zum Beispiel erwähne ich eine Variable (mit type=symbol in \newglossaryentry definiert), die ich dann im Fließtext mit gls{label} erwähne. Anschließend erwähne ich so auch direkt die Bedeutung dieser Variablen (ebenfalls im glossary definiert - allerdings ohne Angabe von type). Also sind das ja zwei verschiedene Glossaries. Jetzt werden allerdings bei der ersten Erwähnung der beiden in derselben Zeile zwei überlappende \marginnotes erzeugt, die nicht schön aussehen.

Ich arbeite mit dem glossaries Paket.

Beispiel:

\documentclass[]{scrartcl}
\usepackage{marginnote}
\usepackage[symbols, nopostdot]{glossaries}

\makenoidxglossaries

% nur beim ersten Erwähnen mit marginnote
\renewcommand*{\glsentryfmt}{
    \glsgenentryfmt
    \ifglsused{\glslabel}{}{\marginnote{\glsentryname{\glslabel}}}
}

\newglossaryentry{x}{type=symbols, name=\ensuremath{x}, description={
    Formelzeichen für Irgendeine Variable}}

\newglossaryentry{iv}{name={Irgendeine Variable}, description={
    Irgendeine Erklärung zu Irgendeiner Variablen}}

\begin{document}
    \section{Ein Beispiel}
    Das Symbol \gls{x} steht für \gls{iv}. \\[3cm]
    Nochmal zur Wiederholung: Das Symbol \gls{x} steht für \gls{iv}.

    \printnoidxglossary[type=symbols, sort=def]
    \printnoidxglossary[style=altlist]
\end{document}

Es müsste doch irgendwie möglich sein, zu sagen, falls es sich um ein Symbol-Glossary handelt, dass dann die erste Erwähnung eben nicht hervorgehoben wird. Ich hatte mal was anderes versucht:

\renewcommand*{\glsentryfmt}{
    \glsgenentryfmt
    \ifglsused{\glslabel}{}{\ifglshassymbol{
        \glslabel}{}{\marginnote{\glsentryname{\glslabel}}}
    }
}

Aber dann werden auch die Einträge aus dem "normalen" Glossarie nicht mehr hervorgehoben.

Hat da jemand eine Idee? Vielen Dank im Vorraus!

gefragt 14 Jan '22, 15:25

AndreGismo's gravatar image

AndreGismo
451122
Akzeptiert-Rate: 75%

bearbeitet 14 Jan '22, 15:27


Das ist sogar sehr einfach möglich. In Abschnitt 5.1.3 der glossaries-Anleitung ist zu diesem Zweck \defglsentryfmt erklärt. Die Anweisung hat als erstes, optionales Argument den Typ des Eintrags. Definiert man nun für symbols zunächst eine einfache Ausgabe, so wird diese durch die Umdefinierung von \glsentryfmt nicht erneut verändert:

\documentclass[]{scrartcl}
\usepackage{marginnote}
\usepackage[symbols, nopostdot]{glossaries}

\makenoidxglossaries

\defglsentryfmt[symbols]{%
    \glsgenentryfmt
}
% nur beim ersten Erwähnen mit marginnote
\renewcommand*{\glsentryfmt}{%
    \glsgenentryfmt
    \ifglsused{\glslabel}{}{\marginnote{\glsentryname{\glslabel}}}
}

\newglossaryentry{x}{type=symbols, name=\ensuremath{x}, description={%
    Formelzeichen für Irgendeine Variable}}

\newglossaryentry{iv}{name={Irgendeine Variable}, description={%
    Irgendeine Erklärung zu Irgendeiner Variablen}}

\begin{document}
    \section{Ein Beispiel}
    Das Symbol \gls{x} steht für \gls{iv}.\par\vspace{3cm}
    Nochmal zur Wiederholung: Das Symbol \gls{x} steht für \gls{iv}.

    \printnoidxglossary[type=symbols, sort=def]
    \printnoidxglossary[style=altlist]
\end{document}

Es wäre allerdings zu überlegen, ob man nicht von vornherein die Anweisung \marginpar oder dessen KOMA-Script-Verbesserung \marginline verwendet. Damit werden die Randnotizen nicht mehr zwingend in die Zeile gedruckt, in der die Anweisung steht, sondern bei Bedarf vertikal entzerrt:

\documentclass[]{scrartcl}
\usepackage[symbols, nopostdot]{glossaries}

\makenoidxglossaries

% nur beim ersten Erwähnen mit marginnote
\renewcommand*{\glsentryfmt}{%
    \glsgenentryfmt
    \ifglsused{\glslabel}{}{\marginline{\glsentryname{\glslabel}}}
}

\newglossaryentry{x}{type=symbols, name=\ensuremath{x}, description={%
    Formelzeichen für Irgendeine Variable}}

\newglossaryentry{iv}{name={Irgendeine Variable}, description={%
    Irgendeine Erklärung zu Irgendeiner Variablen}}

\begin{document}
    \section{Ein Beispiel}
    Das Symbol \gls{x} steht für \gls{iv}.\par\vspace{3cm}

    Nochmal zur Wiederholung: Das Symbol \gls{x} steht für \gls{iv}.

    \printnoidxglossary[type=symbols, sort=def]
    \printnoidxglossary[style=altlist]
\end{document}

Falls es ein Problem ist, dass das erste Wort in einer Box normalerweise nicht getrennt wird – auch dann nicht, wenn es zu breit für die Box ist –, so kann man diesen Mechanismus von TeX mit einem \hskip0pt austricksen. Dabei wird praktisch der 0-Abstand zum erste Wort:

\documentclass[]{scrartcl}
\usepackage[symbols, nopostdot]{glossaries}

\makenoidxglossaries

% nur beim ersten Erwähnen mit marginnote
\renewcommand*{\glsentryfmt}{%
    \glsgenentryfmt
    \ifglsused{\glslabel}{}{\marginline{\hskip0pt\glsentryname{\glslabel}}}
}

\newglossaryentry{x}{type=symbols, name=\ensuremath{x}, description={%
    Formelzeichen für Irgendeine Variable}}

\newglossaryentry{iv}{name={Irgendsoeineeine Variable}, description={%
    Irgendeine Erklärung zu Irgendeiner Variablen}}

\begin{document}
    \section{Ein Beispiel}
    Das Symbol \gls{x} steht für \gls{iv}.\par\vspace{3cm}

    Nochmal zur Wiederholung: Das Symbol \gls{x} steht für \gls{iv}.

    \printnoidxglossary[type=symbols, sort=def]
    \printnoidxglossary[style=altlist]
\end{document}

Zu den eingefügten %-Zeichen und warum diese wichtig sein können: → Was sollen die Kommentar-Zeichen (%) am Ende der Zeilen? oder → Wie unerwünschte Leerzeichen in der Ausgabe vermieden werden

Permanenter link

beantwortet 14 Jan '22, 17:12

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 14 Jan '22, 17:34

ah perfekt, danke!:) Ich hatte das zuvor tatsächlich mit \marginpar bzw. \marginline gemacht. Aber da war dann das Problem, dass das Wort im Rand nicht umgebrochen worden ist - in meinem Konkreten Fall stand da "Entscheidungsvariable", das war zu lang und ging aus dem Rand hinaus. Deswegen bin ich dann zu \marginnote übergegangen

(14 Jan '22, 17:26) AndreGismo

und danke für den weiterführenden Link! Jetzt weiß ich endlich, wofür diese %-Zeichen am Ende einer Zeile immer genutzt werden :)

(14 Jan '22, 17:28) AndreGismo
1

@AndreGismo Bezüglich der Verweigerung des Trennens des ersten Worts sei darauf hingewiesen, dass das eigentlich eine neue Frage wäre. Ich habe die Antwort für diesen speziellen Fall jetzt trotzdem einmal in meine Antwort eingebaut.

(14 Jan '22, 17:35) gast3

ah ok, das hab ich gar nicht mehr bemerkt, den Trick mit der hbox, das ist natürlich auch gut zu wissen, vielen Dank!

(12 Feb '22, 07:38) AndreGismo
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×45
×26
×2

gestellte Frage: 14 Jan '22, 15:25

Frage wurde gesehen: 1,917 Mal

zuletzt geändert: 12 Feb '22, 07:38