PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Formel in nomenclature



c_verres
13-12-2007, 13:54
Hallo,

nomenclature erstellt bei mir wunderbar ein Abkürzungs- und Symbolverzeichnis.

Aber wenn ich z. B. mit
\nomenclature{$\int dx$}{Integral} eine Formel in das Verzeichnis aufnehmen will, heißt es nur
Scanning input file doku.nlo ... done (12 entries accepted, 1 rejected)

Kann ich irgendwie erzwingen, dass die Formel trotzdem aufgenommen wird?

c_verres
13-12-2007, 21:35
Keiner ne Idee?

trinix
14-12-2007, 08:32
Evtl. funktioniert das mit:



\begin{math} \int dx \end{math}

oder einfach nur


\( \int dx \)

c_verres
14-12-2007, 09:21
Evtl. funktioniert das mit:



\begin{math} \int dx \end{math}

oder einfach nur


\( \int dx \)


Leider nein.

rais
14-12-2007, 17:12
Moin moin,


Aber wenn ich z. B. mit
\nomenclature{$\int dx$}{Integral} eine Formel in das Verzeichnis aufnehmen will, heißt es nur
Scanning input file doku.nlo ... done (12 entries accepted, 1 rejected)

an der Formel liegt es nicht -- zumindest funzt es so bei mir:


\documentclass{article}
\usepackage{nomencl}
\makenomenclature
\begin{document}
$\int dx$\nomenclature{$\int dx$}{ein Integral\dots}
\printnomenclature
\end{document}

Erstelle also bitte ein Minimalbeispiel.
MfG,

c_verres
16-12-2007, 08:49
\documentclass{article}
\usepackage{nomencl}
\makenomenclature
\begin{document}
$\int dx$\nomenclature{$\int dx$}{ein Integral\dots}
\printnomenclature
\end{document}



Ok, das klappt auch bei mir!

Warum aber klappt das hier nicht?


\documentclass{article}
\usepackage{nomencl}
\usepackage{braket}
\makenomenclature
\begin{document}
$\Braket{a|b}$\nomenclature{$\Braket{a|b}$}{Braket-Notation}
\printnomenclature
\end{document}

rais
16-12-2007, 12:26
Ok, das klappt auch bei mir!

Warum aber klappt das hier nicht?


\documentclass{article}
\usepackage{nomencl}
\usepackage{braket}
\makenomenclature
\begin{document}
$\Braket{a|b}$\nomenclature{$\Braket{a|b}$}{Braket-Notation}
\printnomenclature
\end{document}
weil das |-Zeichen für makeindex eine besondere Bedeutung hat. Behelfen könntest Du Dir z. B. so:


\documentclass{article}
\usepackage{nomencl}
\usepackage{braket}
\makenomenclature
\newcommand\dummy{}
\begin{document}
\renewcommand\dummy{\Braket{a|b}}
$\Braket{a|b}$\nomenclature{$\dummy$}{Braket-Notation}
\printnomenclature
\end{document}
, dadurch taucht dieses | nicht mehr direkt in der von makeindex bearbeiteten .nlo-Datei auf -- wenn Du das öfter brauchst, dann kommt die Redifinition aber vermutlich an falscher Stelle...
Unglücklicherweise wird beim nomencl-Paket dieses Zeichen direkt verwendet, um es umdefinieren zu können, muß dies an zwei Stellen geschehen: in Deiner Präambel und in der .ist-Datei.
Letzteres ist leicht: kopiere Dir die nomencl.ist nach z. B. mynomencl.ist, dort ergänzt Du eine Zeile mit


encap '+'
(vorausgesetzt, '+' willst Du nicht auch mit in der Nomenklatur mit aufnehmen); diese mynomencl.ist speicherst Du erstmal in Deinem Projektordner.
Die Änderung in der Präambel ist da schon etwas umfangreicher;-)


%foo.tex:
\documentclass{article}
\usepackage{nomencl}
\usepackage{braket}
\newcommand\nomencapchar{+}%<--gleich mit encap in der .ist setzen!
\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}%
\nomencapchar nompageref}{\thepage}}%
\endgroup
\@esphack}
\makeatother
\makenomenclature
\begin{document}
$\Braket{a|b}$\nomenclature{$\Braket{a|b}$}{Braket-Notation}
\printnomenclature
\end{document}

und kompiliert wird dann entsprechend mit


latex foo.tex
makeindex foo.nlo -s mynomencl.ist -t foo.nlg -o foo.nls
latex foo.tex
latex foo.tex

MfG,

c_verres
17-12-2007, 12:38
Super! Das funktioniert.

Vielen Dank!

:)