Seite 1 von 1

Glossaries-Style super abändern

Verfasst: Do 8. Apr 2010, 11:08
von meep.meep
Hallo zusammen,

ich möchte gerne den Stil meines Glossars abwandeln. Ich habe mich bereits durch die Dokumentation gearbeitet, komme aber nicht zur Lösung. Mein Problem ist wie folgt:

Ich möchte gerne einen auf Tabellen basierenden Style (hier: super) für meine Verzeichnisse anwenden. In diesen Styles ist nun die Breite der ersten Spalte (z.B. Abkürzung) variabel und die der zweiten Spalte (Beschreibung) festgelegt. Was ich nun möchte, ist, dass für den Fall einer langen Beschreibung, die einen Zeilenumbruch im Glossar erfordert, die gesamte Textbreite für die zweite Spalte ausgenutzt wird, während sich die erste Spalte weiterhin an dem längsten Eintrag hierin bemisst.

Was ich mir selbst erarbeiten konnte: Die zweite Spalte ist \glsdescwidth breit.
\newglossarystyle{super}{%
 \renewenvironment{theglossary}%
 {\tablehead{}\tabletail{}%
 \begin{supertabular}{lp{\glsdescwidth}}}%
 {\end{supertabular}}%
 \renewcommand*{\glossaryheader}{}%
 \renewcommand*{\glsgroupheading}[1]{}%
 \renewcommand*{\glossaryentryfield}[5]{%
 \glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
 \renewcommand*{\glossarysubentryfield}[6]{%
 & \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
 \renewcommand*{\glsgroupskip}{ & \\}}
Dies wird in den Tabellen-basierten Styles wiederum definiert als
 \@ifundefined{glsdescwidth}{% 
 \newlength\glsdescwidth 
 \setlength{\glsdescwidth}{0.6\hsize}
 }{} 


Sie ist also statisch. Ich habe bereits versucht, einen neuen Glossary-Style auf Basis von super zu erstellen, mit supertabular* und als Tabellenbreite \textwidth, aber dies funktioniert nicht. ich bin auch auf das Paket ltxtable gestossen, bin aber überfragt, ob und wie man es für einen Glossar-Stil verwenden kann.

Mein (hoffentlich den Anforderungen entsprechendes) Minimalbeispiel lautet wie folgt:
\documentclass[12pt,ngerman,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[acronym,nonumberlist]{glossaries}


\makeglossaries
%Diese Befehle sortieren die Einträge in den einzelnen Listen:
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn <--- Abkürzungsverzeichnis
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
%siehe auch : http://ewus.de/tipp-1029.html
\glossarystyle{super}

\begin{document}
%-----------Die Glossary-Einträge-----------------
\newacronym{estg}{EStG}{Einkommensteuergesetz, eine längere Beschreibung um zu testen, wie der Zeilenumbruch funktioniert}
\newacronym{lang}{lange Abkürzung}{Lange Abkürzung zum Testen}
\glsunset{estg}\glsunset{lang}
%---------Die Druck-Befehle-----------------------
\printglossaries

\vspace{5ex}
Diese Arbeit beschäftigt sich oft mit dem \gls{estg}. Ich nutze die Abkürzung: \gls{lang}.
\end{document}
Es wäre super, falls jemand die Lösung für mein Problem weiss, bzw. mir sagen kann, ob es überhaupt eine Lösung gibt. Im Notfall kann ich natürlich nach Eingabe aller Einträge die Breite der ersten Spalte ausmessen und die Breite der zweiten Spalte manuell optimieren. Ich suche aber gerade nach der eleganteren Lösung auf der Programmier-Ebene.

Beste Grüße, Anja

Verfasst: Di 13. Apr 2010, 10:04
von meep.meep
Ich habe es geschafft, mir selbst eine Lösung zusammenzubasteln. Sie nutzt das autolabeling-Paket (siehe: http://www.golatex.de/labeling-umgebung ... t4302.html und der Stil ist jetzt Listen basiert. Hier das Minimalbeispiel:
\documentclass[12pt,ngerman]{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{autolabeling}
\usepackage[ngerman]{babel}
\usepackage[acronym,nonumberlist]{glossaries}

\newglossarystyle{list_auto}{%
 \renewenvironment{theglossary}%
 {\begin{autolabeling}[]}{\end{autolabeling}}%
 \renewcommand*{\glossaryheader}{}%
 \renewcommand*{\glsgroupheading}[1]{}%
\renewcommand*{\glossaryentryfield}[5]{%
\item[\glstarget{##1}{##2}] ##3\glspostdescription\space ##5}%
\renewcommand*{\glossarysubentryfield}[6]{%
 \glstarget{##2}{\strut}##4\glspostdescription\space ##6.}%
 \renewcommand*{\glsgroupskip}{\indexspace}}%

\makeglossaries
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn <--- Abkürzungsverzeichnis
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
%siehe auch : http://ewus.de/tipp-1029.html
\glossarystyle{list_auto}

\begin{document}
\newacronym{kurz}{Abk.}{Eine längere Beschreibung einer Abkürzung, um zu testen, wie der Zeilenumbruch funktioniert}
\newacronym{lang}{lange Abkürzung}{Lange Abkürzung zum Testen}
\glsaddall
\printglossaries
\newpage
\end{document}
Bei der Lösungssuche hat mich der Autor von ltxtable auch darauf aufmerksam gemacht, dass es ähnliche Pakete für lange Tabellen gibt, die keine Dateieinbindung erfordern. Er hat diese Lösung damals wohl aufgrund der begrenzten Speicherkapazität von TeX-Systemen gewählt. Bei Interesse finden sich die verschiedenen Lösungen hier: http://www.ctan.org/tex-archive/help/Ca ... longtables

printonlyused

Verfasst: Di 3. Mai 2011, 00:47
von Sven
Ich benutze genau dein Beispiel und funktioniert prima. Gibt es eine Möglichkeit das nur die auch verwendeten Abkürzung und Symbole ausgewiesen werden? Also so was ähnliches wie:

\usepackage[printonlyused] {acronym}

eine kurze Antwort wäre super

Verfasst: Di 3. Mai 2011, 18:01
von meep.meep
Du entfernst
\glsaddall 
:)