Frage zur eigenen Beantwortung - weitere Antworten sind aber willkommen.

Hallo!

Erstellt man mit nomencl ein Abkürzungsverzeichnis (Minimalbsp. siehe unten), reicht Komplieren mit pdfLaTeX nicht, um das Abbildungsverzeichnis anzuzeigen. Hierfür muß erst die Datei testdokument.nls erstellt werden: Dazu wird in der Kommandozeile das Zeilverzeichnis (cd C:/Dokumente/...) gewählt und

makeindex testdokument.nlo -s nomencl.ist -o testdokument.nls

eingegeben, und das, wenn das Abkürzungsverzeichnis angezeigt werden soll, nach jeder Ergänzung eines Eintrages (!).

Das ist natürlich müßig und auch wenig elegant. Die Frage ist also:

Wie läßt sich das automatisieren, m.a.W. per Mausklick umsetzen?

% !TEX makeindex -s nomencl.ist -o document.nls -t document.nlg document.nlo
% das ist testdokument.tex
\documentclass[parskip=full-]{scrreprt}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[ngerman]{babel}

% Abkürzungsverzeichnis: =================
% Näheres siehe z.B.
% http://strobelstefan.org/?p=153
% http://latex.quark007.de/blog/2010/12/13/abkurzungsverzeichnis-mit-nomencl/
\usepackage[intoc]{nomencl}  %intoc = nomcl auch im toc anzeigen
% Befehl umbenennen in abk
\let\abk\nomenclature
% Überschrift
\renewcommand{\nomname}{Abkürzungsverzeichnis}
% Punkte zw. Abkürzung und Erklärung
\setlength{\nomlabelwidth}{.20\hsize}
\renewcommand{\nomlabel}[1]{#1 \dotfill}
% Zeilenabstände verkleinern
\setlength{\nomitemsep}{-\parsep}
\makenomenclature
% Anleitung: %%%%%%%%%%
%  Nach Kompilieren in Kommandozeile Zielverzeichnus wählen (cd ...),  dann
%       makeindex testdokument.nlo -s nomencl.ist -o testdokument.nls
%  eingeben! => nls-Datei wird erzeugt. 
%  Dann nochmal Kompilieren.
%================================

%===========
\begin{document}
%===========
\tableofcontents
\printnomenclature

\chapter{Kapitel 1}
\section{Unterkapitel}
Die Abkürzung etc.\abk{etc.}{et cetera} steht im Abkürzungsverzeichnis. \\

Die Abkürzung etc.\nomenclature{z.B.}{zum Beispiel} steht im Abkürzungsverzeichnis.

Auch die Abkürzung usw. \abk{usw.}{und so weiter} steht im Abkürzungsverzeichnis.

Die Abkürzung usw. \abk{bzw.}{beziehungsweise} steht im Abkürzungsverzeichnis.


\printnomenclature
%===========
\end{document}
%===========

gefragt 05 Mai '14, 12:12

cis's gravatar image

cis
9.5k94459491
Akzeptiert-Rate: 29%

bearbeitet 22 Mär '21, 22:57

stefan's gravatar image

stefan ♦♦
18.3k163148

1

Die Verwendung von \hsize in der Dokumentpräambel ist nicht sinnvoll, da das erst innerhalb von \begin{document} gesetzt wird und hier eher zufällig funktioniert.

Verwende stattdessen \AtBeginDocument{\setlength{\nomlabelwidth}{.20\columnwidth}}.

(01 Apr '15, 08:52) esdd

@esdd gab mir den Tip - die Antwort ist

  __ _ _ __ __ _ _ __ __ _
 / _` | '__/ _` | '__/ _` |
| (_| | | | (_| | | | (_| |
 \__,_|_|  \__,_|_|  \__,_|
 (arara - das offizielle Logo)

Neben den beiden im Code genannten Links hat mir dieser und dieser Link geholfen.

arara kennt das Paket nomencl, Kapitel 8 'Quick Start' (leider nicht auch das Paket nomentbl, was für mathematisch-naturwissenschaftliche Abkürzungsverzeichnisse sicher relevanter ist!); um es im aktuellen Dokument einzusetzen, müssen folgende Zeilen im Dokumentkopf ergänzt werden:

% arara: pdflatex
% arara: nomencl
% arara: pdflatex
% arara: pdflatex
% !arara: indent: { overwrite: false, output: outputfile.tex, trace: true }

(vollständiges Bsp. unten)

I. Möglichkeit: "Das wie o.g. ergänzte Dokument mit nomencl-Abkürzungsverzeichnis manuell kompilieren"

Das Dokument wird im Zielverzeichnis mit

arara dokumentname.tex

kompiliert. => Wir erhalten dokumentname.pdf mit fertigem Abkürzungsverzeichnis.

So ist das aber immer noch nicht automatisiert genug, daher

II. Möglichkeit: "arara im Editor einrichten" - hier beschrieben für 'TeXworks' (bei TeXlive m.W. standardmäßig dabei), bei anderen Editoren vermutlich ähnlich.

Zunächst suchen wir uns in unserer Tex-Distrubution den Speicherort der Anwendung arara.exe (bei TeXlive m.W. auch standardmäßig dabei).

Dann klickt man im TeXworks-Editor auf Bearbeiten --> Einstellungen und wählt dort den Reiter Textsatz und klickt dort auf das Pluszeichen, um ein neues Verarbeitungsprogramm anzulegen, dieses editieren wir wie folgt:

alt text

Hinweis: In der 1. Zeile heißt es '$fullname', 'DOLLARZEICHENfullname'.

Nach Bästigung mit OK steht uns arara zur Verfügung:

alt text

und damit kompilieren wir jetzt z.B. folgendes Dokument, was uns -automatisch- dokumentname.pdf, inklusive Abkürzungsverzeichnis ausgibt.

% !TEX makeindex -s nomencl.ist -o document.nls -t document.nlg document.nlo
% das ist testdokument.tex
%%%% arara %%%%%%%%%
% arara: pdflatex
% arara: nomencl
% arara: pdflatex
% arara: pdflatex
% !arara: indent: { overwrite: false, output: outputfile.tex, trace: true }
%%%%%%%%%%%%%%%%

\documentclass[parskip=full-]{scrreprt}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[ngerman]{babel}

% Abkürzungsverzeichnis: =================
% Näheres siehe z.B.
% http://strobelstefan.org/?p=153
% http://latex.quark007.de/blog/2010/12/13/abkurzungsverzeichnis-mit-nomencl/
\usepackage[intoc]{nomencl}  %intoc = nomcl auch im toc anzeigen
% Befehl umbenennen in abk
\let\abk\nomenclature
% Überschrift
\renewcommand{\nomname}{Abkürzungsverzeichnis}
% Punkte zw. Abkürzung und Erklärung
\setlength{\nomlabelwidth}{.20\hsize}
\renewcommand{\nomlabel}[1]{#1 \dotfill}
% Zeilenabstände verkleinern
\setlength{\nomitemsep}{-\parsep}
\makenomenclature
% Anleitung: %%%%%%%%%%
%  Nach Kompilieren in Kommandozeile Zielverzeichnus wählen (cd ...),  dann
%       makeindex testdokument.nlo -s nomencl.ist -o testdokument.nls
%  eingeben! => nls-Datei wird erzeugt. 
%  Dann nochmal Kompilieren.
%================================

%===========
\begin{document}
%===========
\tableofcontents
\printnomenclature

\chapter{Kapitel 1}
\section{Unterkapitel}
Die Abkürzung etc.\abk{etc.}{et cetera} steht im Abkürzungsverzeichnis. \\

Die Abkürzung etc.\nomenclature{z.B.}{zum Beispiel} steht im Abkürzungsverzeichnis.

Auch die Abkürzung usw. \abk{usw.}{und so weiter} steht im Abkürzungsverzeichnis.

Die Abkürzung usw. \abk{bzw.}{beziehungsweise} steht im Abkürzungsverzeichnis.


\printnomenclature
%===========
\end{document}
%===========

alt text

Permanenter link

beantwortet 05 Mai '14, 12:22

cis's gravatar image

cis
9.5k94459491
Akzeptiert-Rate: 29%

bearbeitet 22 Mär '21, 22:58

stefan's gravatar image

stefan ♦♦
18.3k163148

Bei Verwendung von TeXworks als Editor kann man den benötigten Aufruf von makeindex über den Konfigurationsdialog Textsatz über den Plus-Knopf rechts unten einen neuen Befehl konfigurieren.

TeXworks Textsatz

Anschließend kann man den makeindex-Aufruf für nomencl über den zugehörigen Eintrag im Popdown-Menü für das auszuführende Programm neben dem gründen Pfeil auswählen:

TeXworks Popdownmenü

und durch Klick auf den grünen Pfeil ausführen.

Alternativ zum Popdown-Menü kann man den neuen Eintrag nomencl natürlich auch über das Menü Textsatz in der Menüleiste auswählen.

Für den anschließenden pdflatex-, xelatex- oder lualatex-Lauf muss man natürlich danach die Programmauswahl wieder zurückstellen.

Permanenter link

beantwortet 02 Apr '15, 18:57

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 02 Apr '15, 18:59

Das Programm latexmk kann auch darauf konfiguriert werden, den für nomencl notwendigen Aufruf von makeindex durchzuführen. Dazu muss man latexmk zusätzlich die folgende perl-Funktion übergeben:

add_cus_dep("nlo","nls",0,"do_nomencl"); sub do_nomencl { system( "makeindex -s nomencl.ist -o \"$_[0].nls\" -t \"$_[0].nlg\" \"$_[0].nlo\"" ); }

Da der dritte Parameter des add_cus_dep-Aufrufs eine 0 ist, findet der Aufruf der Funktion do_nomencl und damit der makeindex-Systemaufruf nur statt, wenn nach dem LaTeX-Lauf eine nls-Datei vorhanden ist. Die Definition der neuen Funktion stört daher auch nicht bei Projekten, die nomencl gar nicht verwenden.

Die Verwendung der neuen Funktion geht beispielsweise über Option -e unter Linux per:

latexmk -pdf -e 'add_cus_dep("nlo","nls",0,"do_nomencl"); sub do_nomencl { system( "makeindex -s nomencl.ist -o \"$_[0].nls\" -t \"$_[0].nlg\" \"$_[0].nlo\"" ); }' test

Dabei ist test der Basisname des Hauptdokument, test.tex.

Alternativ kann man die entsprechende Funktion auch in die Konfigurationsdatei von latexmk einfügen. Siehe dazu die Anleitung des Programms.

Editoren, die auf die Verwendung von latexmk konfiguriert werden können, beispielsweise TeXstudio oder TeXworks, können so auch direkt auf den bedarfsweisen Aufruf von makeindex für nomencl konfiguriert werden.

Permanenter link

beantwortet 01 Apr '15, 10:36

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 03 Apr '15, 10:22

Bei Verwendung von TeXstudio als Editor kann man den benötigten Aufruf von makeindex über den Konfigurationsdialog für das Erzeugen als Benutzerbefehl hinzufügen:

TeXstudio konfigurieren

Anschließend steht der Befehl dann im Menü Tools im Untermenü Benutzer oder auch per Tastenkombination (im Beispiel Alt+Shift+F1 zur Verfügung. Wie bei TeXstudio üblich führt man den Befehl dann aus, wenn man ihn braucht. Man kann natürlich auch den Befehl zum Erstellen & Anzeigen in demselben Konfigurationsdialig entsprechend anpassen. Dies gilt dann aber allgemein.

Menüeintrag

Permanenter link

beantwortet 01 Apr '15, 10:12

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×117
×38
×30
×3

gestellte Frage: 05 Mai '14, 12:12

Frage wurde gesehen: 29,978 Mal

zuletzt geändert: 03 Apr '15, 10:22