PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Symbolverzeichnis {glossaries} multicolumn und Zeilenabstandsproblem



Sebi
19-11-2010, 10:12
Hallo,

ich habe beim Erstellen meines Symbolverzeichnisses zwei Probleme.

1. Durch die Unterteilung in griechische und lateinische Buchstaben werden mir die zweiten Spalten für die description zu weit nach rechts geschoben. Aus den Zeilen in denen die fett gedruckten Einträge stehen würde ich deshalb gerne multicolumns machen. Nur wie?

2. Ich möchte den zeilenabstand zwischen zwei Einträgen konstant halten, auch wenn in einer description ein Umbruch steht.

Anbei ein Minimalbeispiel mit den beiden Problemen und die PDF.

Vielen Dank fürs lesen!





\documentclass[pdftex,11pt,a4paper]{scrreprt} %A4 Format, Report
\usepackage[ngerman]{babel,translator} %internationale Sprachunterstützung, Übersetzung ins Deutsche glossaries Paket
\usepackage[latin1]{inputenc} %Zeichenkodierung für Windows
\usepackage[T1]{fontenc} %Für korrekte Trennung in Wörtern mit Umlauten, enthält Schriftarten
\usepackage[sc]{mathpazo} %Schriftart
\usepackage{booktabs} %horizontale Linien in Tabellen
\usepackage{longtable}
\usepackage[textstyle]{SIunits} %\micro für µ
\usepackage{threeparttable} %für Tabellen mit caption, table und tablenote [\begin{threeparttable}\begin{tabular}\end{tabular} \begin{tablenotes}[option(para, online, flushleft)]\end{tablenotes}\end{threeparttable}
\usepackage[%Paket laden für Symbolverzeichnis und Abkürzungsverzeichnis
nonumberlist, %keine Seitenzahlen anzeigen
numberline, %richtet Eintrag im Inhaltsverzeichnis an chapter aus
acronym, %ein Abkürzungsverzeichnis erstellen
toc] %Einträge im Inhaltsverzeichnis
{glossaries}

%Ein Symbolverzeichnis erstellen
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}

%Style Symbolverzeichnis definieren
\newglossarystyle{symbver}{ % put the glossary in a longtable environment:
\renewenvironment{theglossary}
{\begin{longtable}{lp{\glsdescwidth}cccp{\glspagel istwidth}}}
{\end{longtable}}

\renewcommand*{\glossaryheader}{}

\renewcommand*{\glossaryentryfield}[4]{
\glstarget{##1}\\[0.5cm]{##2}&{##3}&{##4}}% \\[0.5cm] Zeilenabstand zwischen Einträgen

\renewcommand*{\glossarysubentryfield}[6]{
\glossaryentryfield{##2}{##3}{##4}{[##5]}}

\renewcommand*{\glsgroupskip}{}}

%Den Punkt am Ende jeder Beschreibung deaktivieren
\renewcommand*{\glspostdescription}{}

\newglossaryentry{romanletter}{name={\textbf{Latei nische Buchstaben}},description={}} %trennt Symbolverzeichnis in lateinische und griechische Buchstaben
\newglossaryentry{greekletter}{name={\textbf{Griec hische Buchstaben}},description={}} %trennt Symbolverzeichnis in lateinische und griechische Buchstaben

%Glossar-Befehle anschalten
\makeglossaries

\begin{document} %Beginn des Dokuments

\newglossaryentry{symb:f}{
name=\textit{f},
symbol=mm,
description={Brennweite der Fokussierlinse},
parent=romanletter,
sort=symbolf, type=symbolslist
}
\newglossaryentry{symb:rhoE}{
name=$\rho\textsubscript{E}$,
symbol=$\frac{\text{J}}{\text{\centi\meter\squared }}$, % oder \joule\per\centi\meter\squared
description={Energiedichte des Laserstrahls auf dem Target},
parent=greekletter,
sort=symbolrhoE, type=symbolslist
}
\newglossaryentry{symb:theta}{
name=$\theta$,
symbol=\degree,
description={\sc Bragg}-Winkel oder Glanzwinkel aus Röntgendiffraktometrie,
parent=greekletter,
sort=symboltheta, type=symbolslist
}
\newglossaryentry{symb:zeta}{
name=$\zeta$,
symbol=\degree,
description={Ein Winkel},
parent=greekletter,
sort=symbolzeta, type=symbolslist
}
Das sind \gls{symb:theta}, \gls{symb:f}, \gls{symb:zeta} und \gls{symb:rhoE}!

%Symbole ausgeben
\printglossary[type=symbolslist,style=symbver,title=Symbolverzeic hnis] %gibt Symbolverzeichnis aus, title= ohne Überschrift

\end{document} %Ende des Dokuments

mechanicus
19-11-2010, 11:07
Aus den Zeilen in denen die fett gedruckten Einträge stehen würde ich deshalb gerne multicolumns machen. Nur wie?




\newglossaryentry{romanletter}{name={\textbf{\rlap {Lateinische Buchstaben}}},description={}} %trennt Symbolverzeichnis in lateinische und griechische Buchstaben
\newglossaryentry{greekletter}{name={\textbf{\rlap {Griechische Buchstaben}}},description={}} %trennt Symbolverzeichnis in lateinische und griechische Buchstaben



Gruß
Marco

Sebi
19-11-2010, 20:41
OK, funktioniert. Vielen Dank für die schnelle Hilfe.

q_bric
24-01-2011, 13:57
Hallo,

der Beitrag hat mir sehr weitergeholfen bei der Erstellung eines Symbolverzeichnisses. Zu dem hier erwähnten Quellcode habe ich noch eine Frage. Ich möchte eine andere Anordnung der Spalten haben und zwar Symbol, Einheit und Beschreibung.

dafür habe ich die Reihenfolge der Spalten geändert (siehe rot)


\documentclass[pdftex,11pt,a4paper]{scrreprt} %A4 Format, Report
\usepackage[ngerman]{babel,translator} %internationale Sprachunterstützung, Übersetzung ins Deutsche glossaries Paket
\usepackage[latin1]{inputenc} %Zeichenkodierung für Windows
\usepackage[T1]{fontenc} %Für korrekte Trennung in Wörtern mit Umlauten, enthält Schriftarten
\usepackage[sc]{mathpazo} %Schriftart
\usepackage{booktabs} %horizontale Linien in Tabellen
\usepackage{longtable}
\usepackage[textstyle]{SIunits} %\micro für µ
\usepackage{threeparttable} %für Tabellen mit caption, table und tablenote [\begin{threeparttable}\begin{tabular}\end{tabular} \begin{tablenotes}[option(para, online, flushleft)]\end{tablenotes}\end{threeparttable}
\usepackage[%Paket laden für Symbolverzeichnis und Abkürzungsverzeichnis
nonumberlist, %keine Seitenzahlen anzeigen
numberline, %richtet Eintrag im Inhaltsverzeichnis an chapter aus
acronym, %ein Abkürzungsverzeichnis erstellen
toc] %Einträge im Inhaltsverzeichnis
{glossaries}

%Ein Symbolverzeichnis erstellen
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}

%Style Symbolverzeichnis definieren
\newglossarystyle{symbver}{ % put the glossary in a longtable environment:
\renewenvironment{theglossary}
{\begin{longtable}{lp{\glsdescwidth}cccp{\glspagel istwidth}}}
{\end{longtable}}

\renewcommand*{\glossaryheader}{}

\renewcommand*{\glossaryentryfield}[4]{
\glstarget{##1}\\[0.5cm]{##2}&{##4}&{##3}}% \\[0.5cm] Zeilenabstand zwischen Einträgen
%ursprünglicher Befehl :
% \glstarget{##1}\\[0.5cm]{##2}&{##3}&{##4}}% \\[0.5cm] Zeilenabstand zwischen Einträgen


\renewcommand*{\glossarysubentryfield}[6]{
\glossaryentryfield{##2}{##3}{##4}{[##5]}}

\renewcommand*{\glsgroupskip}{}}

%Den Punkt am Ende jeder Beschreibung deaktivieren
\renewcommand*{\glspostdescription}{}


\newglossaryentry{romanletter}{name={\textbf{\rlap {Lateinische Buchstaben}}},description={}} %trennt Symbolverzeichnis in lateinische und griechische Buchstaben
\newglossaryentry{greekletter}{name={\textbf{\rlap {Griechische Buchstaben}}},description={}} %trennt Symbolverzeichnis in lateinische und griechische Buchstaben


%Glossar-Befehle anschalten
\makeglossaries

\begin{document} %Beginn des Dokuments

\newglossaryentry{symb:f}{
name=\textit{f},
symbol=mm,
description={Brennweite der Fokussierlinse},
parent=romanletter,
sort=symbolf, type=symbolslist
}
\newglossaryentry{symb:rhoE}{
name=$\rho\textsubscript{E}$,
symbol=$\frac{\text{J}}{\text{\centi\meter\squared }}$, % oder \joule\per\centi\meter\squared
description={Energiedichte des Laserstrahls auf dem Target},
parent=greekletter,
sort=symbolrhoE, type=symbolslist
}
\newglossaryentry{symb:theta}{
name=$\theta$,
symbol=\degree,
description={\sc Bragg}-Winkel oder Glanzwinkel aus Röntgendiffraktometrie,
parent=greekletter,
sort=symboltheta, type=symbolslist
}
\newglossaryentry{symb:zeta}{
name=$\zeta$,
symbol=\degree,
description={Ein Winkel},
parent=greekletter,
sort=symbolzeta, type=symbolslist
}
Das sind \gls{symb:theta}, \gls{symb:f}, \gls{symb:zeta} und \gls{symb:rhoE}!

%Symbole ausgeben
\printglossary[type=symbolslist,style=symbver,title=Symbolverzeic hnis] %gibt Symbolverzeichnis aus, title= ohne Überschrift

\end{document} %Ende des Dokuments


jetzt stimmt zwar die Reihenfolge, aber nun wird das Verzeichnis im Dok nicht mehr am linken Seitenrandausgerichtet.

Wie kann ich das jetzt realisieren? Ich hab da so meine Probleme mit dem Verständnis der Möglichkeiten mit glossaries.... würde mich sehr freuen wenn ihr mir helfen könnt.

PS: die beiden pdfs zeigen mein Problem.

viele Grüße,
Sascha

Mechaniko
16-12-2014, 18:24
Das ist genau das was ich gesucht habe, leider bekomme ich bei dem Minimalbeispiel "TeX capacity exceeded, sorry [input stack size=5000]" woran kann das liegen?

rais
17-12-2014, 18:24
Das ist genau das was ich gesucht habe, leider bekomme ich bei dem Minimalbeispiel "TeX capacity exceeded, sorry [input stack size=5000]" woran kann das liegen?
wenn es nicht tut, woher willst Du dann wissen, ob es `genau das' ist, was Du suchst?
Wie dem auch sei, ich habe da so meine Zweifel, ob dieser Code jemals fehlerfrei lief...
So wird z. B. bei der Umdefinition von \glossaryentryfield diesem nur noch vier Parameter zugestanden (in der Originaldefinition sind's fünf).
Und es ist schon erstaunlich, wie viele Spalten deklariert -- und wie wenige davon benutzt werden.
Davon abgesehen sollte bei der aktuellen Version \glossentry, nicht \glossaryentryfield verwendet werden.


\documentclass{scrreprt}
\usepackage[ngerman]{babel,translator} %Sprache
\usepackage[utf8]{inputenc} % Zeichenkodierung
\usepackage[T1]{fontenc} % Cork-Encoding
\usepackage{booktabs} %horizontale Linien in Tabellen
%\usepackage{longtable} wird von glossaries geladen
\usepackage{siunitx}% Einheiten nach SI
\usepackage{glossaries}

\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}

%Style Symbolverzeichnis definieren
\newglossarystyle{symbver}{%
\renewenvironment{theglossary}{%
\begin{longtable}{@{}lcp{\glsdescwidth}p{\glspagel istwidth}@{}}
}{\end{longtable}}%
%
\renewcommand*\glossaryheader{}%
\renewcommand*\glsgroupheading[1]{}%
\renewcommand*\glsgroupskip{}%
\renewcommand*\glossentry[2]{%
\glstarget{##1}{\glossentryname{##1}}% Eintragsname
& \glossentrysymbol{##1}% Symbol, hier Einheit
& \glossentrydesc{##1}% Beschreibung
& ##2\tabularnewline
}%\glossentry
\renewcommand*\subglossentry[3]{%
\glossentry{##2}{##3}%
}%\subglossentry
}% symbver

\makeglossaries

\begin{document} %Beginn des Dokuments

\newglossaryentry{symb:f}{
name=\ensuremath{f},
symbol=\si{\milli\metre},
description={Brennweite der Fokussierlinse},
sort=symbolf,
type=symbolslist
}
\newglossaryentry{symb:rhoE}{
name=\ensuremath{\rho_{\text{E}}},
symbol=\si{\joule\per\centi\meter\squared},
description={Energiedichte des Laserstrahls auf dem Target},
sort=symbolrhoE,
type=symbolslist
}
\newglossaryentry{symb:theta}{
name=\ensuremath{\theta},
symbol=\si{\degree},
description={\scshape Bragg}-Winkel oder Glanzwinkel aus Röntgendiffraktometrie,
sort=symboltheta,
type=symbolslist
}
\newglossaryentry{symb:zeta}{
name=\ensuremath{\zeta},
symbol=\si{\degree},
description={Ein Winkel},
sort=symbolzeta,
type=symbolslist
}
Das sind \gls{symb:theta}, \gls{symb:f}, \gls{symb:zeta} und \gls{symb:rhoE}!

%Symbole ausgeben
\printglossary[type=symbolslist,style=symbver]

\end{document} %Ende des Dokuments

wär mal ein Ansatz.
Bist Du sicher, daß Du einen neuen Stil definieren musst? Es gibt da so einige vordefinierte, darunter auch ein paar, die auf longtable basieren...

MfG