Nomenklatur editieren

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


Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Vielleicht so (siehe unten). Ich habe versucht, den Code und meine diesmaligen Änderungen soweit zu kommentieren, dass Du nachvollziehen kannst, was was macht.

Ich kann leider kein Bild hochladen, um zu demonstrieren, wie es jetzt aussieht...
\documentclass[a4paper,11pt,oneside,openany,parskip]{scrreprt}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{lmodern}
\usepackage[showframe]{geometry}
\setkomafont{sectioning}{\normalcolor\bfseries}
\usepackage{amsmath}
\numberwithin{equation}{section}
\usepackage{paralist}
\usepackage{chngcntr}
\counterwithin{figure}{section}
\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\clearscrplain
\ohead{\pagemark}
\ihead{\headmark}
\setheadsepline{0.4pt}



% ab hier dein Code

\usepackage{siunitx}
\usepackage[sort=def]{glossaries}
\usepackage{longtable}

% für die Bequemlichkeit einen \nomenclature Befehl:
\newcommand*\nomenclature[5][A]{%
  \ifx#1A\relax
    \newglossaryentry{#2}{
      name={#3} ,
      description={#4} ,
      sort={#2} ,
      user1 = {\unexpanded{#5}} ,
      parent={latin}
    }
  \fi
  \ifx#1D\relax
    \newglossaryentry{#2}{
      name={#3} ,
      description={#4} ,
      sort={#2} ,
      user1 = {#5} ,
      parent={Abkuerzung}
    }
  \fi
  \ifx#1B\relax
    \newglossaryentry{#2}{
      name={#3} ,
      description={#4} ,
      sort={#2} ,
      user1 = {\unexpanded{#5}} ,
      parent={greek}
    }
  \fi
  \ifx#1C\relax
    \newglossaryentry{#2}{
      name={#3} ,
      description={#4} ,
      sort={#2} ,
      user1 = {\unexpanded{#5}} ,
      parent={Hochzeichen}
    }
  \fi
}

% Zur Definition neuer Gruppen,
% das \rlap sorgt dafür, dass die Namen keinen Platz verbrauchen, so dass die
% Tabelle die Spaltenbreite nur aus den Einträgen berechnet:
\newcommand*\newnomenclaturegroup[2]{%
  \newglossaryentry{#1}{name={\rlap{#2}},description={dummy}}}

% einen neuen glossary-Style zur persönlichen Anpassung
\newglossarystyle{nomenclature}{%
  % longtable, option [l] setzt die Tabelle flushleft
  % @{} entfernt Leerraum zu Beginn der ersten Spalte
  \renewenvironment{theglossary}%
    {\begin{longtable}[l]{@{}llp{\glsdescwidth}@{}}}%
    {\end{longtable}}%
  \renewcommand*{\glossaryheader}{}%
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand*{\glossaryentryfield}[5]{%
    % Darstellung der Gruppentitel:
    \glsentryitem{##1}% Entry number if required
    \bfseries\glstarget{##1}{##2}% Name
    % fügt eine unsichtbare Linie der Höhe 1.2em ein, wodurch die Einträge
    % der Gruppentitle leicht abgesetzt erscheinen. Hier gibt es bestimmt
    % bessere Lösungen...:
    \rule{0pt}{1.2em}
    \\% end of row
  }%
  \renewcommand*{\glossarysubentryfield}[6]{%
    % Darstellung der Einträge:
    \hspace*{.5em}% horizontal offset of entries => nach Geschmack ändern
    \glstarget{##2}{##3}% Name
    & \glsentryuseri{##2}% Units
    & ##4% Description
    \\% end of row
  }%
  \renewcommand*{\glsgroupskip}{\\}%
}

% Gruppen:
\newnomenclaturegroup{latin}{Lateinische Formelzeichen}
\newnomenclaturegroup{greek}{Griechische Formelzeichen}
\newnomenclaturegroup{Hochzeichen}{Hochzeichen und Indizes}
\newnomenclaturegroup{Abkuerzung}{Abkürzungen}

% \nomenclature[Gruppe]{ID}{Symbol}{Beschreibung}{Einheit}
\nomenclature[A]{alpha}{$\alpha$}{Angle}{\si\degree}
\nomenclature[A]{c}{c}{Geschwindigkeit im Absolutsystem (erdfest)}{\si[per-mode=symbol]{\metre\per\second}}
\nomenclature[A]{nix}{}{spezifische Wärmekapazität}{\si[per-mode=symbol]{\joule\per\kilogram\per\kelvin}}
\nomenclature[A]{e}{e}{spezifische Exergie}{\si[per-mode=symbol]{\joule\per\kilogram}}
\nomenclature[A]{E}{E}{Exergie}{\si{\J}}
\nomenclature[A]{F}{F}{Kraft}{\si{\newton}}
\nomenclature[A]{h}{h}{spezifische Enthalpie}{\si[per-mode=symbol]{\joule\per\kilogram}}
\nomenclature[A]{m}{m}{Masse}{\si{\kilogram}}
\nomenclature[A]{Ma}{Ma}{Machzahl}{-}
\nomenclature[A]{p}{p}{Druck}{\si{\pascal}}
\nomenclature[A]{P}{P}{Leistung}{\si{\W}}
\nomenclature[A]{Q}{Q}{Wärmemenge}{\si{\J}}
\nomenclature[A]{R}{R}{spezifische Gaskonstante}{\si[per-mode=symbol]{\joule\per\kilogram\per\kelvin}}
\nomenclature[A]{s}{s}{spezifische Entropie}{\si[per-mode=symbol]{\joule\per\kilogram\per\kelvin}}
\nomenclature[A]{T}{T}{Temperatur}{\si{\kelvin}}
\nomenclature[A]{w}{w}{Geschwindigkeit im Relativsystem (flugzeugfest)}{\si[per-mode=symbol]{\metre\per\second}}

\nomenclature[B]{V}{$V$}{Volume}{\si{\cubic\metre}}
\nomenclature[D]{UN}{UN}{
  The United Nations
}{}
\nomenclature[L]{U}{$U$}{Voltage}{\si{\volt}}

\makeglossaries
\glossarystyle{nomenclature}

\begin{document}

\glsaddall
\printglossary[title=Nomenklatur]

\end{document}
Grüße
Clemens
Paketauthor

Peterlinho
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Di 29. Jan 2013, 18:59

Beitrag von Peterlinho »

Hi Clemens,
vielen Dank, das hilft mir wirklich sehr weiter.

Jetzt wären nur noch vier Dinge, die mir bis jetzt einfallen :wink: zu ändern:

a) Möchte ich einen Abstand zwischen der Überschrift "Lateinische Formelzeichen" und der ersten "Aufzählung" bzw. ersten Zeile der "Tabelle" einfügen

b) Würde ich gerne nach dem Abschnitt "Lateinische Formelzeichen" eine Textzeile über die gesamte Seitenbreite, und nicht nur über eine Spalte, einfügen.

c) ist es möglich jeweils über die Spalten noch Überschriften zu schreiben (Symbol , Einheit , Erklärung) so wie in deinem Beispiel zu nomencl?

d) kann ich einen Abschnitt (z.B. Griechische Formelzeichen) auf einer neuen Seite beginnen lassen? Habe mal den Befehl \newpage eingefügt aber der ist hier wohl sinnlos

Wäre cool wenn du mir da nochmal helfen könntest...wo schaut man das eig. dann immer nach? unter glossaries oder unter dem Paket longtable?

Epllus
Forum-Guru
Forum-Guru
Beiträge: 470
Registriert: So 23. Sep 2012, 17:31

Beitrag von Epllus »

Peterlinho hat geschrieben: Möchte ich einen Abstand zwischen der Überschrift "Lateinische Formelzeichen" und der ersten "Aufzählung" bzw. ersten Zeile der "Tabelle" einfügen
Versuch es mal hiermit (nur der relevante Abschnitt des Codes):
  \renewcommand*{\glossaryentryfield}[5]{% 
    % Darstellung der Gruppentitel: 
    \glsentryitem{##1}% Entry number if required 
    \bfseries\glstarget{##1}{##2}\vspace{2ex}%Abstand Überschrift-Eintrag % Name 
    % fügt eine unsichtbare Linie der Höhe 1.2em ein, wodurch die Einträge 
    % der Gruppentitle leicht abgesetzt erscheinen. Hier gibt es bestimmt 
    % bessere Lösungen...: 
    \rule{0pt}{1.2em} 
    \\% end of row 
  }% 
Weiß nicht, ob das die feine englische Art ist, aber es scheint zu funktionieren.

Hoffe es hilft
Epllus

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Ich habe alles in allem den Eindruck, es wäre am besten, glossaries' Möglichkeiten auszunützen, mehrere Glossare zu erstellen. Ich lass' mir morgen was einfallen.

Grüße
Clemens
Paketauthor

Peterlinho
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Di 29. Jan 2013, 18:59

Beitrag von Peterlinho »

ok das wäre cool, Danke!

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Vielleicht ist das jetzt was. Für jede Gruppe wird ein eigenes Glossar erstellt. Das erlaubt prinzipiell für jede Gruppe ein eigenes Layout, eigene Glossarpräambel, ...

% arara: pdflatex
% arara: makeglossaries
% arara: pdflatex
\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{siunitx}
\usepackage{glossaries}
\usepackage{longtable}


% einen neuen glossary-Style zur persönlichen Anpassung
\newglossarystyle{nomenclature}{%
  \renewenvironment{theglossary}%
    {\begin{longtable}[l]{llp{\glsdescwidth}}}%
    {\end{longtable}}%
  \renewcommand*{\glossaryheader}{}%
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand*{\glossaryentryfield}[5]{%
    \glsentryitem{##1}% Entry number if required
    \glstarget{##1}{##2}% Symbol
    & \glsentryuseri{##1}% Einheit
    & ##3 % Beschreibung
    \\% end of row
  }%
  \renewcommand*{\glsgroupskip}{\\}% 
}

\newcommand\nomenclature[5][]{%
  \newglossaryentry{#2}{
    name = {#3},
    description = {#4},
    sort = {#1#2},
    user1 = {\unexpanded{#5}},
    type = \ifblank{#1}{main}{#1}
  }}

% Gruppen:
% \newglossary{<name>}{<eingabedateiendung>}{<ausgabedateiendung>}{<titel>}
\newglossary{A}{glai}{glao}{Lateinische Formelzeichen}
\newglossary{B}{glbi}{glbo}{Griechische Formelzeichen}
\newglossary{D}{gldi}{gldo}{Hochzeichen und Indizes}
\newglossary{L}{glli}{gllo}{Abkürzungen}

% Ausgabe der Nomenklatur:
\newcommand*\printnomenclature{%
  \renewcommand*\glossarypreamble{Hier gehts um bla}%
  \printglossary[type=A]%
  \renewcommand*\glossarypreamble{Hier gehts um blub}%
  \printglossary[type=B]%
  \renewcommand*\glossarypreamble{Hier gehts um foo}%
  \printglossary[type=D]%
  \renewcommand*\glossarypreamble{Hier gehts um bar}%
  \printglossary[type=B]%
}

% \nomenclature[Gruppe]{ID}{Symbol}{Beschreibung}{Einheit}
\nomenclature[A]{alpha}{$\alpha$}{Angle}{\si\degree}
\nomenclature[A]{c}{c}{Geschwindigkeit im Absolutsystem (erdfest)}{\si[per-mode=symbol]{\metre\per\second}}
\nomenclature[A]{nix}{}{spezifische Wärmekapazität}{\si[per-mode=symbol]{\joule\per\kilogram\per\kelvin}}
\nomenclature[A]{e}{e}{spezifische Exergie}{\si[per-mode=symbol]{\joule\per\kilogram}}
\nomenclature[A]{E}{E}{Exergie}{\si{\J}}
\nomenclature[A]{F}{F}{Kraft}{\si{\newton}}
\nomenclature[A]{h}{h}{spezifische Enthalpie}{\si[per-mode=symbol]{\joule\per\kilogram}}
\nomenclature[A]{m}{m}{Masse}{\si{\kilogram}}
\nomenclature[A]{Ma}{Ma}{Machzahl}{-}
\nomenclature[A]{p}{p}{Druck}{\si{\pascal}}
\nomenclature[A]{P}{P}{Leistung}{\si{\W}}
\nomenclature[A]{Q}{Q}{Wärmemenge}{\si{\J}}
\nomenclature[A]{R}{R}{spezifische Gaskonstante}{\si[per-mode=symbol]{\joule\per\kilogram\per\kelvin}}
\nomenclature[A]{s}{s}{spezifische Entropie}{\si[per-mode=symbol]{\joule\per\kilogram\per\kelvin}}
\nomenclature[A]{T}{T}{Temperatur}{\si{\kelvin}}
\nomenclature[A]{w}{w}{Geschwindigkeit im Relativsystem (flugzeugfest)}{\si[per-mode=symbol]{\metre\per\second}}

\nomenclature[B]{V}{$V$}{Volume}{\si{\cubic\metre}}
\nomenclature[D]{UN}{UN}{
  The United Nations
}{}
\nomenclature[L]{U}{$U$}{Voltage}{\si{\volt}}

\makeglossaries
\glossarystyle{nomenclature}

\begin{document}

\glsaddall

\section{Nomenklatur}
\setglossarysection{subsection}
\printnomenclature

\end{document}
Grüße
Clemens
Paketauthor

Peterlinho
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Di 29. Jan 2013, 18:59

Beitrag von Peterlinho »

Cool das sieht schonmal sehr gut aus,Danke für deine Mühe!Jetzt meckert TexMaker nur noch, wenn ich makeglossaries ausführe, hier erhalte ich die Meldung:
Process started

Warning: File 'Test.glo' is empty. Have you used any entries defined in glossary 'main'? Remember to use package option 'nomain' if you don't want to use the main glossary.

Process exited normally

Funktionieren tut aber alles...

a)

Mit:
\printglossary[type=B]%
  %\renewcommand*\glossarypreamble{Hier gehts um foo}
habe ich ja nur eine Zeile, die oberhalb der Auflistung ist. Gibt es auch einen Befehl mit dem ich eine Textzeile unter z.B.
\nomenclature[A]{w}{w}{Geschwindigkeit im Relativsystem (flugzeugfest)}{\si[per-mode=symbol]{\metre\per\second}}
schreiben kann, also kurz bevor das nächste Glossar (Griechische Formelzeichen) beginnt?

b) Wie schaffe ich es, ein Glossar auf einer neuen Seite beginnen zu lassen?


c) Mit
\newpage
\glsaddall
\addcontentsline{toc}{chapter}{Nomenklatur}
\chapter*{Nomenklatur}
\setglossarysection{section}
\printnomenclature 
Konnte ich eine Chapter-Überschrift erstellen, die mir "Nomenklatur" auch im Inhaltsverzeichnis auflistet. Dort sollen die Seiten (Nomenklatur,Abbildungsverzeichnis) aber römisch durchnummeriert werden, bevor der eigentliche Text wieder arabisch ist, wie könnte man das noch hinbekommen.

Dazu habe ich hier im Forum eine Lösung gefunden und in meinen Code eingebaut:
\pagenumbering{Roman}

\tableofcontents

\newpage
\glsaddall
\addcontentsline{toc}{chapter}{Nomenklatur}
\chapter*{Nomenklatur}
\setglossarysection{section}
\printnomenclature 

\clearpage
\pagenumbering{arabic}
Den Code kann man ja einfach in den Code von Clemens reinkopieren (als Minimalbeispiel).

Verträgt sich das nicht mit scrreprt ? Ich erhalte folgende Fehlermeldung:



! Incomplete \ifx; all text was ignored after line 171.<inserted text>\fi<> test.texThe file ended while I was skipping conditional text.This kind of error happens when you say `\if...' and forgetthe matching `\fi'. I've inserted a `\fi'; this might work.! Emergency stop.<> test.tex (job aborted, no legal \end found)Here is how much of TeX's memory you used:22790 strings out of 494045421183 string characters out of 3145969734517 words of memory out of 300000025722 multiletter control sequences out of 15000+20000036835 words of font info for 36 fonts, out of 3000000 for 9000719 hyphenation exceptions out of 819157i,9n,66p,1463b,1419s stack positions out of 5000i,500n,10000p,200000b,50000s! ==> Fatal error occurred, no output PDF file produced!

Peterlinho
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Di 29. Jan 2013, 18:59

Beitrag von Peterlinho »

Es tut sich noch ein weiteres Problem auf sehe ich:

Mit
\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\clearscrplain
\ohead{\pagemark}
\ihead{\headmark}
\setheadsepline{0.4pt}
Habe ich für jede nachfolgende Seite eines Chapters eine Fußzeile definiert. So auch nun für das Chapter "Nomenklatur" , mit
thispagestyle{empty}
funktioniert das leider nicht?

Oje jetzt klemmts...

Peterlinho
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 62
Registriert: Di 29. Jan 2013, 18:59

Beitrag von Peterlinho »

Könntest du mir bitte nochmal helfen Clemens?

Meine letzte Frage konnte ich durch
\printnomenclature 
\thispagestyle{plain} 
klären, nun erscheint keine Kopfzeile mehr.


Weiterhin habe ich einen Beitrag von Ulrike F. gefunden zu meinem "Error", den schaffe ich aber nicht zu interpretieren:

https://groups.google.com/forum/?fromgr ... QlHGJyeWLQ





Beim Rest bin ich nicht weitergekommen :(

Nur so nebenbei

Beitrag von Nur so nebenbei »

Peterlinho hat geschrieben:Mit
\usepackage[automark]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\clearscrplain
\ohead{\pagemark}
\ihead{\headmark}
\setheadsepline{0.4pt}
Habe ich für jede nachfolgende Seite eines Chapters eine Fußzeile definiert.
Zum einen ist das \clearscrplain überflüssig, da \clearscrheadfoot bereits scrheadings und scrplain als leer definiert. Zum anderen wird da nirgendwo eine Fußzeile definiert. Und zum Dritten kann man die Anweisungen von scrpage2 auch innerhalb des Dokuments verwenden, falls das etwas geändert werden muss. Was Du ändern willst, erschließt sich mir aber nicht. Vielleicht kannst Du die Frage etwas genauer fassen?

BTW:
Peterlinho hat geschrieben:
\addcontentsline{toc}{chapter}{Nomenklatur}
\chapter*{Nomenklatur}
KOMA-Script bietet mit \addchap{Nomenklatur} eine Anweisung, die das auf einen Schlag erledigt und auch gleich noch die Marken setzt.

Antworten