PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : makeindex



ROSA
23-07-2008, 09:58
Hallo an alle!

Wie kann ich in einem Index die Einrückung der Untereinträge verhindern bzw. beeinflussen (z. B. möchte ich vor dem (nicht eingerückten ) Untereintrag einen Bindestrich)?

Vielen Dank im voraus!

rais
23-07-2008, 11:34
Moin moin,
mit


\makeatletter
\renewcommand*\subitem{%
\@idxitem -\,%<--Strich statt Einrückung
}
\makeatother

d. h. wenn der Untereintrag in bezug auf den übergeordneten Eintrag wirklich nicht eingerückt erscheinen soll mit


\makeatletter
\renewcommand*\subitem{%
\@idxitem \makebox[0pt][r]{-\,}%<--Untereintrag nicht eingerückt und Strich davor
}
\makeatother

in Deiner Präambel. \subsubitem könntest Du ebenso anpassen.

Aber ob der Index damit übersichtlicher wird ... ?

MfG

ROSA
23-07-2008, 12:03
Vielen Dank, Rainer!

Damit kann ichs einstellen!
Was die Übersichtlichkeit betrifft: da hast du sicher recht, ist aber leider nicht meine Entscheidung.

PS: Ich habe öfter solche (für meine Begriffe) kniffligen Probleme mit LaTEX zu lösen. Diese Geschichten mit \makeatletter ... \makeatother sind mir immer etwas suspekt. Kennst du gute, systematische Literatur, die derartige Dinge abdeckt und gut erklärt? (Den Latex-Begleiter hjabe ich schon!)

mfg
Robert

rais
23-07-2008, 13:32
Moin Robert,


PS: Ich habe öfter solche (für meine Begriffe) kniffligen Probleme mit LaTEX zu lösen. Diese Geschichten mit \makeatletter ... \makeatother sind mir immer etwas suspekt. Kennst du gute, systematische Literatur, die derartige Dinge abdeckt und gut erklärt? (Den Latex-Begleiter hjabe ich schon!)

hmm, mit dem Begleiter solltest Du bestens gerüstet sein, dazu vllt die eine oder andere Paketdoku...

Hier in diesem Fall hab ich einfach in die Ausgabe von `man makeindex' geschaut: item_*1 fügt Zeilenumbruch und \subitem ein ... wie[1] mag \subitem definiert sein? Hmm, wo ist \subitem eigentlich definiert? Nicht in makeidx.sty ... aha, in article.cls (also vermutlich auch in allen anderen Klassen):


\newcommand\subitem{\@idxitem \hspace*{20\p@}}

Was macht \@idxitem ... (steht kurz über der \subitem-Definition) ?
Ah ja, das kann man stehen lassen -- also braucht nur der \hspace* zu verschwinden.;-)
\makeatletter ... \makeatother um die eigene Umdefinition setzen, sonst wird ``\@idxitem'' als ``\@'', gefolgt von ``idxitem'' interpretiert ... und schon lässt sich die eigene Idee umsetzen.;)
Nicht systematisch genug?
Stimmt: ich habe hier vernachlässigt, daß \subitem ggf. andernorts ebenfalls verwendet werden könnte -- und der Name ``\subitem'' beschränkt sich nicht zwingend auf ``Index''...

[1]Alternativ zur Suche in den verwendeten Paketen/Klassen (es gibt ja auch noch LaTeXbefehle wie z. B. ``\newcommand'', die im Kern bereits definiert sind oder gar TeXbefehle wie ``\xdef'', die noch eine Ebene tiefer liegen -- obwohl: je tiefer ein Befehl definiert ist, umso eher solltest Du davon absehen, diesen umdefinieren zu wollen, wer weiß, was Du damit sonst mit umdefinierst? -- \show\subitem (im .tex) gibt die (aktuelle) Definition auf der Konsole bzw. im Log aus;-)

MfG

ROSA
23-07-2008, 15:02
Danke für die ausführliche Nachhilfe!

Die einzelnen Einstellmöglichkeiten waren mir schon so ungefähr bekannt (hab die komascript scrreprt-Datei durchgesehen!), und wenn man dann eine Lösung sieht, ist sie ja auch ungefähr nachvollziehbar. Aber ganz allein? ... oft sehr schwierig!

mfg
Robert