... also ich frag mich eh: Sollte man das nicht mit dem Literaturverzeichnis verbinden? Und backref'en?

Danke!

alt text

Open in writeLaTeX
%\documentclass[]{scrreprt}   %listof = totoc
\documentclass[varwidth, margin=10pt]{standalone} 
   \usepackage{xcolor}
   \pagecolor{green!20!yellow}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä},  germandbls={ß}}
\usepackage[ngerman]{babel}

%=======
\begin{document}
%=======
Prinzipiell so: \\

\textbf{Namensverzeichnis:} \\ \\
\textsc{Einstein, Albert} (1879-1955): deutscher Physiker, ....  (siehe S.1, 2, 3 und [Ein1950], [Ein1953])\\
\textsc{Fourier, Joseph} (1768-1830): französischer Physiker, .... (siehe S.1, 2, 3 und [Fou1812])

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

gefragt 11 Jun '14, 01:42

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%


Das ist eine schöne Anwendung für ein Paket wie splitindex:

Open in writeLaTeX
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname-aut.mst}
delim_0 "\\begin{indexpagenumbers}"
delim_t "\\end{indexpagenumbers}"
\end{filecontents*}

%\documentclass[varwidth, margin=10pt]{standalone} 
%\usepackage{xcolor}
%\pagecolor{green!20!yellow}
\documentclass{scrartcl}

\usepackage{selinput}
\SelectInputMappings{adieresis={ä},  germandbls={ß}}
\usepackage[ngerman]{babel}

\usepackage[makeindex]{splitidx}
% Neuen Index definieren:
\newindex[Namensverzeichnis]{aut}
% Damit wir nicht immer die ganze Erklärung zum Autor neu schreiben müssen,
% definieren wir uns einen Befehl, mit dem wir das je Autor einmal machen:
\newcommand{\newauthor}[2]{%
  \expandafter\newcommand\csname explain.\detokenize{#1}\endcsname{ #2}%
}
% Jetzt könnten wir natürlich nicht mehr einfach \sindex (siehe
% splitidx-Anleitung) verwenden, wir wollen ja auch, dass die
% Autorinformationen mit ausgegeben werden. Also definieren wir uns dafür
% einen neuen Befehl. Optionales Argument ist hier ggf. eine andere
% Sortiervorgabe. Ich zeige die Verwendung gleich noch.
\newcommand{\authorindex}[2][\optarg]{%
  \def\optarg{#2}%
  \sindex[aut]{#1@\indexauthor{#1}}%
}
% Hier definieren wir, wie \indexauthor aus dem vorherigen Befehl den
% Autor später ausgeben soll.
\DeclareRobustCommand{\indexauthor}[1]{%
  \textsc{#1}\csname explain.\detokenize{#1}\endcsname
}
% Weil die Seitenzahlen etwas anders eingeleitet werden sollen, definieren wir
% dafür einfach eine Umgebung. Diese wird per delim_0 und delim_t um die
% Seitenzahlenausgabe in die ind-Datei gebracht.
\newenvironment{indexpagenumbers}
               {\space\dotfill\space(siehe S.\space}
               {)}
% Jetzt kommt ein Trick: Um die Literatureinträge in den Index zu bekommen,
% verwenden wir eine Darstellungsform für die Seitenzahlen. Diese bekommt aber
% zusätzlich zum Argument für die Seitenzahl ein erstes Argument mit dem
% Literaturkey.
\DeclareRobustCommand{\indexciteentry}[2]{%
  \cite{#1}%
}
\newcommand*{\authorindexcite}[2]{%
  \sindex[aut]{#1@\indexauthor{#1}|indexciteentry{#2}}%
}

\usepackage{blindtext}
\usepackage{hyperref}

\begin{document}
\newauthor{Einstein, Albert}{(1879--1955): deutscher Physiker}
\newauthor{Fourier, Joseph}{(1768--1830): französischer Physiker}
% ACHTUNG: Hier muss es gleich Foebe statt Föbe heißen!
\newauthor{Foebe, Klara}{Hier zeige ich, wie ö als oe sortiert werden kann}
\section{Einleitung}
\blindtext
Wie schon Albert Einstein schrieb.\authorindex{Einstein, Albert}. Sein Kollege
Fourier\authorindex{Fourier, Joseph} meinte zu demselben Thema ein Jahrhundert
früher \blindtext.

\blinddocument
Wie schon Albert Einstein schrieb.\authorindex{Einstein, Albert}. Sein Kollege
Fourier\authorindex{Fourier, Joseph} meinte zu demselben Thema ein Jahrhundert
früher \blindtext Die Frau von Alber Einstein hieß übrigens nicht Klara
Föbe\authorindex[Foebe, Klara]{Föbe, Klara}.

\begin{thebibliography}{XXX9999}
\bibitem[Ein1950]{Ein1950} Was auch immer er da geschrieben hat.
\bibitem[Ein1953]{Ein1953} Was auch immer er danach geschrieben hat.
\end{thebibliography}

% Das folgende muss vor dem Index gemacht werden!
% Vermutlich könnte man es bei biblatex auch irgendwie die Erzeugung des
% Literaturverzeichnisses einbauen.
\authorindexcite{Einstein, Albert}{Ein1950}
\authorindexcite{Einstein, Albert}{Ein1953}

% Die folgenden Zeilen sind (fast) direkt aus der splitindex-Anleitung kopiert:
\begingroup % hold following extension local to this group
\makeatletter % allow @ at macro names
\extendtheindex% some changes of theindex environment
{\let\twocolumn\@firstoptofone % deactivate \twocolumn
\let\onecolumn\@firstoptofone % deactivate \twocolumn
\let\clearpage\relax % deactivate \clearpage
}% changes before beginning
{}% no change after beginning
{}% no change before ending
{}% no change after ending
\makeatother % deactivate \makeatletter
\printindex[aut] % print index aut
\endgroup % end group with extended theindex environment

\end{document}

Aufruf des ganzen:

  • pdflatex foo
  • splitindex foo.idx
  • pdflatex foo

unter der Voraussetzung, dass obige Datei unter dem Namen foo.tex gespeichert wurde. Man kann natürlich auch jeden anderen Namen verwenden. Wichtig ist übrigens, dass die Dateiendung .mst bei der filecontents*-Umgebung beibehalten wird. So verwendet das von splitindex aufgerufene makeindex automatisch diese Datei als Index-Stil.

Wie man das ganze mit dem hier so beliebten arara automatisiert, kann ich nicht sagen. Ich verwende das nicht. Vermutlich muss man schlicht irgendwo den Aufruf von splitindex aktivieren.

Was noch fehlt ist, dass vor den Zitaten im Index ein »und« an Stelle des Kommas verwendet wird. Dafür müsste man vermutlich mit einem Befehl statt des Kommas arbeiten und über einen Zähler dann die Umschaltung vornehmen. Das war mir aber zu aufwändig. Mir reicht das so bereits.

alt text

Permanenter link

beantwortet 18 Jun '14, 08:39

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 18 Jun '14, 21:57

cis's gravatar image

cis
9.5k93459491

Die macht einen guten Eindruck! Aber warum tut das bei mir nicht? Hab mehrmals genau so kompiliert (auch mit Varianten, makeindex) - und warum gibt es splitindex nicht für arara? Dann hätte es bestimmt getan :() Ich starte heute abend nochmal einen Versuch ;)

(18 Jun '14, 10:38) cis

@cis arara automatisiert doch nur die Ausführung der einzelnen Schritte. Wenn die aber nicht funktionieren, dann hilft auch arara nicht.

Bei mir läuft das Beispiel unter MiKTeX/Windows und unter TeX Live 2014/Ubuntu, aber mit TeX Live2014/Windows bekomme ich beim Aufruf von splitindex eine Fehlermeldung.

(18 Jun '14, 11:14) esdd

Ja schon klar; wollt ja nur andeuten, daß man hier auch mal eine arara-Regel bräuchte.

Also splitindex foo.tex tut, splitindex foo findet keine Datei foo bei mir. Aber ein Ergebnis bekomme ich trotzedem nicht. :(

(18 Jun '14, 11:46) cis
1

Wenn es ohne Endung nicht geht, dann probiert es mal mit Endung .idx. Bei mir unter Linux mit TeX Live 2013 (die offizielle Veröffentlichung von 2014 war erst heute Nacht) ist splitindex übrigens splitindex.pl. Eventuell ist es unter Windows splitindex.tlu, weil dort perl ein Schattendasein fristet. Vielleicht macht das den Unterschied aus.

Man kann aber auch Option split für splitidx verwenden. Dann legt es direkt ein \jobname-aut.idx an, das man direkt mit makeindex foo-aut.idx verarbeiten kann (statt mit splitindex). Siehe auch die Anleitung zum Paket.

(18 Jun '14, 20:19) gast3

Ja stimmt, mit splitindex foo.idx funktioniert es überall und TL verwendet unter Windows wirklich die splitindex.tlu. Diesplitindex.pl vorhanden ist allerdings auch vorhanden und mit der würde es ohne Endung funktionieren. Unter MiKTeX gibt es dagegen nur die Perldatei.

(18 Jun '14, 21:15) esdd

Ja, so tut es.

PS: Bild ergänzt in der AW.

(18 Jun '14, 21:57) cis
Ergebnis 5 von 6 show 1 more comments
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:

×222

gestellte Frage: 11 Jun '14, 01:42

Frage wurde gesehen: 7,655 Mal

zuletzt geändert: 18 Jun '14, 21:57