PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : fehlende Leerzeilen (Zeilenumbrüche) im Glossar



ips
01-09-2008, 14:09
Hallo miteinander,

folgende Problematik: Ich habe mit dem Paket "glossaries" einen Glossar erstellt und lasse mir diesen mit "\printglossaries" am Ende meines Dokumentes ausgeben. Hier habe ich den unschönen Effekt, dass ich teils eine Leerzeile zwischen den einzelnen Einträgen habe (wie gewünscht), teils jedoch auch Einträge ohne Leerzeile aufeinander folgen. Das Ganze sieht dann so aus:


CLI Command Line Interface - Terminal zur Konguration der TP IPS.
CSW The Custom Shield Writer is the application you can use to create custom attack filters for the UnityOne Intrusion Prevention System devices in your network.

IDS Intrusion Detection System - Beschreibung Einbruchserkennungssystem.
IPS Intrusion Prevention System - Software oder Hardware zur Erkennung und Verhinderung von Einbruchen.

MLT see SMLT.

SMLT Split Multi Link Trunking, Switch Clustering using ...

Wie kann man dieses Verhalten beeinflußen, so das stets eine Leerzeile zwischen den einzelnen Glossareinträgen ist (wie zwischen IPS, MLT & SMLT oben)?

Folgende Syntax habe ich atm im Zusammenhang mit dem Glossar verwendet:


\usepackage[style=super, nonumberlist, toc, description]{glossaries}
\makeglossaries

\newacronym[description={Intrusion Prevention System - Software oder Hardware zur Erkennung und Verhinderung von Einbrüchen}]
{IPS}
{IPS}
{Intrusion Prevention System}

\newacronym[description={Intrusion Detection System - Beschreibung Einbruchs\-erkennungs\-system}]
{IDS}
{IDS}
{Intrusion Detection System}

\newacronym[description={Command Line Interface - Terminal zur Konfiguration der TP IPS}]
{CLI}
{CLI}
{Command Line Interface}

\newacronym[description={The Custom Shield Writer is the application you can use to create custom attack filters for the UnityOne Intrusion Prevention System devices in your network}]
{CSW}
{CSW}
{Custom Shield Writer}

\newacronym[description={see \emph{\gls{SMLT}}}]
{MLT}
{MLT}
{Multi-Link Trunking}

\newacronym[description={Split Multi Link Trunking, Switch Clustering using ...}]
{SMLT}
{SMLT}
{Split Multi-Link Trunking}

\renewcommand{\glossaryname}{Abkürzungsverzeichnis }
\printglossaries

Danke für die Unterstützung
ips

Stefan_K
01-09-2008, 16:24
Hallo ips,




\usepackage[style=super, nonumberlist, toc, description]{glossaries}

Du hast den Stil super gewählt, damit wird das Glossar mit supertabular gesetzt und mit Leerzeilen zwischen Gruppen. Du könntest einen anderen Stil wählen, es stehen etliche zur Auswahl.
Die Leerzeile könnte man entfernen, indem man \glsgroupskip zu {} umdefiniert, mit super ist es als { & \\} definiert, um diese Leerzeile zu erzeugen. Wenn Du immer Leerzeilen haben möchtest, könntest Du \glossaryentryfield redefinieren und darin \\ durch \\ & \\ ersetzen. Mehr zu den Stilen findest Du in der glossaries Dokumentation.

Viele Grüße,

Stefan

ips
01-09-2008, 17:10
Danke für die Antwort Stefan

Die Leerzeile könnte man entfernen, indem man \glsgroupskip zu {} umdefiniert
das funktioniert bei mir, ist aber nicht das gewünschte Ziel - ich möchte ja gleichmäßig hinter jedem Eintrag eine Leerzeile :)


Wenn Du immer Leerzeilen haben möchtest, könntest Du \glossaryentryfield redefinieren und darin \\ durch \\ & \\ ersetzen.
Ich habe zum Testen folgendes Fragment eingefügt:


\newglossarystyle{test}{%
\glossarystyle{super} % base this style on the list style
\renewcommand{\glossaryentryfield}{\\ & \\}
}
\glossarystyle{test}

Das führt bei mir beim Kompilieren zu folgendender Fehlermeldung:

Misplaced \noallign, wobei der Kompiler im *.gls-File auf die vorletzte Zeile
\end{theglossary} zeigt (Wieso kann man eigentlich die Ausgabe des Kompilers bei Texniccenter nicht markieren und kopieren ^^)

Ersetze ich die Zeile
\renewcommand{\glossaryentryfield}{\\ & \\} durch
\renewcommand{\glsgroupskip}{\\ & \\} so erhalte ich im o.g. Beispiel 2 Leerzeilen zwischen den Einträgen wo vorher nur eine Leerzeile war, jedoch immernoch keine Leerzeile an den Stellen wo mir diese auch vorher fehlten.

Stefan_K
01-09-2008, 17:28
\glossaryentryfield ist mit super-Stil so definiert:

\renewcommand*{\glossaryentryfield}[5]{%
\@glstarget{glo:##1}{##2} & ##3\glspostdescription\space ##5\\}

Darin könnte man \\ ersetzen, wie ich oben schrieb. Oder man redefiniert glspostdescription. An einem Minimalbeispiel hätte ich das auch selbst getestet.

Stefan

ips
01-09-2008, 18:07
Mein Problem ist, dass somit zwischen Einträgen bei welchen ich aktuell eine Leerzeile habe dann 2 Leerzeilen erscheinen bzw. zwischen Einträgen wo atm keine Leerzeile ist dann eine Leerzeile erscheint - das Problem hat sich somit aus meiner Sicht nur verlagert

Zum besseren Verständnis und Test habe ich mal versucht eine "Minimalbeispiel" zu erstellen:


\documentclass[a4paper,12pt,twoside,parskip]{scrreprt}

\usepackage[style=super, nonumberlist, toc, description]{glossaries}

\makeglossaries

\begin{document}

\newacronym[description={Langbeschreibung}]
{IPS}
{IPS}
{Intrusion Prevention System}

\newacronym[description={Langbeschreibung}]
{IDS}
{IDS}
{Intrusion Detection System}

\newacronym[description={Langbeschreibung}]
{CLI}
{CLI}
{Command Line Interface}

\newacronym[description={Langbeschreibung}]
{CSW}
{CSW}
{Custom Shield Writer}

\newacronym[description={Langbeschreibung}]
{MLT}
{MLT}
{Multi-Link Trunking}

\newacronym[description={Langbeschreibung}]
{SMLT}
{SMLT}
{Split Multi-Link Trunking}

\begin{itemize}
\item \emph{\gls{MLT}}
\item \emph{\gls{IPS}}
\item \emph{\gls{CSW}}
\item \emph{\gls{IDS}}
\item \emph{\gls{CLI}}
\item \emph{\gls{SMLT}}
\item \emph{\gls{CLI}}
\end{itemize}

\printglossaries

\end{document}

Im Anhang befindet sich das daraus kompilierte PDF, in welchem man den ungeliebten Effekt im Glossar auch sehr gut erkennen kann.

Stefan_K
01-09-2008, 18:24
Mit dem Minimalbeispiel funktioniert dies in der Präambel:

\renewcommand*\glspostdescription{\\ &}
\renewcommand*\glsgroupskip{}

Die Tabellen-Leerzeile wird damit nicht mehr zwischen den Gruppen gesetzt, jedoch nach jedem Eintrag.

Stefan

ips
01-09-2008, 18:40
*ein entspanntes* Aahhhh! :)

Mein Problem war das beim Style nix mit *group* gesetzt ist (atm super).
Somit habe ich auch nicht damit gerechnet, dass trotzdem jeweils ein Zeilenumbruch nach jeder Gruppe (hier "C", "I", "M" und "S") gesetzt wird (find ich auch jetzt beim drüber nachdenken recht unsinnig - aber egal)

Mit deinen letztgenannten Kommandos funktioniert es wie von mir gewünscht, da man Latex erst weismachen muß, dass die Zeilenumbrüche nach den nicht verwendeten Gruppen bitte entfernt werden sollen und im Weiteren nach jedem Eintrag ein Zeilenumbruch zu setzen ist :D

Danke für die Aufklärung Stefan