Nomenklatur editieren

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


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

Nomenklatur editieren

Beitrag von Peterlinho »

Hallo, ich habe folgenden Code zum Thema "Nomenklatur" aus diesem Forum, da meine Frage unter dem entsprechenden Thema nicht beantwortet wurde, musste ich notgedrungen ein neues Thema aufmachen :)
\documentclass[a4paper,11pt,oneside,openany,parskip idx]{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}




%ab hier Nomenklatur



\usepackage{siunitx}

% Abkürzungs- /Symbolverzeichnis
\usepackage[intoc]{nomencl} % Erzeugt ein Symbolverzeichnis
\makenomenclature

\makeatletter
\def\@@@nomenclature[#1]#2#3#4{%
  \def\@tempa{#2}\def\@tempb{#3}\def\@tempc{#4}%
  \protected@write\@nomenclaturefile{}%
    {\string\nomenclatureentry{#1\nom@verb\@tempa @[{\nom@verb\@tempa}]%
     \string\parbox[b]{\string\nomunitwidh}{\nom@verb\@tempc}%
     \begingroup\nom@verb\@tempb\protect\nomeqref{\theequation}%
     |nompageref}{\thepage}}%
  \endgroup
  \@esphack}
\makeatother

\renewcommand*\nomname{Nomenklatur}
\setlength\nomlabelwidth{.2\linewidth}
\setlength\nomitemsep{-\parsep}
\newlength\nomunitwidh
\setlength\nomunitwidh{8em}

% \newcommand\nomunit[1]{\def\nomentryend{\hfill#1}}
\renewcommand\nomgroup[1]{
   \def\makelabel##1{##1}
   \bigskip
   \ifx#1A\relax
      \item
      \item[\textbf{\Large Lateinische Formelbuchstaben}]
      \item
      \item[\textbf{Symbol}]\parbox[b]
      {\nomunitwidh}
      {\textbf{Einheit}}\textbf{Bedeutung}\hfill
   \fi
   \ifx#1B\relax
      \item
      \item[\textbf{\Large Griechische Formelbuchstaben}]
      \item
      \item[\textbf{Symbol}]\parbox[b]{\nomunitwidh}{\textbf{Einheit}}\textbf{Bedeutung}\hfill
   \fi
   \ifx#1C\relax
      \item[\textbf{\Large Indizes und Hochzeichen}]
      \item
   
\fi
   \ifx#1D\relax
      \item[\textbf{\Large Abkürzungen}]
      \item   
      
\fi
   \ifx#1E\relax
      \item[\textbf{\Large Triebwerksebenen}]
      \item       
   \fi
   \medskip
   \let\makelabel\nomlabel
}
\usepackage{filecontents}
\begin{filecontents*}{Nomenclature.tex}


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




\nomenclature[B]{$\Delta$}{Differenz}{-}
\nomenclature[B]{$\epsilon$}{Umgebungsfunktion,Exergiereferenzgerade}{-}
\nomenclature[B]{$\zeta$}{Exergetischer Wirkungsgrad}{-}
\nomenclature[B]{$\kappa$}{Isentropenexponent}{-}
\nomenclature[B]{$\mu$}{Nebenstromverhältnis}{-} 


\nomenclature[C]{i}{allgemeiner Zustandspunkt}{}
\nomenclature[C]{krit}{kritisch,kritischer Zustand}{}
\nomenclature[C]{max}{maximal}{}
\nomenclature[C]{mech}{mechanisch}{}
\nomenclature[C]{kin}{kinetisch}{}
\nomenclature[C]{phys}{physikalisch}{}
\nomenclature[C]{therm}{thermisch}{}
\nomenclature[C]{t}{total,Totalzustand}{}
\nomenclature[C]{Neben}{Nebenstrom}{}
\nomenclature[C]{Kern}{Kernstrom}{}
\nomenclature[C]{ges}{gesamt}{}

\nomenclature[D]{ACARE }{Advisory Council for Aeronautics Research in Europe}{}
\nomenclature[D]{OPEC }{Organization of the Petroleum Exporting Countries}{} 
 
 
\nomenclature[E]{9}{Düsenaustritt Kernstrom}{}
\nomenclature[E]{19}Düsenaustritt Nebenstrom}{} 

 
\end{filecontents*} 




\begin{document}

\tableofcontents

\newpage
\input{Nomenclature} 
\printnomenclature

\end{document}
Nun möchte ich folgendes abändern, weiß aber nicht genau wie das funktioniert:

1) Wie schaffe ich es, ein neuen Teilabschnitt der Nomenklatur (mit Teilabschnitt meine ich: "Lateinische Formelbuchstaben " , "Griechische Formelbuchstaben" ... und die entsprechenden Auflistungen auf einer neuen Seite beginnen zu lassen?

2) Ich möchte unter den Teilabschnitt "Lateinische Formelbuchstaben " einen ganz normalen Satz schreiben. Wie kann ich in der Nomenklatur diesen einfügen, sodass es danach mit dem Teilabschnitt "Griechische Formelbuchstaben" weitergeht?

3) Zwischen den Teilabschnitten "Lateinische Formelbuchstaben " , "Griechische Formelbuchstaben" und "Indizes und Hochzahlen" ist jeweils ein gewisser Abstand, wenn ich diesen auch zwischen "Indizes und Hochzahlen" und "Abkürzungen" mittels einfügen von
\item
mache (wie im obigen Code an gegebener Stelle) klappt das nicht, wieso?

Soweit erstmal, hoffe es kann mir jemand helfen, Danke!

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Meine Güte. Lauter \items um Abstände zu erzeugen. Wer hat das denn geschrieben? Ansonsten: In deiner anderen Frage hast du doch behauptet, du würdest "den Code von cgnieder" benutzen. Der verwendet aber das viel bessere glossaries und nicht nomencl.

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

Beitrag von Peterlinho »

Wenn du dir den ganzen Thread durchliest wirst du feststellen, dass er es auch mit nomencl macht. (cgnieder)

Könntest du mir trotzdem vielleicht helfen?

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Peterlinho hat geschrieben:Wenn du dir den ganzen Thread durchliest wirst du feststellen, dass er es auch mit nomencl macht. (cgnieder)
Hm. Er ist das schuld. Naja, halte dich besser an seinen letzten Vorschlag, der in dem er glossaries verwendet. Die davor sind eher Hacks und nicht wirklich empfehlenswert.

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

Beitrag von cgnieder »

Peterlinho hat geschrieben:Wenn du dir den ganzen Thread durchliest wirst du feststellen, dass er es auch mit nomencl macht. (cgnieder)
Und Du hast von allen Vorschlägen leider den schlechtesten genommen. Wenn man den ganzen Thread liest, stellt man auch fest, dass ich mehr als einmal empfehle, das Tabellenlayout mit »nomentbl« oder besser noch mit »glossaries« anzugehen und habe obiges als Notlösung bezeichnet. (Wieso ich \item verwendet habe, um Abstände zu erzeugen, ist mir etwas schleierhaft, vielleicht war es spät und ich zu faul...)

Wo ist das Problem, »glossaries« zu verwenden?
Clemens
Paketauthor

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

(Wieso ich \item verwendet habe, um Abstände zu erzeugen, ist mir etwas schleierhaft, vielleicht war es spät und ich zu faul...)
Nicht nur bei den Abständen sind die \item etwas zweifelhaft. Auch bei den Überschriften, finde ich sie nicht wirklich gelungen. Wenn man (Zwischen)-Überschriften will, sollte man auch Überschriftenbefehle benutzen. Ich würde sowas eher so aufbauen:
\newcommand\titleA{\section{Latein}}
\newcommand\titleB{etwas text am Ende von A 
                                 \newpage\section{Griechisch}}
%usw

\renewenvironment{thenomenclature}{}{\endlist\endgroup}

\makeatletter
\renewcommand\nomgroup[1]{%
 \ifnum \@listdepth>0 \endlist\endgroup\fi
 \csname title#1\endcsname
 \begingroup %% und hier geeignete Listdefinition
   }
\makeatother

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

Beitrag von cgnieder »

Ich glaube, der gesamte Code geht ursprünglich auf das Beispiel aus der »nomencl« Dokumentation (S. 11) zurück
\RequirePackage{ifthen}
\renewcommand{\nomgroup}[1]{%
  \ifthenelse{\equal{#1}{R}}{\item[\textbf{Variables}]}{%
    \ifthenelse{\equal{#1}{G}}{\item[\textbf{Constants}]}{}}}
und hatte sich mit der Zeit verselbstständigt. Der genannte Thread ist leider nicht der einzige, der sich damit herumschlägt....
Clemens
Paketauthor

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

Beitrag von Peterlinho »

Alles klar, habe es nun mit glossaries zum Laufen gebracht. Kann ich also dein Beispiel von oben übernehmen? Bin nämlich noch nicht so der Crack in Latex und habe auch nicht mehr viel Zeit bis zur Abgabe, deshalb muss ich mit copy & paste sowie Abänderungen arbeiten.

Habe nun mal deinen Code ein wenig abgeändert (Sortierung selbst definiert):
\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
}

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

% Gruppen:

\newglossaryentry{latin}{name={Lateinische Formelzeichen},description={dummy}}
\newglossaryentry{greek}{name={Griechische Formelzeichen},description={dummy}}
\newglossaryentry{Hochzeichen}{name={Hochzeichen und Indizes},description={dummy}}
\newglossaryentry{Abkuerzung}{name={Abkürzungen},description={dummy}}




% \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
\printglossaries 

\end{document}
Dazu habe ich noch ein paar Fragen:

a) Wie schaffe ich es, dass die Spalten näher zusammenrücken? Die Spalte "Einheit" steht mir viel zu weit rechts, und sollte zu den Symbolen rücken.

b) Wie kann ich eine einfache Textzeile zwischen die Abschnitte "Lateinische Formelbuchstaben" und "Griechische Formelbuchstaben" einfügen?

c) Wie kann ich zwischen der Überschrift "Lateinische Formelzeichen" und dem Beginn der Auflistung eine Abstand einfügen? Über \bigskip funktioniert das wohl nicht. Genauso möchte ich dann zwischen den Übergängen der Teilabschnitte ("Lateinische Formelbuchstaben" ,"Griechische Formelbuchstaben" , "Hochzeichen und Indizes" ... ) einen Abstand haben.

d) Bisher heißt mein Glosar: Glossary , ich hätte es gerne als "Nomenklatur", über
\renewcommand{\glossaryname}{Stichwortverzeichnis}
klappt das nicht so recht?

Wie bekomme ich denn das hin? Werde aus der Paketbeschreibung nicht sonderlich schlau..

Danke für Tipps und Tricks ;-)

Benutzeravatar
Sepp99
Forum-Meister
Forum-Meister
Beiträge: 1569
Registriert: So 29. Aug 2010, 17:26
Wohnort: Offenhausen/OÖ

crosspost

Beitrag von Sepp99 »

Ich würde mich langsam entscheiden: crossposts
http://www.mrunix.de/forums/showthread.php?t=74654
sind in diesem Forum eigentlich untersagt, vor allem wenn hier
keine Benutzer die so hilfreich sind wie diese hier
siehe auch [2]

Sepp.-

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

Beitrag von Epllus »

Wegen den Namen vom Glossar verwende eines von dreien:
\makeatletter 
\addto\extrasngerman{%
  \renewcommand{\glossaryname}{Glossar}
}
 \makeatother
bzw.
\printglossary[title=Glossar]
bzw.
\usepackage[ngerman]{translator}
Das erste ist zwar ein wenig kompliziert, aber so ändert man die \...name in babel.

Hoffe es hilft
Epllus

PS. Bei deinem Beispiel ungetestet, da es bei mir nicht lauffähig ist.

Antworten