Wie kann ich die Sortierreihenfolge bei der Ausgabe ändern? Angenommen ich habe: Öffne in Overleaf
\documentclass{scrartcl} \usepackage[split,makeindex]{splitidx} \newindex[Personenverzeichnis]{Personen} \makeindex \begin{document} Wilhelm Meister\sindex[Personen]{Wilhelm Meister} \printsubindex[Personen] \end{document} Kann ich nun in der Ausgabe des Index statt |
Auch bei dieser Frage ist mir wieder nicht klar, was du haben willst. Bitte bemühe dich künftig, etwas genauer anzugeben, was das Ergebnis sein soll. Jedenfalls kann man selbstverständlich im Index auch „Meister, Wilhelm” eintragen: Öffne in Overleaf
\documentclass{scrartcl} \usepackage[split,makeindex]{splitidx}% Option split nur, wenn man splitindex nicht verwendet. \newindex[Personenverzeichnis]{Personen} \makeindex \begin{document} Wilhelm Meister\sindex[Personen]{Meister, Wilhelm Otto} und Friedrich Kleister\sindex[Personen]{Kleister, Friedrich Peter} \printsubindex[Personen] \end{document} Ergibt dann: Oder willst du vielleicht: Öffne in Overleaf
\documentclass{scrartcl} \usepackage[split,makeindex]{splitidx}% Option split nur, wenn man auf den Komfort von splitindex verzichtet. \newindex[Personenverzeichnis]{Personen} \makeindex \begin{document} Wilhelm Meister\sindex[Personen]{Meister, Wilhelm Otto@Wilhelm Otto Meister} und Friedrich Kleister\sindex[Personen]{Kleister, Friedrich Peter@Friedrich Peter Kleister} \printsubindex[Personen] \end{document} Näheres zur Syntax mit Ich finde es ja komfortabler, nicht Option Liegen die Namen aus unerfindlichen Gründen nur in der Form „Vorname Nachname” vor und eine Änderung in die sinnvolle Form „Nachname, Vorname” kommt aus ebenso unerfindlichen Gründen nicht in Frage, dann muss man die Namen vor dem Setzen des Index-Eintrags gegebenenfalls erst noch in Vorname und Nachname aufspalten. Es gibt dafür verschiedene Heuristiken. Ich verwende hier einmal die einfache Annahme, dass der Teil hinter dem letzten Leerzeichen der Nachname ist und alles davon der Vorname. Dann kann die Aufteilung mit einem einfachen regulären Ausdruck erfolgen. Hierfür bietet sich das LaTeX3-Kernel-Modul Öffne in Overleaf
\documentclass{scrartcl} \usepackage[makeindex]{splitidx} \usepackage{xparse}% lädt auch expl3 mit l3regex \ExplSyntaxOn \regex_const:Nn \c_lastspace_regex { \A(.*)\s([^\s]*)\Z } % #1 = Tokenlistenvariable für den Vornamen % #2 = Tokenlistenvariable für den Nachnamen % #3 = "Vorname Nachname" \cs_new:Npn \__splitatlastspacetoken:NNn #1#2#3 { \tl_set:Nn #2 { #3 } % Zuerst den Namen \tl_trim_spaces:N #2 % von Leerzeichen am Anfang und Ende befreien \regex_replace_once:NnNTF \c_lastspace_regex { \2 } #2 % und den Nachnamen behalten. { % Wenn es Leerzeichen gab, \tl_set:Nn #1 { #3 } % erneut den Namen \tl_trim_spaces:N #1 % von Leerzeichen am Anfang und Ende befreien, \regex_replace_once:NnN \c_lastspace_regex { \1 } #1 % dieses Mal ab den Vornamen behalten. } { % Wenn es kein Leerzeichen gab, \tl_clear:N #1 % gibt es keinen Vornamen. } } \NewDocumentCommand \AddPersonToIndex { m } { \__splitatlastspacetoken:NNn \l_tmpa_tl \l_tmpb_tl { #1 } \tl_if_empty:NTF \l_tmpa_tl { % Eine Person ohne Vorname, nur mit Nachnamen. \sindex[Personen]{ \l_tmpb_tl } } { % \l_tmpb_tl ist der Nachname, \l_tmpa_tl der Vorname. \sindex[Personen]{ \l_tmpb_tl , ~ \l_tmpa_tl } } } \ExplSyntaxOff \newindex[Personenverzeichnis]{Personen} \begin{document} Wilhelm Meister\AddPersonToIndex{Wilhelm Meister} und Otto Friedrich Leister\AddPersonToIndex{Otto Friedrich Leister} und als Specialguest Alf\AddPersonToIndex{Alf} \printsubindex[Personen] \end{document} Auch hier kann man natürlich die Ausgabe im Index von der Sortierreihenfolge abkoppeln. Dazu muss nur die zweite Es sei darauf hingewiesen, dass die hier verwendete Heuristik, Namen wie „Otto Graf von Mysterium” oder „Ben van Verratichnich”, abhängig von den Anforderungen nicht hinreichend gut erfasst, da dabei „Otto Graf von” bzw. „Ben van” als Vornamen behandelt wird. Ggf. ist also je nach Anforderung eine aufwändigere Aufspaltung des Namens in einzelne Bestandteile und auch eine aufwändigere Weiterbehandlung der Bestandteile notwendig. Ggf. kann der Aufwand mit TeX sogar mit LaTeX3 dafür auch sehr hoch sein, so dass eine Nachbearbeitung der Indexdatei mit einem zusätzlichen Programm eventuell besser sein könnte. Das war aber hier nicht die Frage, weshalb ich es auch nicht zu behandeln gedenke. Außerdem ist irgendwann dann die Grenze erreicht, bei der das Problem besser von der Eingabeseite zu lösen ist. Das kann bis zur Verwendung von beantwortet 20 Mär '19, 18:58 gast3 Ich habe das Problem, dass ich meine Einträge alle mit
(20 Mär '19, 20:56)
Tischa
@Tischa Das sagt leider noch immer nicht, wie sie dann im Index stehen sollen. Interessiert mich jetzt aber auch nicht mehr. Ich habe eine Lösung zur Aufspaltung hinzugefügt. Sollte dir das nicht genügen, überlasse ich den Rest dir.
(21 Mär '19, 11:44)
gast3
1
@Tischa Bitte füge wichtige Informationen in die Frage ein und verstecke sie nicht in einem Kommentar zu einer Antwort. Und bitte bemühe Dich etwas mehr, um vollständige Fragen. Natürlich kann man Nachfragen nicht immer ganz vermeiden, aber Deine Fragen sind leider häufig recht unklar. Nachdem Du nun schon so lange dabei bist, bin ich sicher, dass Du das kannst. Einfach am Ende die Frage noch einmal durchlesen und Dich selbst fragen, was daran unklar sein könnte.
(21 Mär '19, 12:15)
saputello
|
Ich habe mir erlaubt, mal die wichtigsten Informationen aus einem Deiner Kommentare in die Frage einzubauen. Du kannst das aber gerne selbst nachbearbeiten.