Seite 1 von 1

Horizontale Linie mit glossaries

Verfasst: Di 25. Mär 2014, 17:46
von Flori H
Hallo, ich sitze gerade an einem Beleg und möchte gern mithilfe des glossaries-Packages, das Symbolverzeichnis formatieren. Soweit ist das fertig, jedoch würde ich gern eine horizontale Linie zwischen den Spaltenüberschriften und dem ersten Eintrag erreichen. Zusätzlich wöllte ich gern das Wort "Beschreibung" in der 2. Spalte zentrieren. Habt ihr eine Idee, das wäre klasse :)
So in der Form:
Symbol Beschreibung Einheit
-----------------------------------
a b c
a b c
MM-Beispiel (hoffe, das funktioniert):
%Dokumenteinstellungen
%
\documentclass[a4paper,12pt,oneside,bibtotoc,liststotoc]{scrreprt}
\usepackage{inputenc}			
\usepackage[ngerman]{babel,translator}
\usepackage{setspace}
%
%Pakete für glossaries
%
\usepackage{datatool}
\usepackage{longtable}                                                       %für longtable in Symbolverzeichnis												 
\usepackage[acronym, toc, nonumberlist]{glossaries}	          %Verzeichnis mit glossaries erstellen					
\newglossary[svl]{symbols}{svi}{svo}{Symbolverzeichnis}	  %Symbolverzeichnis erstellen
\makeglossaries
%
%Symboleinträge
%
\newglossaryentry{Dichte}	{type=symbols,name={$\rho$},	sort=i,description={Dichte}, symbol={$\dfrac{kg}{m^3}$}}
%
%Style des Symbolverzeichnisses
%
\newglossarystyle{symbols}{													  
 % put the glossary in a longtable environment:   
 \renewenvironment{theglossary}%   
  {\begin{longtable}{lp{\glsdescwidth}p{\glspagelistwidth}}}%   
  {\end{longtable}}%   
 % Set the table�??s header:   
 \renewcommand*{\glossaryheader}{%   
  \bfseries Symbol & \bfseries Beschreibung & \bfseries Einheit 
  \\\endhead}%
 % No heading between groups:   
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand*{\glossarypreamble}{\singlespacing}   
 % Main (level 0) entries displayed in a row:   
  \renewcommand*{\glossaryentryfield}[5]{%   
    \glstarget{##1}{##2}% Name   
    & ##3% Description 
    & ##4% Symbol (wird von mir als Unit verwendet)   
    \\% end of row   
  }%   
  \renewcommand*{\glsgroupskip}{&\\}% 
}
%	
%Dokument
%
\begin{document}
\printglossary[title=Symbolverzeichnis,style=symbols, type=symbols]
\end{document}
%
Vielen Dank schonmal :)

Re: Horizontale Linie mit glossaries

Verfasst: Di 25. Mär 2014, 19:52
von rais
Flori H hat geschrieben:Hallo, ich sitze gerade an einem Beleg und möchte gern mithilfe des glossaries-Packages, das Symbolverzeichnis formatieren. Soweit ist das fertig, jedoch würde ich gern eine horizontale Linie zwischen den Spaltenüberschriften und dem ersten Eintrag erreichen.
funktioniert \hline (direkt vorm \endhead) denn nicht?
Flori H hat geschrieben:Zusätzlich wöllte ich gern das Wort "Beschreibung" in der 2. Spalte zentrieren. Habt ihr eine Idee, das wäre klasse :)
So in der Form:
Symbol Beschreibung Einheit
-----------------------------------
a b c
a b c
eine p-Spalte kannst Du zentrieren, wenn das array-Paket geladen wird und in der Spaltendeklaration >{\centering} der fraglichen p-Spalte vorangestellt wird.
Flori H hat geschrieben:MM-Beispiel (hoffe, das funktioniert):
Du kannst Dich vorab durch simples Testen davon überzeugen, ob Dein Beispiel funktioniert -- bei diesem fehlt ein \gls{Dichte} o.ä.,damit bleibt das Verzeichnis leer.

BTW: Einheiten werden nach SI aufrecht gesetzt, hierbei kann Dir das siunitx-Paket helfen.
%Dokumenteinstellungen
%
\documentclass[a4paper,12pt,oneside,bibtotoc,liststotoc]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel,translator}
\usepackage{setspace}
\usepackage{siunitx}
%
%Pakete für glossaries
%
\usepackage{array}
\usepackage{booktabs}
\usepackage{longtable}                                                       %für longtable in Symbolverzeichnis                                    
\usepackage[acronym, toc, nonumberlist]{glossaries}             %Verzeichnis mit glossaries erstellen              
\newglossary[svl]{symbols}{svi}{svo}{Symbolverzeichnis}     %Symbolverzeichnis erstellen
\makeglossaries
%
%Symboleinträge
%
\newglossaryentry{Dichte}   {type=symbols,name={$\rho$},   sort=i,description={Dichte}, symbol={\si{\kilo\gram\per\metre\cubed}}}
%
%Style des Symbolverzeichnisses
%
\newglossarystyle{symbols}{%
 % put the glossary in a longtable environment:  
 \renewenvironment{theglossary}%  
  {\begin{longtable}{l>{\centering}p{\glsdescwidth}p{\glspagelistwidth}}}%  
  {\end{longtable}}%  
 % Set the table�??s header:  
 \renewcommand*{\glossaryheader}{%  
  \bfseries Symbol & \bfseries Beschreibung & \bfseries Einheit\\
  \midrule\endhead}%
 % No heading between groups:  
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand*{\glossarypreamble}{\singlespacing}  
 % Main (level 0) entries displayed in a row:  
  \renewcommand*{\glossaryentryfield}[5]{%  
    \glstarget{##1}{##2}% Name  
    & ##3% Description
    & ##4% Symbol (wird von mir als Unit verwendet)  
    \\% end of row  
  }%  
  \renewcommand*{\glsgroupskip}{&\\}%
}
%  
%Dokument
%
\begin{document}
\gls{Dichte}
\printglossary[title=Symbolverzeichnis,style=symbols, type=symbols]
\end{document}
%
MfG
Rainer

Verfasst: Di 25. Mär 2014, 23:57
von Flori H
Danke :) das klappt alles wunderbar.
Geht das mit dem Zentrieren auch bei den beiden anderen Spalten? wenn ich das vor p{\glspaglistwidth} setze, kommen leider nur Fehler ..

Verfasst: Mi 26. Mär 2014, 08:20
von rais
Flori H hat geschrieben: Geht das mit dem Zentrieren auch bei den beiden anderen Spalten? wenn ich das vor p{\glspaglistwidth} setze, kommen leider nur Fehler ..
ja, auch das geht. Wenn die letzte Spalte davon betroffen ist, ergänze \arraybackslash, damit die \\ als Tabellenzeilenende erkannt werden, etwa
>{\centering\arraybackslash}p{\glspagelistwidth}
Alternativ könntest Du auch die \\ durch \tabularnewline ersetzen.

MfG
Rainer

Verfasst: Mi 26. Mär 2014, 17:07
von Flori H
Also mit der letzten Spalte funktioniert das, jedoch nicht mit der ersten.
Als Code hätte ich jetzt:
\renewenvironment{theglossary}												
  {\begin{longtable}{l>{\centering}p{\glsdescwidth}>{\centering\arraybackslash}p{\glspagelistwidth}}}   
  {\end{longtable}}
Ich vermute fast, das liegt an dem "l", aber ich kann da nichts anderes reinschreiben, sonst kommen Fehler.
Vor dem "l" habe ich beides eingefügt, centering und centering\arraybackslash eingefügt, trotzdem passiert nichts.
Vielleicht hat noch jemand eine Idee? :)
Vielen Dank schonmal!

Verfasst: Mi 26. Mär 2014, 19:48
von rais
Flori H hat geschrieben:Also mit der letzten Spalte funktioniert das, jedoch nicht mit der ersten.
Als Code hätte ich jetzt:
\renewenvironment{theglossary}												
  {\begin{longtable}{l>{\centering}p{\glsdescwidth}>{\centering\arraybackslash}p{\glspagelistwidth}}}   
  {\end{longtable}}
Ich vermute fast, das liegt an dem "l", aber ich kann da nichts anderes reinschreiben, sonst kommen Fehler.
Mea culpa,
ich hab glatt überlesen, daß Du auch die erste Spalte zentriert haben willst.:oops:
Da kannst Du einfach c statt l nehmen, also
\begin{longtable}{c>{\centering}p{\glsdescwidth}>{\centering\arraybackslash}p{\glspagelistwidth}}
MfG
Rainer

Verfasst: Mi 26. Mär 2014, 19:56
von Flori H
Vielen Dank, das funktioniert :)