Symbolverzeichnis mit Glossaries Thema ist als GELÖST markiert

Erstellen von Index, Glossar, Symbolverzeichnis, einer Nomenklatur etc. mit MakeIndex oder Xindy


Nick92

Symbolverzeichnis mit Glossaries

Beitrag von Nick92 »

Hey Leute,

ich habe folgendes Problem:

Ich bin noch LaTex-Anfänger und versuche ein Symbolverzeichnis mithilfe von glossaries zu erstellen. Dieses soll 3 Spalten haben: Symbol, Beschreibung, Einheit

Mit meinem Code habe ich 2 Probleme:

1. Wie kann ich die Platzierung/Größe der Spalten ändern?
Ich hätte die Tabelle gerne linksbündig und mehr Platz für die Beschreibung.

2. Obwohl ich für jedes Verzeichnis bis jetzt nur 1 Symbol erstellt habe, setzt mit das Programm die Einheit der ersten Zeile auf die Position des Symbols in der zweiten Zeile. Wie geht das wieder weg?

Ich verwende Texmaker und MikTex und habe mir den Perl Interpreter für glossaries geladen (alles auf Windows 10).

Hier mein Minimalbeispiel:
\documentclass[12pt,a4paper,oneside]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{textcomp}

\usepackage[nonumberlist,nomain,section=section]{glossaries}

\newglossary[lsg]{Latein}{lsi}{lso}{Lateinische Symbole}
\newglossary[gsg]{Griechisch}{gsi}{gso}{Griechische Symbole}
\newglossary[isg]{Indizes}{isi}{iso}{Indizes}
\makeglossaries
\renewcommand{\glspostdescription}{}

\newglossarystyle{Mystyle}{
  \renewenvironment{theglossary}
  {\begin{longtable}{lp{8cm}lp{4cm}}}%Wie funktioniert diese Zeile?
    {\end{longtable}}
  \renewcommand*{\glossaryheader}{Symbol & Beschreibung & Einheit \\[1ex]\endhead}
  \renewcommand*{\glossaryentryfield}[3]{%
    \glstarget{##1}{##2} %erste Spalte
    & \glossentrydesc{##1} %zweite Spalte
    & \glossentrysymbol{##1} %dritte Spalte
    \\[1ex]}
}

\begin{document}

\addchap{Häufig verwendete Symbole}

\printglossary[type=Latein,title={Lateinische Symbole}, style=Mystyle]
\printglossary[type=Griechisch,title={Griechische Symbole}, style=Mystyle]
\printglossary[type=Indizes,title={Indizes}, style=Mystyle]

\newglossaryentry{Standardbedingungen}{name=$0$, description={Standardbedingungen}, symbol={-},  type=Indizes}
\newglossaryentry{Kreiszahl}{name=$\pi$, description={Kreiszahl Pi}, symbol={-}, type=Griechisch}
\newglossaryentry{Geschw}{name=$h$, description={Geschwindigkeit}, symbol={$\frac{m}{s}$}, type=Latein}

\gls{Kreiszahl}, \gls{Standardbedingungen}, \gls{Geschw}



\end{document}
Vielen Dank schonmal!

Nick92

Beitrag von Nick92 »

Ich hab noch ein bisschen daran rumgebastelt und jetzt sieht es fast so aus, wie ich es gerne hätte.

Ich weiss zwar nicht wieso, aber ich muss für ein dreispaltiges Verzeichnis vier Spalten angeben, wobei aber nur in den ersten 3 etwas steht. Ansonsten schreibt mir das Programm immer das letzte Argument doppelt.
Einmal in die richtige Spalte (3. Spalte) und einmal auf der nächsten Zeile in die falsche Spalte (1. Spalte).

Beispielbild:

Bild
\renewcommand*{\glossaryentryfield}[4]{%
    \glstarget{##1}{##2} %erste Spalte
    & \glossentrydesc{##1} %zweite Spalte
    & \glossentrysymbol{##1} %dritte Spalte
    \\[1ex]}
Die Tabelle sieht nun auch einigermaßen annehmbar aus. Ich habe die Größe der Spalten manuell gesetzt. Allerdings sieht das für mich nicht wirklich linksbündig aus.

Wie bekomme ich das hin, dass das Verzeichnis linksbündig steht?
\documentclass[12pt,a4paper,oneside]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{textcomp}

\usepackage[nonumberlist,nomain,section=section]{glossaries}

\newglossary[lsg]{Latein}{lsi}{lso}{Lateinische Symbole}
\newglossary[gsg]{Griechisch}{gsi}{gso}{Griechische Symbole}
\newglossary[isg]{Indizes}{isi}{iso}{Indizes}
\makeglossaries
\renewcommand{\glspostdescription}{}

\newglossarystyle{Mystyle}{
  \renewenvironment{theglossary}
  {\begin{longtable}{p{2cm}p{10cm}p{4cm}}}
    {\end{longtable}}
  \renewcommand*{\glossaryheader}{}
  \renewcommand*{\glossaryentryfield}[4]{%
    \glstarget{##1}{##2} %erste Spalte
    & \glossentrydesc{##1} %zweite Spalte
    & \glossentrysymbol{##1} %dritte Spalte
    \\[1ex]}
}

\begin{document}

\addchap{Häufig verwendete Symbole}

\begin{flushleft}
\printglossary[type=Latein,title={Lateinische Symbole}, style=Mystyle]
Hallo ich stehe linksbündig aber das Verzeichnis nicht.
\printglossary[type=Griechisch,title={Griechische Symbole}, style=Mystyle]
\printglossary[type=Indizes,title={Indizes}, style=Mystyle]
\end{flushleft}

\newglossaryentry{Standardbedingungen}{name=$0$, description={Standardbedingungen}, symbol={-},  type=Latein}
\newglossaryentry{Kreiszahl}{name=$\pi$, description={Kreiszahl Pi}, symbol={-}, type=Griechisch}
\newglossaryentry{Geschw}{name=$h$, description={Geschwindigkeit}, symbol={$\frac{m}{s}$}, type=Latein}

\gls{Kreiszahl}, \gls{Standardbedingungen}, \gls{Geschw}



\end{document} 

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Ich weiß ja nicht, woher du \glossaryentryfield hast. Wenn ich mich an der long3colheader Definition orientiere muss es etwa so aussehen (subentry habe ich nicht angepasst und nicht getestet):
\documentclass[12pt,a4paper,oneside]{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{textcomp}

\usepackage[nonumberlist,nomain,section=section]{glossaries}

\newglossary[lsg]{Latein}{lsi}{lso}{Lateinische Symbole}
\newglossary[gsg]{Griechisch}{gsi}{gso}{Griechische Symbole}
\newglossary[isg]{Indizes}{isi}{iso}{Indizes}
\makeglossaries
\renewcommand{\glspostdescription}{}



\newglossarystyle{Mystyle}{%
  \renewenvironment{theglossary}%
    {\begin{longtable}[l]{@{}lp{10cm}l}}% [l]= linksbündige longtable, 
                                                              %@{}= kein Abstand vor erster Spalte
    {\end{longtable}}%
  \renewcommand*{\glossaryheader}{%
    \bfseries Symbol&\bfseries\descriptionname&
    \bfseries Einheit\tabularnewline\endhead}%
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand{\glossentry}[2]{%
    \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
    \glossentrydesc{##1} & \glossentrysymbol{##1}\tabularnewline
  }%
  \renewcommand{\subglossentry}[3]{% evtl noch anpassen
     &
     \glssubentryitem{##2}%
     \glstarget{##2}{\strut}\glossentrydesc{##2} &
     ##3\tabularnewline
  }%
  \renewcommand*{\glsgroupskip}{%
    \ifglsnogroupskip\else & &\tabularnewline\fi}%
}

\begin{document}
\newcounter{myCounter}
\setcounter{myCounter}{3}
\begin{tabular}{cl*{\value{myCounter}}{c}c}
& \multicolumn{\value{myCounter}\relax}{c}
    {agglutinate} & \\\cline{2-\numexpr\value{myCounter}+1\relax} % Here is the naive part
init & content1 & content2 & content3 & end \\
\end{tabular}

\addchap{Häufig verwendete Symbole}

\printglossary[type=Latein,title={Lateinische Symbole}, style=Mystyle]
\printglossary[type=Griechisch,title={Griechische Symbole}, style=Mystyle]
\printglossary[type=Indizes,title={Indizes}, style=Mystyle]

\newglossaryentry{Standardbedingungen}{name=$0$, description={Standardbedingungen}, symbol={-},  type=Indizes}
\newglossaryentry{Kreiszahl}{name=$\pi$, description={Kreiszahl Pi}, symbol={-}, type=Griechisch}
\newglossaryentry{Geschw}{name=$h$, description={Geschwindigkeit}, symbol={$\frac{m}{s}$}, type=Latein}

\gls{Kreiszahl}, \gls{Standardbedingungen}, \gls{Geschw}

\end{document}

Nick92

Beitrag von Nick92 »

Hey vielen Dank für die Rückmeldung.
Mit deinem Code bekomme ich nun genau das, was ich haben wollte.

\glossaryentryfield habe ich in einem Forenbeitrag gefunden; ich dachte das wäre der Befehl, für den Spalteneintrag. Aber dann werde ich zukünftig \glossentry verwenden.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Nick92 hat geschrieben: \glossaryentryfield habe ich in einem Forenbeitrag gefunden; ich dachte das wäre der Befehl, für den Spalteneintrag. Aber dann werde ich zukünftig \glossentry verwenden.
War wahrscheinlich alt. In glossaries-code.pdf steht dazu "This command formerly governed how each entry row should be formatted in the glossary.
Now deprecated." Grundsätzlich solltest du dich nicht auf Foren verlassen, überprüfe solche Befehle in der Dokumentation.

Antworten