[nomencl] Zwischenüberschriften im Abkürzungsverzeichnis

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


marc86
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 27. Mär 2015, 14:40

[nomencl] Zwischenüberschriften im Abkürzungsverzeichnis

Beitrag von marc86 »

Hallo,

Bin ein Neuling im Forum und bräuchte eure Hilfe. Schreibe derzeit an einer wissenschaftlichen Arbeit und bin sehr zufrieden mit LaTaX.

Folgendes Problem stellte sich für mich heraus:

Die Nutzung des Pakets nomencl für ein Abkürzungsverzeichnis habe ich verstanden und es funktionier auch einwandfrei.

Ich würde nun gerne, wenn möglich, Überschriften im Abkürzungsverzeichnis einfügen. Alles was unter A aufgelistet wird sollte mit der Überschrift A versehen werden, alles mit B mit der Überschrift B usw. Gibt es vielleicht eine Funktion die das schnell und einfach verursacht?

Über eure Antworten bin ich Dankbar,
Gruß Marc 8)

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Hast du schon in Abschnitt 5.1 der Dokumentation geschaut?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

marc86
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 27. Mär 2015, 14:40

Beitrag von marc86 »

Vielen dank für den Tip! Ich dachte es gibt eventuell eine Funktion, welche mir das automatisch ausgibt. Habe mir jetzt manuell die Überschriften wie folgt erstellt:
%Abkürzungsverzeichnis
	\usepackage[intoc]{nomencl}
	\usepackage{ifthen}
		%Überschrift
		\renewcommand{\nomname}{Abkürzungsverzeichnis} 
		%Abst. Abkürzung - Erläuterung
		\setlength{\nomlabelwidth}{.20\hsize}
		%Punkte Einfügen
		\renewcommand{\nomlabel}[1]{#1 \dotfill}
		%Abstand der Abkürzungen zueinander
		\setlength{\nomitemsep}{-\parsep}
		%Gruppierung
		\renewcommand{\nomgroup}[1]{%
			\ifthenelse{\equal{#1}{1}}{\item[\textbf{Symbole}]}{%
			\ifthenelse{\equal{#1}{A}}{\item[\textbf{A}]}{%
			\ifthenelse{\equal{#1}{B}}{\item[\textbf{B}]}{%
			\ifthenelse{\equal{#1}{C}}{\item[\textbf{C}]}{%
			\ifthenelse{\equal{#1}{D}}{\item[\textbf{D}]}{%
			\ifthenelse{\equal{#1}{E}}{\item[\textbf{E}]}{%
			\ifthenelse{\equal{#1}{F}}{\item[\textbf{F}]}{%
			\ifthenelse{\equal{#1}{G}}{\item[\textbf{G}]}{%
			\ifthenelse{\equal{#1}{H}}{\item[\textbf{H}]}{%
			\ifthenelse{\equal{#1}{I}}{\item[\textbf{I}]}{%
			\ifthenelse{\equal{#1}{J}}{\item[\textbf{J}]}{%
			\ifthenelse{\equal{#1}{K}}{\item[\textbf{K}]}{%
			\ifthenelse{\equal{#1}{L}}{\item[\textbf{L}]}{%
			\ifthenelse{\equal{#1}{M}}{\item[\textbf{M}]}{%
			\ifthenelse{\equal{#1}{N}}{\item[\textbf{N}]}{%
			\ifthenelse{\equal{#1}{O}}{\item[\textbf{O}]}{%
			\ifthenelse{\equal{#1}{P}}{\item[\textbf{P}]}{%
			\ifthenelse{\equal{#1}{Q}}{\item[\textbf{Q}]}{%
			\ifthenelse{\equal{#1}{R}}{\item[\textbf{R}]}{%
			\ifthenelse{\equal{#1}{S}}{\item[\textbf{S}]}{%
			\ifthenelse{\equal{#1}{T}}{\item[\textbf{T}]}{%
			\ifthenelse{\equal{#1}{U}}{\item[\textbf{U}]}{%
			\ifthenelse{\equal{#1}{V}}{\item[\textbf{V}]}{%
			\ifthenelse{\equal{#1}{W}}{\item[\textbf{W}]}{%
			\ifthenelse{\equal{#1}{X}}{\item[\textbf{X}]}{%
			\ifthenelse{\equal{#1}{Y}}{\item[\textbf{Y}]}{%
			\ifthenelse{\equal{#1}{Z}}{\item[\textbf{Z}]}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}
	%Erzeugung des Abkürzungsverzeichnis
	\makenomenclature
Soweit so gut! Habe den einzelnen Abkürzungen ihre Schlüssel zugewiesen jodoch stoße ich auf ein Problem mit den gr. Symbolen die ich verwende.

Problem 1: Anscheinen funktioniert es nicht diese mit 1 in die Gruppe Symbole einzusortieren. Da aber die Buchstaben A-Z schon verwendet werden gibt es hoffentlich eine Möglichkeit diese noch in eine eigene Gruppe einzuordnen, habe aber keine Idee wie!

Problem 2: Ich verwende dotfill der Übersichtlichkeits halber. Nun fügt mir nomencl aber auch dots bei den Überschriften A, B, C usw ein. Gibt es eine Möglichkeit die dots dort zu unterbinden?

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

Beitrag von rais »

marc86 hat geschrieben: Problem 1: Anscheinen funktioniert es nicht diese mit 1 in die Gruppe Symbole einzusortieren. Da aber die Buchstaben A-Z schon verwendet werden gibt es hoffentlich eine Möglichkeit diese noch in eine eigene Gruppe einzuordnen, habe aber keine Idee wie!
das Belegen des \nomgroup-Befehls übernimmt das makeindex-Programm.
Bei einem positiven Wert für headings_flag (das per nomencl.ist auf 1 gesetzt ist), bekommst Du hier A-Z, Numbers (für rein numerische Einträge) und Symbols (für alles, das nicht über A-Z und Numbers abgedeckt ist).
Bevor Du nun dabeigehst und auf "Symbols" testest, würde ich an Deiner Stelle die nomencl.ist-Datei ins Arbeitsverzeichnis (unter anderem Namen, etwa mynomencl.ist) kopieren und darin
symhead_positive "Symbole"
ergänzen (`kpsewhich nomencl.ist' sagt Dir, wo Du die Original-nomencl.ist auf Deinem Rechner hast).
Dazu müsstest Du Deinen makeindex-Aufruf entsprechend anpassen (also beim -s mynomencl.ist angeben).
Theoretisch stünde so bereits der richtige String im \nomgroup, d.h. Du könntest die ganzen \ifthenelse-Befehle weglassen.
marc86 hat geschrieben:Problem 2: Ich verwende dotfill der Übersichtlichkeits halber. Nun fügt mir nomencl aber auch dots bei den Überschriften A, B, C usw ein. Gibt es eine Möglichkeit die dots dort zu unterbinden?
Evtl. tut es bereits, wenn Du ins \item-Argument eine \parbox packst, etwa
\renewcommand{\nomgroup}[1]{%
  \item[\parbox{\nomlabelwidth}{\textbf{#1}}]~
}
(wegen fehlendem Minimalbeispiel ungetestet)

MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

marc86
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 27. Mär 2015, 14:40

Beitrag von marc86 »

Hey,

Ich habe den symhead Befehl in die neue mynomencl.ist hinzugefügt, es funktioniert leider immer noch nicht.
Da ich Gruppierungen haben möchte mit Überschriften A,B,C...Z und einer Gruppe für Symbole kann ich die ifthenelse Befehle nicht weglassen, sonst sind auch meine Gruppenüberschriften weg.
(Falls es nicht möglich ist mehr als 26 Gruppen zu erstellen kann ich evtl drauf hoffen, dass ich keine Abkürzung für einen Buchstaben habe und diesen dann für die Symbole benutzen kann)

Der Trick mit dem Item Argument funktioniert leider nicht. Falls dir das konkrete Beispiel fehlt, ich habe hier den wichtigen Code eingefügt:

\documentclass[a4paper,12pt,onecolumn,twoside,openright,headsepline,footsepline,bibliography=totoc]{scrbook}

\usepackage[a4paper, includehead, includefoot,left=2.5cm, right=2.5cm, top=2cm, bottom=2cm]{geometry}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}

%Gleitobjekte
	\usepackage{graphicx}

%Bildunterschriften caption.pdf
	\usepackage[format=hang,labelformat=default,labelfont=bf]{caption}

\pagestyle{headings}

\usepackage{booktabs}

%literaturverzeichnis
	\usepackage[super,compress,square]{natbib}
	\bibliographystyle{unsrt}



%Abkürzungsverzeichnis
	\usepackage[intoc]{nomencl}
	\usepackage{ifthen}
		%Überschrift
		\renewcommand{\nomname}{Abkürzungsverzeichnis} 
		%Abst. Abkürzung - Erläuterung
		\setlength{\nomlabelwidth}{.22\hsize}
		%Punkte Einfügen
		\renewcommand{\nomlabel}[1]{#1 \dotfill}
		%Abstand der Abkürzungen zueinander
		\setlength{\nomitemsep}{-\parskip} %geringerer Abstand mit \parsep
		%Seitenzahl
		%\renewcommand{\pagedeclaration}[1]{\dotfill #1} 	bei usepackage refpage einfügen	
		%Übereinanderliegende Punkte
		\renewcommand{\dotfill}{\leaders\hbox to 5pt{\hss.\hss}\hfill}
		%Gruppierung
		\renewcommand{\nomgroup}[1]{%
			\ifthenelse{\equal{#1}{1}}{\item[\textbf{Symbole}]}{%
			\ifthenelse{\equal{#1}{A}}{\item[\textbf{A}]}{%
			\ifthenelse{\equal{#1}{B}}{\item[\textbf{B}]}{%
			\ifthenelse{\equal{#1}{C}}{\item[\textbf{C}]}{%
			\ifthenelse{\equal{#1}{D}}{\item[\textbf{D}]}{%
			\ifthenelse{\equal{#1}{E}}{\item[\textbf{E}]}{%
			\ifthenelse{\equal{#1}{F}}{\item[\textbf{F}]}{%
			\ifthenelse{\equal{#1}{G}}{\item[\textbf{G}]}{%
			\ifthenelse{\equal{#1}{H}}{\item[\textbf{H}]}{%
			\ifthenelse{\equal{#1}{I}}{\item[\textbf{I}]}{%
			\ifthenelse{\equal{#1}{J}}{\item[\textbf{J}]}{%
			\ifthenelse{\equal{#1}{K}}{\item[\textbf{K}]}{%
			\ifthenelse{\equal{#1}{L}}{\item[\textbf{L}]}{%
			\ifthenelse{\equal{#1}{M}}{\item[\textbf{M}]}{%
			\ifthenelse{\equal{#1}{N}}{\item[\textbf{N}]}{%
			\ifthenelse{\equal{#1}{O}}{\item[\textbf{O}]}{%
			\ifthenelse{\equal{#1}{P}}{\item[\textbf{P}]}{%
			\ifthenelse{\equal{#1}{Q}}{\item[\textbf{Q}]}{%
			\ifthenelse{\equal{#1}{R}}{\item[\textbf{R}]}{%
			\ifthenelse{\equal{#1}{S}}{\item[\textbf{S}]}{%
			\ifthenelse{\equal{#1}{T}}{\item[\textbf{T}]}{%
			\ifthenelse{\equal{#1}{U}}{\item[\textbf{U}]}{%
			\ifthenelse{\equal{#1}{V}}{\item[\textbf{V}]}{%
			\ifthenelse{\equal{#1}{W}}{\item[\textbf{W}]}{%
			\ifthenelse{\equal{#1}{X}}{\item[\textbf{X}]}{%
			\ifthenelse{\equal{#1}{Y}}{\item[\textbf{Y}]}{%
			\ifthenelse{\equal{#1}{Z}}{\item[\textbf{Z}]}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}
	%Erzeugung des Abkürzungsverzeichnis
	\makenomenclature
		%Aktualisieren des Abkürzungsverzeichnis
		%I: dann makeindex Diplomarbeit.nlo -s mynomencl.ist -o Diplomarbeit.nls
	
%Chemische Formelnamen
\usepackage{bpchem}

\begin{document}
	\pagenumbering{Roman}

%TITELSEITE

\subject{
	\includegraphics{logo}
}

\title{
	xxx
}

\publishers{
	\large{Durchgeführt~am}\\
	\medskip
	\textbf{\large{xxx}}\\
	\textbf{\large{xxx}}\\
	\textbf{\large{xxx}}\\
	\vspace{1cm}
	\large{xxx}\\
	\medskip
	\textbf{\large{xxx}}
}

\author{
	xxx\\
	\\
	vorgelegt von\\
	\textbf{xxx}\\
	aus xxx
}

\date{
	xxx
}

\maketitle

\include{Versicherung}

%Inhaltsverzeichnis
\tableofcontents

\newpage

\printnomenclature


%\include{Einleitung}
%\include{Problemstellung}
%\include{Hauptteil}

BLABLABLA
\nomenclature[1phi]{$\phi$}{Phi, Quantenausbeute}
\nomenclature[Nnmda]{NMDA}{\emph{N}-methyl-D-aspartat}
\nomenclature[Ccnb]{CNB}{Carboxy-2-nitrobenzyl}
\nomenclature[Ddnb]{DNB}{2,2-Dinitrobenzhydryl}
\nomenclature[Ddcnb]{DCNB}{4-Dicarboxy-2-nitrobenzyl}
\nomenclature[Aacn]{ACN}{Acetonitril}
\nomenclature[Nnb]{NB}{2-Nitrobenzyl}
\nomenclature[Ddmnb]{DMNB}{4,5-Dimethoxy-2-nitrobenzyl}
\nomenclature[Mmdnb]{MDNB}{4,5-Methylendioxy-2-nitrobenzyl}

%\include{Zusammenfassung}

%Literatur

\bibliography{literatur}


\end{document}

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

Beitrag von rais »

marc86 hat geschrieben: Ich habe den symhead Befehl in die neue mynomencl.ist hinzugefügt, es funktioniert leider immer noch nicht.
Da ich Gruppierungen haben möchte mit Überschriften A,B,C...Z und einer Gruppe für Symbole kann ich die ifthenelse Befehle nicht weglassen, sonst sind auch meine Gruppenüberschriften weg.
versteh ich nicht. Welchen Sinn soll es haben, erst auf z. B. `A' zu testen, um dann eben dieses `A' (fett) auszugeben?
Nicht nur sind mit dervon mir beschriebenen Methode alle Unterüberschriften (hier Symbole, A, C, D, M und N) vorhanden, die Punkte vom \dotfill tauchen auch gar nicht erst auf.
\documentclass{scrbook}
\begin{filecontents}{mynomencl.ist}
keyword    "\\nomenclatureentry"
preamble   "\\begin{thenomenclature} \n"%
postamble  "\n\n\\end{thenomenclature}\n" group_skip "\n"
delim_0    ""
delim_1    ""
delim_2    ""
heading_prefix "\n \\nomgroup{"
heading_suffix "}\n"
headings_flag  1
symhead_positive "Symbole"
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}

%Abkürzungsverzeichnis
   \usepackage[intoc]{nomencl}
   \usepackage{ifthen}
      %Überschrift
      \renewcommand{\nomname}{Abkürzungsverzeichnis}
      %Abst. Abkürzung - Erläuterung
      \setlength{\nomlabelwidth}{.22\hsize}
      %Punkte Einfügen
      \renewcommand{\nomlabel}[1]{#1 \dotfill}
      %Abstand der Abkürzungen zueinander
      \setlength{\nomitemsep}{-\parskip} %geringerer Abstand mit \parsep
      %Übereinanderliegende Punkte
      \renewcommand{\dotfill}{\leaders\hbox to 5pt{\hss.\hss}\hfill}
      %Gruppierung
      \renewcommand{\nomgroup}[1]{%
  \item[\parbox{\nomlabelwidth}{\textbf{#1}}]~
}
   %Erzeugung des Abkürzungsverzeichnis
   \makenomenclature
      %Aktualisieren des Abkürzungsverzeichnis
      %I: dann makeindex Diplomarbeit.nlo -s mynomencl.ist -o Diplomarbeit.nls
   
\begin{document}
%Inhaltsverzeichnis
\tableofcontents
\printnomenclature
BLABLABLA
\nomenclature[1phi]{$\phi$}{Phi, Quantenausbeute}
\nomenclature[Nnmda]{NMDA}{\emph{N}-methyl-D-aspartat}
\nomenclature[Ccnb]{CNB}{Carboxy-2-nitrobenzyl}
\nomenclature[Ddnb]{DNB}{2,2-Dinitrobenzhydryl}
\nomenclature[Ddcnb]{DCNB}{4-Dicarboxy-2-nitrobenzyl}
\nomenclature[Aacn]{ACN}{Acetonitril}
\nomenclature[Nnb]{NB}{2-Nitrobenzyl}
\nomenclature[Ddmnb]{DMNB}{4,5-Dimethoxy-2-nitrobenzyl}
\nomenclature[Mmdnb]{MDNB}{4,5-Methylendioxy-2-nitrobenzyl}
\end{document}
das Teil kannst Du in einem leeren Orner speichern; die hier beim ersten LaTeX-Lauf anzulegende mynomencl.ist wird nicht erzeugt,wenn bereits eine Datei dieses Namens vorhanden ist.

Ggf. poste Deine .ilg-Datei.

MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

marc86
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Fr 27. Mär 2015, 14:40

Beitrag von marc86 »

Es funktioniert! Ich versuche gerade nachzuvollziehen was da passiert ist.
Den folgenden Befehl braucht man also nur ein Mal um die mynomencl.ist auszugeben:
\begin{filecontents}{mynomencl.ist} 
keyword    "\\nomenclatureentry" 
preamble   "\\begin{thenomenclature} \n"% 
postamble  "\n\n\\end{thenomenclature}\n" group_skip "\n" 
delim_0    "" 
delim_1    "" 
delim_2    "" 
heading_prefix "\n \\nomgroup{" 
heading_suffix "}\n" 
headings_flag  1 
symhead_positive "Symbole" 
\end{filecontents} 

Wobei mir
heading_prefix "\n \\nomgroup{" 
heading_suffix "}\n" 
headings_flag  1 
symhead_positive "Symbole" 
die Gruppe "Symbole" erstellt wird und in der Präfix mit 1 zugewiesen wird.

Wenn ich nun also eine weitere Gruppe einfügen möchte, müsste ich folgende Befehlszeile in der mynomencl.ist hinzufügen:
heading_prefix "\n \\nomgroup{" 
heading_suffix "}\n" 
headings_flag  2 
symhead_positive "Eine weitere Gruppe" 

Und mit dem folgenden Befehl fügt er die Gruppenüberschriften ein:
\renewcommand{\nomgroup}[1]{% 
  \item[\parbox{\nomlabelwidth}{\textbf{#1}}]~ 
} 

Vielen Dank für deine Hilfe, alleine wäre ich da nie drauf gekommen 8)

Antworten