Farge zu splitidx

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Farge zu splitidx

Beitrag von Artur »

Hallo,
ich habe mich mal mit dem Erstellen von Indizes beschäftigt. Ich nutze die Koma Script Klassen und war mit dem Paket index sehr unzufrieden. Da ich meine Vorgliederungen mit römischen Zahlen durchnummeriert habe und die Kapitel mit arabischen, hat index irgendwie alles falsch verlinkt (oder vielleicht wegen hypererf???)

Naja, daraufhin hab ich in der Doku von Koma Script das Schlagwort splitidx gelesen. Leider bekomme ich damit keine Indizes erstellt, was mache ich falsch?
\documentclass{scrartcl} 
\usepackage{ngerman}
\usepackage[makeindex]{splitidx}

\newindex[Stichwortverzeichnis]{idx}
\newindex[Personenverzeichnis]{per}
 
\begin{document}
	Ein Apfel\sindex[idx]{Apfel} schmeckt gut.
	Eine Apfelsine\sindex[idx]{Apfelsine} schmeckt auch gut!
	Herr Müller \sindex[per]{Müller, Hans} ist sehr alt.
	\printindex*
\end{document}
Es wird eine idx datei mit folgendem Inhalt erstellt:
\indexentry[idx]{Apfel}{1}
\indexentry[idx]{Apfelsine}{1}
\indexentry[per]{Müller, Hans}{1}
Jedoch wird kein Index ausgegeben. Mit \printindex* müssten doch alle Indizes ausgegeben werden.

Desweiteren hab ich das mit der SplitIndex nicht verstanden. Eine Exe ist im meiner MikeTex Distribution enthalten. Mein Betribessystem ist Windows und von Konsolenanwendungen habe ich keine Ahnung. Kann man das nicht mit den Ausgabeprofilen vom TeXnicCenter erledigen? Unter Nachbearbeitung kann man dort die splitindex.exe wählen, aber welche Argumente muss ich dort übergeben?

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Ich kenne mit mit TeXnicCenter nicht aus, aber theoretisch kann man es mit denselben Parametern aufrufen wie auch makeindex. Lediglich Option -o (und das dazu gehörende Argument) sollte man weglassen. Solange einem die Datei-Handles in TeX nicht ausgehen (max. 16 Dateien zum Schreiben), kann man auch das Paket splitidx selbst die Aufteilung erledigen lassen und dann für jede einzelne idx-Datei makeindex aufrufen. Das ist natürlich weniger komfortabel.

Konsole öffnet man unter Windows übrigens mit Windows+R, dann CMD eingeben. Es wird dann eine Textkonsole (aka Windows-Eingabeaufforderung) gestartet. Darin kann man sich mit cd in das gewünschte Verzeichnis hangeln und dort dann splitindex wie in der Anleitung angegeben aufrufen. Es gibt übrigens auch Windows-Tools mit denen man das Explorer-Kontextmenü um einen Punkt "cmd" erweitern kann. Dann ist man im gestarteten CMD gleich im entsprechenden Verzeichnis.

Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Beitrag von Artur »

Also ich habe es in TechnixCenter gelöst. Bei den Ausgabeprofilen unter der Registerkarte Nachbearbeitung einen neuen Eintrag erstellen und z.B. Index nennen. Dort unter Anwendung den Pfad eintragen z.B.: C:\Program Files (x86)\MiKTeX 2.8\miktex\bin\splitindex.exe

Dann als Argumente: "%tm.idx" eingeben.

Naja ein Problem besteht trotzdem bei verschiedenen Seitennummerieungen:
Ein Index wird erstellt, z.B.:
EintragA, V
EintragB, 3
EintragC, 10

Die angegebenen Seiten sind korrekt, wenn ich jedoch auf die Seitenzahl klicke springt er mit auf die absolute Seitenzahl.
Beispiel: Die ersten fünf Seiten sind römisch nummeriert, also I,II,III,IV...
Die darauffolgenden sind arabisch nummeriert 1,2,3...

Klicke ich jetzt auf EintragC, Seite 10, springt er mir auf Seite arabisch 5. Arabisch fünf ist jedoch absolut gesehen die zehnte Seite (römisch5 +arabsich5 = 10).

Die links funktionieren nicht richtig, ich benutze hyperref.
Weiß jemand einen Rat weil alle anderen verweise mit hyperref bis jetzt funktionieren.

Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Beitrag von Artur »

Okay habe das Problem gelöst:

Wenn man verschiedene Seitennummerierungen hat, ein Index erzeugt und sich über die flaschen verlinkungen wundert liegt es dadran, dass die option:
hypertexnames=true, vom Hyperrefpaket nicht gesetzt ist.

Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Beitrag von Artur »

so habe noch eine Frage zu splitidx.

Wie ändere ich dort den Index-Style? Ich habe eine ist.Datei eingebunden die mir den Style ändert, doch leider fuktioiniert diese nur mit mit den standart makeindex und wenn ich mit splitidx keine eigenen Indizes definiere funktioniert dieser Style ebenfalls, nicht jedoch wenn man mit \newindex[Eigener Index]{ida} erstellt.

Gibt es vielleicht Pakete oder Vorlagen mit guten Styles für splitidx?

Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Beitrag von Artur »

ich bekomm es einfach nicht hin!

Also:
Welche Parameter übergibt man splitidx damit er makeindex aufruft mit folgenden Parametern:

-g -r -s "Indexstyle.ist" "%bm.idx"

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

"%bm.idx" -- -g -r -s "Indexstyle.ist"

Siehe dazu auch die Ausgabe von
splitindex --help
.

Wobei ich nicht sagen kann, ob "%bm.idx" korrekte TeXnicCenter-Syntax ist. Ggf. schaut man sich die Terminal- bzw. Fehler-Ausgabe von splitindex und den davon aufgerufenen makeindex an. Wenn da Fehler gemeldet werden, ist es sinnvoll, diese hier anzugeben. Die aufgerufenen makeindex (falls splitindex so weit kommt) erzeugen außerdem eine Reihe von ilg-Dateien. Die ebenfalls bei der Fehlersuche nützlich sein können. Sätze wie "ich bekomm es einfach nicht hin" sind nämlich leider keine Fehlerbeschreibung, sondern verlangen allenfalls nach einem Orakel.

Edit: Fehlerhafter splitindex-Aufruf unter Windows korrigiert.
Zuletzt geändert von KOMA am Do 22. Apr 2010, 11:35, insgesamt 1-mal geändert.

Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Beitrag von Artur »

also folgendes Beispiel:
\documentclass[a4paper]{article}
\usepackage[makeindex]{splitidx}
						
\newindex[Altes Index]{aid}
\newindex[Neues Index]{nid}

\begin{document}
Test\sindex[nid]{Test}, Und\sindex[nid]{Und}, Noch\sindex[nid]{Noch}, Ein\sindex[nid]{Ein},
Test\sindex[nid]{Test}.
Test\sindex[nid]{1 Test}.
Test\sindex[nid]{10 Test}.
Test\sindex[nid]{Üest}.
Test\sindex[nid]{TestA}, Und\sindex[nid]{UndA}, Noch\sindex[nid]{NochAdgdfgfgf}, Ein\sindex[nid]{EinA},
Test\sindex[nid]{TestA}.

Test\sindex[aid]{Test}, Und\sindex[aid]{Und}, Noch\sindex[aid]{Noch}, Ein\sindex[aid]{Ein},
Test\sindex[aid]{Test}.
Test\sindex[aid]{1 Test}.
Test\sindex[aid]{10 Test}.
Test\sindex[aid]{Üest}.
Test\sindex[aid]{TestA}, Und\sindex[aid]{UndA}, Noch\sindex[aid]{NochAdgdfgfgf}, Ein\sindex[aid]{EinA},
Test\sindex[aid]{TestA}.

\printindex*
\end{document}
Das Style File heißt: Indexsytle., befindet sich im Projektordner und sieht so aus:
level  '>'
actual '='
encap  '!'
quote  '~'

delim_0 "~\\dotfill~"
delim_1 "~\\dotfill~"
delim_2 "~\\dotfill~"

heading_prefix "{\\hspace{0pt plus 2fil}\\textbf{"
heading_suffix "}\\hspace{0pt plus 1fil}}\\nopagebreak\n"
headings_flag  1
1) Wenn über TexnixCenter splitindex.exe aufrufe wird und folgende Argumente übergeben werden:
"%tm.idx"
werden beide Indizes mit den Standard-Sytle erzeugt.

2) Wenn man folgendes übergibt:
"%bm.idx" -g -r -s "Indexstyle.ist
bekommt man keine Indizes, und folgende Meldung:
Unknown option: g
Couldn't find input index file (Pfad-->Projektordner.idx : dies ist auch falsch es müsste Projektordner\Indexstyle.idx sein)
Usage: makeindex [-ilqrcgLT] [-s sty] [-o ind]...
Couldn't find input index file (Pfad-->Projektordner.idx : dies ist auch falsch es müsste Projektordner\Indexstyle.idx sein)
Usage: makeindex [-ilqrcgLT] [-s sty] [-o ind]...

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Zunächst einmal: Wenn Du Umlaute verwenden willst, dann musst die Eingabecodierung Deines Dokuments deklarieren. Das ist vermutlich Windows-ANSI, also
\usepackage[ansinew]{inputenc}
oder
\usepackage[latin1]{inputenc}
. Wenn Du die aktuelle Entwicklerversion von TC verwendest, kann es aber UTF-8 sein. Das wäre dann also
\usepackage[utf8]{inputenc}
Was tatsächlich korrekt ist, musst Du selbst in den Einstellungen von TC nachschauen! Bitte ergänze die entsprechende Zeile in Deinem Beispiel, bevor Du irgend etwas anderes machst. Zusätzlich solltest Du dann auch noch
\usepackage[ngerman]{babel}
ergänzen.

Bevor wir jetzt irgendwelche TeXnicCenter-Probleme lösen (die übrigens dann im falschen Bereich wären), bin ich dafür, dass wir erst einmal den Aufruf von splitindex hin bekommen. Also mach mal bitte folgendes:
  • Die Tastenkombination Windows+R drücken. Es öffnet sich der Dialog "Ausführen".
  • In dem Dialog "cmd" eingeben und mit dem OK-Knopf bestätigen. Es öffnet sich ein neues Fenster "C:\WINDOWS\system32\cmd.exe" (Pfad kann abweichen oder auch fehlen) mit cmd.exe aka Textkonsole aka Windows-Eingabeaufforderung.
  • In dem neuen Fenster folgendes eingeben:
    C:
    cd "PROJEKTVERZEICHNIS"
    latex TESTDOKUMENT
    , wobei "C" der Laufwerksbuchstabe Deines Projektverzeichnisses und "PROJEKTVERZEICHNIS" der vollständige Pfad zu diesem Projektverzeichnis ist und in Anführungszeichen zu setzen ist und "TESTDOKUMENT" der Name Deines Testdokuments!
  • Kontrolliere, dass in der neu erzeugten idx-Datei tatsächlich
    \indexentry[nid]{\"Uest}{1}
    steht. Wenn das nicht der Fall ist, sondern statt \"U irgendwelche seltsamen Zeichen oder Befehle stehen, dann stimmt eventuell die Eingabecodierung nicht. Jedenfalls funktioniert die makeindex-Option -g dann ohnehin nicht. Leider wird die auch so nicht funktionieren, weil Option -g erwartet, dass der Eintrag
    \indexentry[nid]{"Uest}{1}
    lautet. Aber das ist ein ganz anderes Problem.
  • Gib nun in dem cmd.exe Fenster folgendes ein:
    splitindex IDX-DATEI -- -g -r -s IST-DATEI
    wobei IDX-DATEI der Name der neu erzeugten idx-Datei ist (die Endung ".idx" kann dabei entfallen) und IST-DATEI ist der Name der zu verwendenden ist-Datei. Es sollte nun in etwa folgendes ausgegeben werden:
    This is makeindex, version 2.15 [TeX Live 2009] (kpathsea + Thai support).
    Scanning style file ./test.ist..........done (10 attributes redefined, 0 ignored).
    Scanning input file test-aid.idx....done (13 entries accepted, 0 rejected).
    Sorting entries....done (46 comparisons).
    Generating output file test-aid.ind....done (32 lines written, 0 warnings).
    Output written in test-aid.ind.
    Transcript written in test-aid.ilg.
    This is makeindex, version 2.15 [TeX Live 2009] (kpathsea + Thai support).
    Scanning style file ./test.ist..........done (10 attributes redefined, 0 ignored).
    Scanning input file test-nid.idx....done (13 entries accepted, 0 rejected).
    Sorting entries....done (46 comparisons).
    Generating output file test-nid.ind....done (32 lines written, 0 warnings).
    Output written in test-nid.ind.
    Transcript written in test-nid.ilg.
    Wie Du siehst, habe ich nicht MiKTeX, sondern TeX-Live unter Windows verwendet.
  • Nun gibst Du erneut
    latex TESTDOKUMENT
    ein.
Wenn das soweit funktioniert hat, hast Du nun ein DVI-Dokument mit zwei Indexen.

Wenn das soweit funktioniert hat, musst Du nur noch herausfinden, wie Du den splitindex-Aufruf bei TC realisierst. Immerhin weißt Du nun aber schon einmal, wie er von Hand geht.

Kommen wir zurück zu Option -g. Diese stammt aus einer Zeit, als LaTeX noch keine 8-Bit-Eingabecodierungen kannte, sondern man Umlaute in Babel-Schreibweise eingegeben hat. Um also wenigstens nach DIN 5007 sortierte Umlaute zu bekommen, musst Du tatsächlich
Test\sindex[nid]{"Uest}
schreiben.

Artur
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 56
Registriert: Mi 24. Mär 2010, 15:43

Beitrag von Artur »

Es funktioniert!!!!!!!!!!!!!!

Tausend Dank an euch! :) ich verneige mich vor dem Latex König :)

Durch euer Beispiel ist mir jetzt das Thema Konsolenanwendung klarer geworden!

Also das entsprechende Argument für TeXnicCenter lautet:
"%tm.idx" -- -g -r -s "<namedesStyles>.ist"
(ohne < >)

Mein oben genannter Style Text ist jedoch verbugt, mit Hyperref kommen da Fehler raus weil es falsch formatiert. Mit diesem Style klappt es jedoch:

quote '+'
headings_flag 1
heading_prefix "{\\bf "
heading_suffix "}\\nopagebreak%\n \\indexspace\\nopagebreak%"
delim_0 "\\dotfill "
delim_1 "\\dotfill "
delim_2 "\\dotfill "
delim_r "~--~"
suffix_2p "\\,f."
suffix_3p "\\,ff."

Ein paar Kleinigkeiten müssen noch verbessert werden:
1) Der Style erstellt Präfixe, jedoch wird trotz des babel Paketes immer "Symbols" ausgegeben und nicht Symbole.
2) Der Befehl \index{Eintrag|bf} soll normalerweise die Seitenzahl fett ausgeben, \sindex[ttr]{Eintrag|bf} bewirkts stattdessen, dass die Seitenzahl und der komplette nachfolgende Text im Index Fett ausgegeben.

Wenn der Befehl neu definiert wird klappt es:
\newcommand{\fett}[1]{{\bf #1}} (ja, mit doppeltgeschweiften Klammern)
\sindex[ttr]{Eintrag|fett}

Antworten