Horizontale Linie mit glossaries

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


Flori H
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Sa 23. Feb 2013, 15:35

Horizontale Linie mit glossaries

Beitrag 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 :)

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Re: Horizontale Linie mit glossaries

Beitrag 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
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

Flori H
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Sa 23. Feb 2013, 15:35

Beitrag 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 ..

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Beitrag 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
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

Flori H
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Sa 23. Feb 2013, 15:35

Beitrag 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!

rais
Forum-Guru
Forum-Guru
Beiträge: 413
Registriert: Di 21. Sep 2010, 00:37

Beitrag 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
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

Flori H
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Sa 23. Feb 2013, 15:35

Beitrag von Flori H »

Vielen Dank, das funktioniert :)

Antworten