Seite 1 von 1

[nomencl] Zwischenüberschriften im Abkürzungsverzeichnis

Verfasst: Fr 27. Mär 2015, 14:52
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)

Verfasst: Fr 27. Mär 2015, 16:55
von Johannes_B
Hast du schon in Abschnitt 5.1 der Dokumentation geschaut?

Verfasst: Sa 28. Mär 2015, 11:58
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?

Verfasst: Sa 28. Mär 2015, 17:25
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

Verfasst: Sa 28. Mär 2015, 18:36
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}

Verfasst: Sa 28. Mär 2015, 21:14
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

Verfasst: So 29. Mär 2015, 11:05
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)