
Wie muss ich die arara
folgenden Befehle ändern, damit auch der Namensindex ausgedruckt wird? So wie es aussieht, bekomme ich nur den Hauptindex ausgedruckt.
% arara: pdflatex
% arara: bibtex
% arara: pdflatex
% arara: pdflatex
% arara: nomencl
% arara: makeindex
% arara: pdflatex
% arara: pdflatex
% !arara: indent: { overwrite: false, output: outputfile.tex, trace: true }
\documentclass{memoir}
\usepackage[backend=bibtex,style=numeric]{biblatex}
\addbibresource{mybib.bib}
\usepackage{nomencl}
\makenomenclature
\makeindex
\makeindex[names]
\begin{document}
\chapter{Area} \label{chap:area}
\section{Area of a circle} \label{sec:circle-area}
Consult \textcite{Archimedes200} and \textcite{EulerE1776}.
\index[names]{Archimedes}
\index[names]{Euler, Leonhard}
The area $A$
\nomenclature{$A$}{area}%
of a circle with radius $r$
\nomenclature{$r$}{radius of circle}%
is defined as
\begin{equation}
A = \pi r^{2}.
\end{equation}
\index{area!of circle}
\index{area}
\index{circle!area of}
\printbibliography
\printnomenclature
\renewcommand{\indexname}{Index of Names}
\printindex[names]
\renewcommand{\indexname}{Index}
\printindex
\end{document}
Hier ist die Datei mybib.bib
:
@article{Archimedes200,
author = {Archimedes},
title = {Pi's the limit},
journal = {Syracuse J. Gastronom.\ Math.},
year = {200BCE},
volume = {10},
pages={\textsc{CCCXV}--\textsc{CCCXIV}}
}
@article{EulerE1776,
author = {Euler, Leonhard},
title = {All about E},
journal = {Math.\ Psychol.},
year = {1776},
volume = {4},
pages={1--2718}
}
Antwort1
Dank geht an Paulo, der mir Folgendes gezeigt hat: Alle arara
Regeln haben einen impliziten Parameter namens files
, der eine (durch Kommas getrennte) Liste von Dateinamen annimmt. arara
durchläuft dann diese Liste und wendet diese Anweisung auf jedes Element in der Liste an.
Ein weiterer Punkt ist, dass Sie die beiden pdfLaTeX-Durchläufe zwischen BibTeX und MakeIndex nicht benötigen: Der erste Durchlauf von pdfLaTeX reicht aus, um die Hilfsdateien für die externen Tools zu generieren. Die letzten beiden Durchläufe von pdfLaTeX sind erforderlich, um die generierten Bibliografien/Indizes einzubinden und Querverweise zu sortieren.
Ihre Liste der Anweisungen könnte wie folgt geändert werden:
% arara: pdflatex
% arara: bibtex
% arara: makeindex
% arara: makeindex: { files: [ names ] }
% arara: pdflatex
% arara: pdflatex
und ersetzen Sie die beiden makeindex
Zeilen möglicherweise durch nur eine (vorausgesetzt, Ihre Hauptdatei .tex
ist main.tex
): % arara: makeindex: { files: [ main, names ] }
.
Oder, wenn Sie arara
clever sein wollen und unnötige Schritte überspringen (ErklärungHier):
% arara: pdflatex: { draft: yes }
% arara: bibtex if changed (toFile('mybib.bib'))
% arara: --> || found ('log', 'Warning: Citation')
% arara: makeindex: { files: [ main, names ] } if changed ('idx')
% arara: pdflatex until !found('log', '\\(?(R|r)e\\)?run (to get|LaTeX)')
Eine weitere Option, wie barbarabeeton im Kommentar erwähnte, ist das imakeidx
Paket, das makeindex
innerhalb von pdfLaTeX ausgeführt wird. Da makeindex
es sich um ein vertrauenswürdiges Programm handelt, darf es in eingeschränktem Shell-Escape ausgeführt werden, das normalerweise aktiviert ist. Das imakeidx
Paket kümmert sich bereits um mehrere Indizes und alles.
Um es zu verwenden, müssen Sie es lediglich mit laden \usepackage{makeindex}
und \makeindex[names]
durch ersetzen \makeindex[name=names]
.
Das repeatindex
von Ihnen verwendete Paket scheint jedoch mit ... nicht kompatibel zu sein. imakeidx
Ich werde versuchen, den Grund dafür herauszufinden.
Oder, wenn Sie lieber wie der coole Junge aussehen möchten (wie ich, der das alles gemacht hat, bevor ihm der files
Parameter mitgeteilt wurde :-) und es auf die harte Tour machen möchten, können Sie eine kleine Änderung an der makeindex.yaml
Datei vornehmen und eine basename
Option hinzufügen, die den Basisnamen der Indexdatei ( names
in Ihrem Fall ) übernimmt und damit anstelle des aktuellen Dateinamens arbeitet.
Fügen Sie zunächst unterhalb der arguments:
Zeile makeindex.yaml
die Option selbst hinzu:
- identifier: basename
flag: >
@{
parameters.basename
}
(Aus irgendeinem Grund mag Java es anscheinend nicht, wenn Sie nur verwenden base
, daher habe ich das ausführlichere verwendet basename
.) Wir setzen diese Option ohne Standardwert, sodass wir verwenden, wenn sie leer ist getBasename(file)
.
Jetzt ändern wir den command:
Abschnitt, um diese Option zu verwenden:
command: >
@{
if (isEmpty(basename))
{ basename = getBasename(file); }
infile = basename.concat('.').concat(input);
outfile = [ '-o', basename.concat('.').concat(output) ];
logfile = [ '-t', basename.concat('.').concat(log) ];
return getCommand('makeindex', german, style, order, options,
logfile, infile, outfile);
}
zuerst prüfen wir, ob basename
leer ist. Wenn ja, verwenden wir den aktuellen Dateinamen von getBasename(file)
. Fahren Sie dann wie gewohnt fort, indem Sie die Erweiterungen der Eingabe-, Ausgabe- und Protokolldateien hinzufügen und dann die makeindex
ausführbare Datei aufrufen.
(zu Ihrer Information die vollständig geänderte Version der makeindex.yaml
Datei am Ende dieser Antwort)
Danach können Sie Ihre Anweisungen wie folgt ändern:
% arara: pdflatex
% arara: bibtex
% arara: makeindex
% arara: makeindex: { basename: names }
% arara: pdflatex
% arara: pdflatex
(Beachten Sie, dass ich die beiden pdflatex
Regeln zuvor entfernt habe makeindex
: Sie brauchen diese nicht.)
Und jetzt sollte der Index korrekt kompiliert sein.
Wenn Sie die Änderung nicht in der Originalkopie von vorgenommen haben makeindex.yaml
(was Sie wirklich tun sollten),nichtmakeindex.yaml
), dann müssen Sie die neue Datei in einem Ordner speichern und dann eine .araraconfig.yaml
Datei erstellen, die Folgendes enthält:
paths:
- '/path/to/the/folder/'
und legen Sie diese .araraconfig.yaml
in das aktuelle Arbeitsverzeichnis oder in Ihren USER_HOME
Ordner (weitere Informationen hierzu finden Sie im Arara-Handbuch, Kapitel 4). Wenn sich die makeindex.yaml
Datei auch im aktuellen Arbeitsverzeichnis befindet, können Sie sie - './'
in der zweiten Zeile der Konfigurationsdatei verwenden.
Vollständige makeindex.yaml
Datei:
!config
# Arara, the cool TeX automation tool
# Copyright (c) 2018, Paulo Roberto Massa Cereda
# All rights reserved.
#
# This rule is part of arara.
identifier: nmakeindex
name: MakeIndex
authors:
- Marco Daniel
- Paulo Cereda
commands:
- name: The MakeIndex software
command: >
@{
if (isEmpty(basename))
{ basename = getBasename(file); }
infile = basename.concat('.').concat(input);
outfile = [ '-o', basename.concat('.').concat(output) ];
logfile = [ '-t', basename.concat('.').concat(log) ];
return getCommand('makeindex', german, style, order, options,
logfile, infile, outfile);
}
arguments:
- identifier: basename
flag: >
@{
parameters.basename
}
- identifier: input
flag: >
@{
parameters.input
}
default: idx
- identifier: output
flag: >
@{
parameters.output
}
default: ind
- identifier: log
flag: >
@{
parameters.log
}
default: ilg
- identifier: german
flag: >
@{
isTrue(parameters.german, '-g')
}
- identifier: order
flag: >
@{
if ([ 'letter', 'word' ].contains(parameters.order)) {
return isTrue(parameters.order == 'letter', '-l', '');
}
else {
throwError('The provided order is invalid.');
}
}
- identifier: style
flag: "@{ [ '-s', parameters.style ] }"
- identifier: options
flag: >
@{
if (isList(parameters.options)) {
return parameters.options;
}
else {
throwError('I was expecting a list of options.');
}
}