PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Index mit griechischen Buchstaben als Ordnungsgeber erstellen



Diokletian
17-08-2014, 22:47
Salue, liebe Forumsteilnehmer,

leider bin ich mit meinem LaTeX-Latein im wahrsten Sinne des Wortes am Ende. Ich schreibe derweil ein Buch mit verschiedenen Verzeichnissen (Personen-, Sach- und Stellenregister) und möchte nunmehr noch einen Index mit griechischien Begriffen erstellen. Grundsätzlich funktioniert die Einsortierung mit meiner Stildatei (stil.ist) dank des Pakets Ibycus ziemlich gut:



quote '~'
preamble "\\begin{theindex}\n\n\\small\n"
postamble "\n\\end{theindex}\n"
%
delim_0 "\\dotfill"
delim_1 "\\dotfill"
delim_2 "\\dotfill"
%
headings_flag 1
symhead_positive "\Symbole"
numhead_positive "\Nummern"
heading_prefix "\\heading{"
heading_suffix "}\n"


Nun habe ich aber die Schwierigkeit, daß der Index nur mit lateinischen Großbuchstaben erzeugt wird, was zur Folge hat, daß die griechischen Wörter unter diese eingeordnet werden, was natürlich nicht dem gewünschten Effekt entspricht, denn bei griechischen Wörtern sollen logischerweise auch griechische (Groß-)Buchstaben als Ordnungsgeber fungieren!

Nachfolgend mein Minimalbeispiel:



\documentclass[openany]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ibycus, german]{babel}
\usepackage{scrindex}
\usepackage{multicol}
\newindex{IVG}{vgx}{gnd}{Griechische-Begriffe}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Index-Layout
\makeatletter
% Gruppenkopf
\newcommand*{\heading}[1]{%
\makebox[0pt][l]{% Box für Linie
\rule[-3pt]{\linewidth}{0.5pt}}% Linie über Textbreite
\textsf{\textbf{\Large #1}}\hfil\nopagebreak\vspace{4pt}}

% zweispaltige theindex-Umgebung
\renewenvironment{theindex}{%
\setlength{\columnseprule}{0.4pt}
\setlength{\columnsep}{2em}
\begin{multicols}{2}[\chapter*{\indexname}]
\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}%
{\end{multicols}\clearpage}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeindex
\begin{document}
\pagestyle{empty}

Hierbei ist es wesentlich zu bemerken, daß Platon bei der
Philosophie als Grundlage der politischen Kunst
Erstgenannte mit dem Erwerb von
Wissen verbindet:

\begin{quote}

\ibygr{(H de' ge filosofi'a
\index[IVG]{filosofia@\ibygr{filosofi'a}} kth=sij
\index[IVG]{ktesij@\ibygr{kth=sij}} e)pisth'mhj;
\index[IVG]{episteme@\ibygr{e)pisth'mh}} ou)x ou('twj};
\ibygr{e)'fhn. -- Nai', e)'fh.} (Platon: Euthydemus: 288 D 8-9)

\end{quote}

\renewcommand{\indexname}{Index verborum Graecorum}
\addcontentsline{toc}{chapter}{Index verborum Graecorum}
\markboth{\indexname}{\indexname}
\printindex[IVG]
\end{document}


Nun meine Fragen: Gibt es eine Möglichkeit, der Stil-Datei zu bedeuten, daß sie griechische Buchstaben statt den lateinischen als Ordnungsgeber erzeugt? Order muß ich gar ganz woanders ansetzen, zum Beispiel beim \makeindex-Befehl oder bei dem von mir ausgewählten Paket "scrindex"? Eigentlich müßten auch andere vor dem Problem stehen, wenn sie beispielsweise kyrillische oder hebräische Wörterverzeichnisse erstellen möchten.

Über Eure Hilfe wäre ich ausgesprochenermaßen dankbar.

Gruß, Dio

rais
18-08-2014, 08:58
Gibt es eine Möglichkeit, der Stil-Datei zu bedeuten, daß sie griechische Buchstaben statt den lateinischen als Ordnungsgeber erzeugt?
nicht direkt: von makeindex wirst Du nur A--Z bekommen, was Dich aber nicht davon abhält, in Deiner \heading-Definition \ibygr mit aufzurufen.
Wenn Du dann noch die Umdefinition der theindex-Umgebung (erstmal) bleiben lässt, womit Du dem scrindex-Paket entgegen gewirkt hast, könntest Du sogar Deinen Titel diekt im \newindex-Befehl mit angeben.


\documentclass[openany]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ibycus, german]{babel}
\usepackage{scrindex}
\usepackage{multicol}
\newindex{IVG}{vgx}{gnd}{Index verborum Graecorum}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Index-Layout
% Gruppenkopf
\newcommand*{\heading}[1]{%
\makebox[0pt][l]{% Box für Linie
\rule[-3pt]{\linewidth}{0.5pt}}% Linie über Textbreite
\textsf{\textbf{\Large\ibygr{#1}}}\hfil\nopagebrea k\vspace{4pt}}

\makeindex
\begin{document}
\pagestyle{empty}

Hierbei ist es wesentlich zu bemerken, daß Platon bei der
Philosophie als Grundlage der politischen Kunst
Erstgenannte mit dem Erwerb von
Wissen verbindet:

\begin{quote}

\ibygr{(H de' ge filosofi'a
\index[IVG]{filosofia@\ibygr{filosofi'a}} kth=sij
\index[IVG]{ktesij@\ibygr{kth=sij}} e)pisth'mhj;
\index[IVG]{episteme@\ibygr{e)pisth'mh}} ou)x ou('twj};
\ibygr{e)'fhn. -- Nai', e)'fh.} (Platon: Euthydemus: 288 D 8-9)

\end{quote}

\printindex[IVG]
\end{document}

MfG

Diokletian
18-08-2014, 09:54
Wenn Du dann noch die Umdefinition der theindex-Umgebung (erstmal) bleiben lässt, womit Du dem scrindex-Paket entgegen gewirkt hast, könntest Du sogar Deinen Titel diekt im \newindex-Befehl mit angeben.

Herzlichen Dank für die schnelle Hilfe! Dein Vorschlag funktioniert einwandfrei. Nur habe ich jetzt die Schwierigkeit mit den übrigen Indizes, das heißt dem Sach-, Personen und Stellenregister, das dann ja nur die griechischen Buchstaben produziert, da ich den Index wahrscheinlich nur einmal definieren kann. Oder ist es möglich für jeden einzelnen Index eine eigene heading-Definition zu geben? Es tut mir leid, wenn die Frage naiv klingt, aber ich kenne mich da nicht sonderlich gut aus.

rais
18-08-2014, 11:59
Nur habe ich jetzt die Schwierigkeit mit den übrigen Indizes, das heißt dem Sach-, Personen und Stellenregister, das dann ja nur die griechischen Buchstaben produziert, da ich den Index wahrscheinlich nur einmal definieren kann. Oder ist es möglich für jeden einzelnen Index eine eigene heading-Definition zu geben?
eine Möglichkeit wäre, einfach eine zweite Stildatei zu generieren: bei der zweiten (die dann vllt grstil.ist heißt) setzt Du dann einfach \\grheading statt \\heading. In der .tex-Datei definierst Du dann \grheading wie \heading undnimmst den \ibygr aus der \heading-Definition wieder raus.
So ändert sich der makeindex-Aufruf nur für die griechischen Einträge von `-s stil.ist' zu `-s grstil.ist'


\documentclass[openany]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ibycus, german]{babel}
\usepackage{scrindex}
\usepackage{filecontents}
\begin{filecontents*}{stil.ist}
quote '~'
preamble "\\begin{theindex}\n\n\\small\n"
postamble "\n\\end{theindex}\n"
%
delim_0 "\\dotfill"
delim_1 "\\dotfill"
delim_2 "\\dotfill"
%
headings_flag 1
symhead_positive "\Symbole"
numhead_positive "\Nummern"
heading_prefix "\\heading{"
heading_suffix "}\n"
\end{filecontents*}

\begin{filecontents*}{grstil.ist}
quote '~'
preamble "\\begin{theindex}\n\n\\small\n"
postamble "\n\\end{theindex}\n"
%
delim_0 "\\dotfill"
delim_1 "\\dotfill"
delim_2 "\\dotfill"
%
headings_flag 1
symhead_positive "\Symbole"
numhead_positive "\Nummern"
heading_prefix "\\grheading{"
heading_suffix "}\n"
\end{filecontents*}

\newindex{IVG}{vgx}{gnd}{Index verborum Graecorum}
\newindex{WAI}{wai}{wnd}{Was Auch Immer (Index)}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Index-Layout
% Gruppenkopf
\newcommand*{\grheading}[1]{%
\makebox[0pt][l]{% Box für Linie
\rule[-3pt]{\linewidth}{0.5pt}}% Linie über Textbreite
\textsf{\textbf{\Large\ibygr{#1}}}\hfil\nopagebrea k\vspace{4pt}}
\newcommand*{\heading}[1]{%
\makebox[0pt][l]{% Box für Linie
\rule[-3pt]{\linewidth}{0.5pt}}% Linie über Textbreite
\textsf{\textbf{\Large #1}}\hfil\nopagebreak\vspace{4pt}}

\makeindex
\begin{document}
\pagestyle{empty}

Hierbei ist es wesentlich zu bemerken, daß Platon bei der
Philosophie als Grundlage der politischen Kunst
Erstgenannte mit dem Erwerb von
Wissen verbindet:\index[WAI]{Was auch immer}

\begin{quote}

\ibygr{(H de' ge filosofi'a
\index[IVG]{filosofia@\ibygr{filosofi'a}} kth=sij
\index[IVG]{ktesij@\ibygr{kth=sij}} e)pisth'mhj;
\index[IVG]{episteme@\ibygr{e)pisth'mh}} ou)x ou('twj};
\ibygr{e)'fhn. -- Nai', e)'fh.} (Platon: Euthydemus: 288 D 8-9)

\end{quote}

\printindex[IVG]
\printindex[WAI]
\end{document}

Wobei: "\Symbole" und "\Nummern" ist in beiden Fällen noch falsch, da wolltest Du sicher "\\Symbole" und "\\Nummern" und in der .tex-Datei entsprechend `\Symbole' und `\Nummern' analog zu `\heading' definieren.

MfG

Diokletian
18-08-2014, 16:02
Tausend Dank! Das ist eine sehr kluge und pragmatische Lösung, die perfekt funktioniert und genaus das gewünschte Ergebnis bereitet! Die entsprechenden Umdefinitionen von "\Symbole" und "\Nummern" habe ich dank Deines Hinweises vorgenommen. Nun ist alles gut!

Gruß, Dio

Diokletian
03-09-2014, 22:02
Leider war ich in meiner Euphorie wohl ein wenig zu voreilig. Nachdem ich mich anheischig gemacht habe, die griechischen Begriffe einzupflegen, entpuppte sich das Ergebnis als doch nicht optimal, da die Anordnung in meiner Stildatei (grstil.ist) der deutschen Sortierreihenfolge folgt und nicht der griechischen. D.h. das griechische "Gamma" figuriert z.B. nach dem griechischen "Phi", was natürlich so nicht korrekt ist (genausowenig, wie daß das "Z" als letzter Buchstabe und nicht das "Omega" aufgelistet wird).

Nun ist meine Frage, ob und wenn wie, ich die Sortierreihenfolge ändern kann.

Mein Miktex Kompilierungsargument ist ganz klassisch:


"%bm".gnd -s grstil.ist -o "%bm".vgx

Nur äußerst ungern würde ich auf xindy ausweichen, dieweil ich damit schlechterdings keinerlei Erfahrung habe.

Wäre prima, wenn mir jemanden helfen könnte!

Gruß, Dio

rais
06-09-2014, 01:47
Nachdem ich mich anheischig gemacht habe, die griechischen Begriffe einzupflegen, entpuppte sich das Ergebnis als doch nicht optimal, da die Anordnung in meiner Stildatei (grstil.ist) der deutschen Sortierreihenfolge folgt und nicht der griechischen.

ohne `-g'-Option sortiert makeindex nicht deutsch, eher englisch (nicht, daß es für Dein Problem einen Unterschied macht)


Nun ist meine Frage, ob und wenn wie, ich die Sortierreihenfolge ändern kann.

AFAICS stellt makeindex nicht viel zur Verfügung, um auf dessen Sortierreihenfolge Einfluß nehmen zu können. (Mir käme da nur besagter -g in den Sinn, u.U. noch -L und -T, wobei -T für Thai-Support steht und Dir nicht wirklich hilft; -L steht für `sort based on locale settings', was Dir nur dann helfen könnte, wenn Dein System auf griechisch eingestellt wäre und makeindex diesen -L auf Deinem System auch unterstützt)
Denkbar wäre in etwa, über das \index-Argument vorm @ makeindex zu beschummeln und die griechische Sortierreihenfolge beizubehalten (α=a, β=b, γ=c, ...) und im \grheading-Makro entsprechend zu berücksichtigen. Aber lohnt sich das? (Alle weiteren Unterscheidungen unterlägen dann immer noch makeindex bzw. Deinem Makro; was wäre z.B. an zweiter (dritter, vierter ...) Stelle zu tun?
BTW: es könnte IMHO nicht schaden, wenn Du Dich nach einem griechisch orientiertem LaTeX-Forum umschaust und dort ggf. nachfragst, wie sie denn dabeigehen, ihren Index zu erzeugen.

MfG

Diokletian
06-09-2014, 23:12
Vielen Dank für Deine Antwort. Irgendwie scheint die Sache wirklich vertrakt zu sein und Makeindex nicht wirklich eine Lösung zu bieten - schade. Auch wenn ich zugeben muß, daß mein Problem durchaus "speziellen" Charakter hat; aber es wäre praktisch, wenn sich die Autoren von Makeindex grundsätzlich mal mit Fremdsprachen auseinandersetzen würde. Ich kann mir nicht vorstellen, daß jemand, der z.B. mit dem kyrillischen Alphabet arbeitet, nicht vor einem ähnlichen Problem steht.

Mit besten Grüßen,

Dio

Johannes_B
07-09-2014, 09:40
Genau das mit den Fremdsprachen ist der Ursprung der Entwicklung von xindy.

Nicola hat mal die Unterschiede zwischen makeindex und xindy zusammengefasst: Differences between “xindy” and “makeindex” (http://tex.stackexchange.com/questions/199211/differences-between-xindy-and-makeindex/199841#199841).