PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Überschrift im Symbolverzeichnis



nano
12-04-2005, 11:24
Hallo,

ich erstelle für meine Diplomarbeit ein Symbolverzeichnis:

\usepackage[german]{nomencl}
...
\newcommand{\nomunit}[1]{%
\renewcommand{\nomentryend}{\hspace*{\fill}#1}}
...
\makeglossary
\begin{document}
...
\renewcommand{\nomname}{Symbolverzeichnis}
\cleardoublepage
\printglossary
...
\end{document}

Das liefert mir eine Seite mit "Symbolverzeichnis" als Überschrift.
Darunter sind dann in 3 Spalten Symbol, Beschreibung und Einheit aufgelistet.
Ich hätte gerne in der ersten Zeile in fetter Schrift genau diese drei Wörter über den Spaltenstehen, quasi als Spaltenüberschrift, Symbol, Beschreibung und Einheit. Darunter evtl. noch ein Strich und dann sollen die Symbole aufelistet werden.

Wie kann ich das machen?
Hat jemand eine Idee?

BoBm
12-10-2005, 14:46
Moin!

Hab da genau dasselbe Problem und würde zusätzlich noch gerne die drei Spalten einigermaßen gleich über die Seitenbreite aufgeteilt haben, momentan klebt die 3. Spalte ganz rechts, die ersten beiden hocken dafür dicht gedrängt am linken Seitenrand..

Hat jemand inzwischen rausgefunden wie das machbar ist?

countbela666
12-10-2005, 17:00
Wie so eine Variante angegangen werden kann, steht in der nomencl-Doku. Durch ein paar Neudefinitionen kann man an Stelle der Liste eine longtable-Umgebung für das Verzeichnis definieren, deren Kopfzeile dann zu Beginn jeder neuen Seite wiederholt wird. Unter anderem muss auch die Datei nomencl.ist angepasst werden, indem man ihr die folgenden zwei Zeilen anfügt:

item_0 ""
delim_t " \\\\\n"
Die so veränderte Styledatei sollte am besten umbenannt werden, z.B. in mynomencl.ist und ist dann im aktuellen Projektverzeichnis am besten aufgehoben. Makeindex muss dann natürlich auch mit diesem File aufgerufen werden, also:

makeindex [hauptdatei].nlo -s mynomencl.ist -o [hauptdatei].nls
Folgendes Minimalbeispiel enthält die besagte Neudefinition der nomenclature-Umgebung: (Vorsicht! Die Befehle sind an die aktuelle Version des nomencl-Pakets vom 24. September 2005 angepasst! Siehe auch die nomencl-Doku)

\documentclass{article}
\usepackage{nomencl,longtable}
%%%%%%%%%%%%%% zusätzliche unit-Spalte %%%%%%%%%%%%%%%%
\newcommand{\nomunit}[1]{%
\renewcommand{\nomentryend}{\hspace{2em}\hspace*{\ fill}#1}}
%%%%%%%%%%%%%% longtable an Stelle der Liste %%%%%%%%%%
\makeatletter
\def\@@@nomenclature[#1]#2#3{%
\def\@tempa{#2}\def\@tempb{#3}%
\protected@write\@nomenclaturefile{}%
{\string\nomenclatureentry{#1\nom@verb\@tempa @{\nom@verb\@tempa}&%
\begingroup\nom@verb\@tempb\protect\nomeqref{\thee quation}%
|nompageref}{\thepage}}%
\endgroup
\@esphack}
\def\thenomenclature{%
\@ifundefined{chapter}{\section*}{\chapter*}{\nomn ame}%
\nompreamble
\begin{longtable}[l]{@{}ll@{}}}
\def\endthenomenclature{%
\end{longtable}%
\nompostamble}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makenomenclature
\begin{document}
% Header der Tabelle
\nomenclature[0]{\textbf{Symbol}}{\textbf{Beschreibung}\nomunit{\t extbf{Einheit}}}
% beliebige Einträge
\nomenclature{x}{descr\nomunit{m}}
\nomenclature{a}{descr 2\nomunit{kg}}
\printnomenclature
\end{document}Grüße,
Marcel

//edit:
Wie immer Vorsicht beim Kopieren des Codes: die doppelten Leerzeichen sind nicht beabsichtigt und werden von der CODE-Umgebung des Forums verursacht. Diese Leerzeichen löschen.

BoBm
13-10-2005, 10:55
Vielen Dank!

Klappt alles bestens, hab bloß das usepackage colortbl rausnehmen müssen, da sonst die Einheiten nicht sauber untereinander stehen würden, is aber nicht wichtig..
Wäre es denn noch möglich, die Einträge der 3. Spalte linksbündig auszurichten?

Gruss, BoB

BoBm
20-10-2005, 20:10
Ok, noch ne Frage zu nomencl:
Hab das ganze dreispaltig und mit der longtable-Umgebung prima hingekriegt. Jetzt sollen die Einträge aber sinnvoll sortiert werden, am besten mit subgroups. Die Einbindung der subgroups funktionniert aber nicht, ich krieg immer Fehler in der nls-Datei (..perhaps a missing \item). Und zwar bei den subgroup-Einträgen \nomgroup. Ich denk mal, da stimmt was mit der nomencl.ist nichtmehr, aber was?
Hab sie, wie oben beschrieben geändert.

countbela666
20-10-2005, 21:59
Hi BoBm,

du wirst zur Definition der Subgroups wahrscheinlich den Code aus der nomencl-Doku übernommen haben. Das Dumme dabei ist, dass der nur für die Listenvariante des Verzeichnisses funktioniert, wir haben das jedoch als Tabelle ausgelegt, so das LaTeX innerhalb des Verzeichnisses mit \items nichts mehr anfangen kann. Probier mal folgenden Code (funktioniert, ist aber nicht besonders hübsch):

\documentclass{article}
\usepackage{nomencl,longtable,ifthen}
%%%%%%%%%%%%%% zusätzliche unit-Spalte %%%%%%%%%%%%%%%%
\newcommand{\nomunit}[1]{%
\renewcommand{\nomentryend}{\hspace{2em}\hspace*{\ fill}#1}}
%%%%%%%%%%%%%%%% Subgroup-Definition %%%%%%%%%%%%%%%%%%
\renewcommand{\nomgroup}[1]{%
\ifthenelse{\equal{#1}{L}}{\textbf{Lateinische Buchstaben}\cr}{%
\ifthenelse{\equal{#1}{G}}{\textbf{Griechische Buchstaben}\cr}{{\hspace{-.6em}}}}
}
%%%%%%%%%%%%%% longtable an Stelle der Liste %%%%%%%%%%
\makeatletter
\def\@@@nomenclature[#1]#2#3{%
\def\@tempa{#2}\def\@tempb{#3}%
\protected@write\@nomenclaturefile{}%
{\string\nomenclatureentry{#1\nom@verb\@tempa @{\nom@verb\@tempa}&%
\begingroup\nom@verb\@tempb\protect\nomeqref{\thee quation}%
|nompageref}{\thepage}}%
\endgroup
\@esphack}
\def\thenomenclature{%
\@ifundefined{chapter}{\section*}{\chapter*}{\nomn ame}%
\nompreamble
\begin{longtable}[l]{@{}ll@{}}}
\def\endthenomenclature{%
\end{longtable}%
\nompostamble}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makenomenclature
\begin{document}
% Header der Tabelle
\nomenclature[0]{\textbf{Symbol}}{\textbf{Beschreibung}\nomunit{\t extbf{Einheit}}}
% beliebige Einträge
\nomenclature[lx ]{x}{latein. x\nomunit{bla}}
\nomenclature[la ]{a}{latein. a\nomunit{bla}}
\nomenclature[gx ]{$\chi$}{griech. x\nomunit{bla}}
\nomenclature[ga ]{$\alpha$}{griech. a\nomunit{bla}}
\printnomenclature
\end{document}Grüße,
Marcel

wie immer Vorsicht mit den bösen Leerzeichen :D

BoBm
20-10-2005, 23:22
Hi Marcel,
vielen Dank nochmal! Klappt einwandfrei. Zum Thema Schönheit hab ich folgende Alternative anzubieten, is zwar auch nicht ganz sauber, sieht aber aus, wie ich es haben wollte:


%%%%%%%%%%%%%%%% Subgroup-Definition %%%%%%%%%%%%%%%%%%
\renewcommand{\nomgroup}[1]{{\vspace{.5em}}%
\ifthenelse{\equal{#1}{G}}{\textbf{Griechische Buchstaben}\cr}{%
\ifthenelse{\equal{#1}{L}}{\textbf{Lateinische Buchstaben}\cr}{{\hspace{-.6em}}{\vspace{.5em}}}}
}
und nach \begin{document}:


\nomenclature[gz ]{}{\nomunit{}}


Grüße, BoB

BoBm
21-10-2005, 11:53
So, eine hoffentlich letzte Frage:

Eigentlich soll die longtable-Umgebung ja bewirken, dass meine Spaltenüberschriften auf jeder Seite neu erscheinen. Tun sie aber nicht. Ich kann zwar manuell in der *.nls-Datei in der entsprechenden Zeile der Überschriftendeklaration \\ durch \endhead ersetzen, dann geht´s. Dass sollte jedoch auch automatisch gehen, oder?
Gruss BoB

xyceat
25-01-2010, 16:44
ich hoffe es killt mich jetzt keiner, weil ich so einen alten thread hochhole.

Aber: Ich hab den Code von countbela666 umgesetzt aus Beitrag 3. Der funktioniert super. Aber zwei kleine Sachen stören mich, und ich bekomm sie nicht hin.

Zum einen:

das Symbolverzeichnis wird nicht mehr im Inhaltsverzeichnis gelistet sobald ich seinen code einbaue.

Zum anderen: Kann ich die Spalte "Einheit" auch zwischen die Spalte "Symbol" und " Beschreibung" einfügen ? Ich versuch irgendwie den Quelltext von ihm zu verstehen, komm aber nicht dahinter....

BoBm
26-01-2010, 08:57
Also ich mach das inzwischen so:

\RequirePackage{ifthen}
\renewcommand{\nomgroup}[1]{
\ifthenelse{\equal{#1}{B}}{\item[\large{\textbf{Lateinische Buchstaben}}]}{
\ifthenelse{\equal{#1}{C}}{\item[\large{\textbf{Griechische Buchstaben}}]}{
\ifthenelse{\equal{#1}{D}}{\item[\large{\textbf{Indizee }}]}{
\ifthenelse{\equal{#1}{A}}{\item[\large{\textbf{Abkürzungen}}]}{
\ifthenelse{\equal{#1}{E}}{\item[\large{\textbf{Regelungstechnische Größen }}]}{}}}}}}

\newcommand{\nomunit}[1]{\renewcommand{\nomentryend}{\hspace*{\fill}#1}}

\makenomenclature

Weiter unten, nach \begin{document} sollte dann


\markright{Symbolverzeichnis}
\printnomenclature[5cm]
\clearpage

stehen.

Ich hab mit Miktex 2.7 gearbeitet und in meine Kopfzeile war die Folgende:

\documentclass[12pt,a4paper,titlepage,abstracton,appendixprefix,c hapterprefix,headsepline,BCOR12mm,bibliography=tot oc,numbers=noenddot,index=totoc,listof=totoc,capti ons=tableheading,parskip=half]{scrreprt}

Einträge in das Symbolverzeichnis erzeuge ich mit

\nomenclature[Bp ]{p}{Druck\nomunit{bar}}

Die über den \nomunit-Befehl erzeugte Eintrag wird an das Ende der Zeile gehangen. Keine Ahnung, wie man das ändert. Zur Not vertauschst du das einfach schon bei der Eingabe. Meine Ausgabe erzeugt auch die überflüssigen Spaltenüberschriften "Einheit" oder "Beschreibung" nicht.

rais
26-01-2010, 10:02
Moin moin,

ich hoffe es killt mich jetzt keiner, weil ich so einen alten thread hochhole.

wieso? Solange es mit dem Thema zu tun hat, ist das imho Ok.


das Symbolverzeichnis wird nicht mehr im Inhaltsverzeichnis gelistet sobald ich seinen code einbaue.

siehe Änderung von \thenomenclature


Zum anderen: Kann ich die Spalte "Einheit" auch zwischen die Spalte "Symbol" und " Beschreibung" einfügen ? Ich versuch irgendwie den Quelltext von ihm zu verstehen, komm aber nicht dahinter....
kann man machen, denk aber dran, wenn Du einheitenlose Symbole verwendest, daß Du dann diese Einheitenspalte überspringen musst -- der Einfachheit halber hab ich dazu ein Makro `\nounit' gebaut (vgl. die Ausgabe bei ya--yd):


\documentclass{article}
\usepackage[intoc]{nomencl}
\usepackage{longtable}
%%%%%%%%%%%%%% zusätzliche unit-Spalte %%%%%%%%%%%%%%%%
\newcommand{\nomunit}[1]{%
\parbox[t]{4.5em}{#1}}
\newcommand*\nounit{\nomunit{~}}
%%%%%%%%%%%%%% longtable an Stelle der Liste %%%%%%%%%%
\makeatletter
\def\@@@nomenclature[#1]#2#3{%
\def\@tempa{#2}\def\@tempb{#3}%
\protected@write\@nomenclaturefile{}%
{\string\nomenclatureentry{#1\nom@verb\@tempa @{\nom@verb\@tempa}&%
\begingroup\nom@verb\@tempb\protect\nomeqref{\thee quation}%
|nompageref}{\thepage}}%
\endgroup
\@esphack}
\def\thenomenclature{%
\@ifundefined{chapter}%
{%
\section*{\nomname}
\if@intoc\addcontentsline{toc}{section}{\nomname}\ fi%
}%
{%
\chapter*{\nomname}
\if@intoc\addcontentsline{toc}{chapter}{\nomname}\ fi%
}%
\nompreamble
\begin{longtable}[l]{@{}ll@{}}
\textbf{Symbol}&\nomunit{\textbf{Einheit}}\textbf{Beschreibung}\ta bularnewline
\endhead
}
\def\endthenomenclature{%
\end{longtable}%
\nompostamble}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makenomenclature
\begin{document}
\tableofcontents
foo
% beliebige Einträge
\nomenclature{x}{\nomunit{m}descr}
\nomenclature{a}{\nomunit{kg}descr 2}
\nomenclature{ya}{falsch}
\nomenclature{yb}{\nomunit{}falsch}
\nomenclature{yc}{\nomunit{~}geht}
\nomenclature{yd}{\nounit richtig}
\printnomenclature
\end{document}

MfG

CyrusField
18-10-2010, 23:44
\newcommand{\nomunit}[1]{%
\parbox[t]{4.5em}{#1}}
\newcommand*\nounit{\nomunit{~}}



...und schon wieder grab' einen so alten Thread aus... Mea maxima Culpa!

Ich habe ebenfalls mein Verzeichnis in Gruppen aufgeteilt - habe jedoch die Vorgabe, dass der Raum zwischen Beschreibung und Einheit mit Punkten aufgefüllt werden soll.

Realisiert habe ich das über
[CODE]
\newcommand{\nomunit}[1]{%
\renewcommand{\nomentryend}{\dotfill #1}}
[\CODE]

Die Punkte werden jetzt allerdings überall gesetzt, d.h. auch da wo \nounit bei Einträgen ohne Einheit aufgerufen wird - \nomendentry wurde ja neu definiert... :(

Wie schaffe ich es also, die Einträge, die ohne Einheit bleiben, von ihren Punkten zu "befreien"?


Grüße
Cyrus

rais
20-10-2010, 17:52
Moin moin,

...und schon wieder grab' einen so alten Thread aus... Mea maxima Culpa!

Ich habe ebenfalls mein Verzeichnis in Gruppen aufgeteilt - habe jedoch die Vorgabe, dass der Raum zwischen Beschreibung und Einheit mit Punkten aufgefüllt werden soll.

Realisiert habe ich das über
[CODE]
\newcommand{\nomunit}[1]{%
\renewcommand{\nomentryend}{\dotfill #1}}
[\CODE]

Die Punkte werden jetzt allerdings überall gesetzt, d.h. auch da wo \nounit bei Einträgen ohne Einheit aufgerufen wird - \nomendentry wurde ja neu definiert... :(

Wie schaffe ich es also, die Einträge, die ohne Einheit bleiben, von ihren Punkten zu "befreien"?

lass den \nomunit/\nounit doch einfach mal weg.
Den \nounit hab ich mal gebaut, um bei der Anordnung
Symbol/Beschreibung die Einheit überspringen zu können (ohne dafür direkt eine eigene Spalte vorsehen zu müssen); Deiner Beschreibung nach hast Du die Anordnung
Symbol/Beschreibung.
BTW: nutzt Du überhaupt longtable und eine entsprechend angepasste Stildatei (vgl. Marcels Beitrag, #3)? Wenn nicht, wäre es vllt angebracht, daß Du einen neuen Thread erstellst (und darin auch gleich ein eigenes Minimalbeispiel zur Verfügung stellst).

MfG

CyrusField
21-10-2010, 22:20
Manchmal sieht man den Wald vor lauter Bäumen nicht...

Ich habe schlicht und einfach vergessen, den Pfad für den automatischen Makeindex-Durchlauf von TeXnicCenter an meine neue mynomencl.cfg anzupassen.

Klar, dass dann alle Änderungen ins Leere gelaufen sind :rolleyes:


Edit:
Aber ja - das \nounit weglassen hat auch geholfen :)