PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Xindy: ".XDY has no value"



Münzi
25-10-2012, 14:08
Hallo Leute, da bin ich schon wieder mit einer neuen Frage:

Nachdem ich meine Bachelor-Thesis noch mit Acronym geschrieben habe wollte ich jetzt zu Glossaries wechseln. Bei der Einrichtung von Xindy habe ich allerdings Probleme.

Zu allererst mal ein Mehr-oder-minder-Minimalbeispiel nach einem Beispiel im Internet

\documentclass[a4paper]{scrartcl}
\usepackage[utf8]{inputenc} %Dateikodierung
\usepackage[T1]{fontenc} % Aktiviert EC-Schriftarten
\usepackage[ngerman]{babel} % Deutsche Einstellungen

\usepackage[ngerman]{translator}
%Paket laden
\usepackage[xindy]{glossaries}



\usepackage{hyperref}

%Ein eigenes Symbolverzeichnis erstellen
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}

%Den Punkt am Ende jeder Beschreibung deaktivieren
\renewcommand*{\glspostdescription}{}

%Glossar-Befehle anschalten
\makeglossaries

%Befehle für Symbole
\newglossaryentry{symb:Pi}{
name=$\pi$,
description={Die Kreiszahl.},
sort=symbolpi, type=symbolslist
}
\newglossaryentry{symb:Phi}{
name=$\varphi$,
description={Ein beliebiger Winkel.},
sort=symbolphi, type=symbolslist
}
\newglossaryentry{symb:Lambda}{
name=$\lambda$,
description={Eine beliebige Zahl, mit der der nachfolgende Ausdruck
multipliziert wird.},
sort=symbollambda, type=symbolslist
}

%Befehle für Abkürzungen
\newacronym{MS}{MS}{Microsoft}
\newacronym{CD}{CD}{Compact Disc}
%Eine Abkürzung mit Glossareintrag
\newacronym{AD}{AD}{Active Directory\protect\glsadd{glos:AD}}

%Befehle für Glossar
\newglossaryentry{glos:AD}{
name=Active Directory,
description={Active Directory ist in einem Windows 2000/" "Windows
Server 2003-Netzwerk der Verzeichnisdienst, der die zentrale
Organisation und Verwaltung aller Netzwerkressourcen erlaubt. Es
ermöglicht den Benutzern über eine einzige zentrale Anmeldung den
Zugriff auf alle Ressourcen und den Administratoren die zentral
organisierte Verwaltung, transparent von der Netzwerktopologie und
den eingesetzten Netzwerkprotokollen. Das dafür benötigte
Betriebssystem ist entweder Windows 2000 Server oder
Windows Server 2003, welches auf dem zentralen
Domänencontroller installiert wird. Dieser hält alle Daten des
Active Directory vor, wie z.B. Benutzernamen und
Kennwörter.}
}
\newglossaryentry{glos:AntwD}{name=Antwortdatei, description={Informationen zum
Installieren einer Anwendung oder des Betriebssystems.}}


\begin{document}
\tableofcontents{}

\section{Allgemeines}
In unserem Netzwerk setzen wir auf \gls{AD}. Durch den Einsatz
eines \gls{AD} erreichen wir bei \gls{MS}-Systemen, die mit einer
\gls{glos:AntwD} von \gls{CD} installiert wurden, die beste Standardisierung.

\section{Griechische Symbole}
Berechnungen mit \gls{symb:Pi} ergeben stets ein ungenaues Ergebnis,
denn \gls{symb:Pi} ist eine irrationale Zahl. Weiterhin gibt es noch
\gls{symb:Phi} und \gls{symb:Lambda}.

\cleardoublepage{}

%Glossar ausgeben
\printglossary[style=altlist,title=Glossar]

%Abkürzungen ausgeben
\deftranslation[to=German]{Acronyms}{Abkürzungsverzeichnis}
\printglossary[type=\acronymtype,style=long]

%Symbole ausgeben
\printglossary[type=symbolslist,style=long]

\end{document}

Dazu mein Xindy-Aufruf in Kile

'/media/A404336804333D1C/Programme/Texlive/bin/i386-linux/xindy' -I xindy -M %S -t %S.glg -o %S.gls %S.glo

Dabei muss ich den Pfad zu eingeben, da ich eine Texlive-Version von meinem USB-Stick verwende. Gleichzeitig ist auf meinem Ubuntu-System aber eine veraltete Texlive-Version vorinstalliert, die ich nicht löschen kann (Arbeitsrechner).

%S ist der Platzhalter in Kile für den Dateinamen der zu kompilierenden Datei ohne Dateiendung.

Nun erhalte ich beim Aufruf von Xindy folgenden Fehler:

EVAL: variable TEST.XDY has no value[/code]

Die Datei Text.xdy ist jedoch nicht leer. Aus Platzgründen kann ich den Inhalt hier nicht reinkopieren sondern hänge die Datei an (da keine .xdy-Dateien hochgeladen dürfen habe ich die Dateiendung zu .txt umgeändert).

Woran kann der Fehler liegen und was ist zu tun um ihn zu beheben? Wenn wenigstens das geschafft wäre, würde ich mich glücklich schätzen. Denn selbst wenn es funktioniert macht Xindy bei der Option "-L german" Probleme, da es das Modul nicht finden könne. Im Modulordner sind dagegen 18 verschiedene Module für die deutsche Sprache vorhanden.

Vielen Dank schon mal für eure Hilfe. Ich bin sicher einer von euch Cracks wird mir auch diesmal wieder helfen können. ;-)
Münzi

P.s.: Um Fragen warum ich nicht einfach Makeindex benutze vorzubeugen: Wenn ich Makeindex durchführe legt er mir aus mir nicht ersichtlichen Gründen keine .idx-Datei (oder löscht sie gleich wieder) und findet auch keine .ist-Datei. Meine Hoffnung war es also, dass Xindy das ganze automatisiert durchführt.


Edit: Um die Chancen auf eine Antwort zu verbessern habe ich die Frage auch bei golatex gestellt (http://www.golatex.de/xindy-xdy-has-no-value-t9744.html). Sollte das für jemanden ein Problem sein, bitte ich den Thread zu schließen, sofern der andere noch offen ist. Ansonsten würde ich versuchen die Informationen und Lösungsansätze der Foren zu synchronisieren so oft es geht, damit nicht mehrere das Rad neu erfinden müssen.

u_fischer
25-10-2012, 15:18
Nun, ich musst mit einem aktuellen TeXlive die Zeile


\usepackage[xindy={language=german,codepage=duden-utf8}]{glossaries}

benutzen. Dann läuft "pdflatex datei" mit anschließendem "makeglossaries datei" tadellos (und xindy findet duden-utf8-lang.xdy).

Die xindy-Aufrufe lauten dann z.B. so



xindy -L german -C duden-utf8 -I xindy -M "test-utf8" -t "test-utf8.slg" -o "test-utf8.syi" "test-utf8.syg"

xindy -L german -C duden-utf8 -I xindy -M "test-utf8" -t "test-utf8.glg" -o "test-utf8.gls" "test-utf8.glo"

Münzi
25-10-2012, 15:24
Nachdem ich noch etwas rumgespielt habe, klappt es jetzt plötzlich doch mit Makeindex. Weiß aber ganz ehrlich nicht was ich verändert haben soll.

Wie dem auch sei, vorerst ist das Problem gelöst. Wenn noch jmd. einen Tipp hat was das Problem mit Xindy ist, immer her damit.

Für Leute, die sich auch mit Xindy und Kile rumplagen, hier meine Einstellungen basierend auf dem Beispiel von Erik Wegner (http://ewus.de/tipp-1029.html):


\documentclass[a4paper]{scrartcl}
\usepackage{inputenc} %Dateikodierung
\usepackage[T1]{fontenc} % Aktiviert EC-Schriftarten
\usepackage{ae} % Schöne Schriften für PDF-Dateien
\usepackage{textcomp} % Text-Companion-Symbols (z. B. \texteuro)
\usepackage[ngerman]{babel} % Deutsche Einstellungen
\usepackage{lmodern} % Latin Modern

\usepackage[ngerman]{translator}
%Paket laden
\usepackage[
nonumberlist, %keine Seitenzahlen anzeigen
acronym, %ein Abkürzungsverzeichnis erstellen
toc, %Einträge im Inhaltsverzeichnis
section] %im Inhaltsverzeichnis auf section-Ebene erscheinen
{glossaries}


\usepackage{hyperref}

%Ein eigenes Symbolverzeichnis erstellen
\newglossary[slg]{symbolslist}{syi}{syg}{Symbolverzeichnis}

%Den Punkt am Ende jeder Beschreibung deaktivieren
\renewcommand*{\glspostdescription}{}

%Glossar-Befehle anschalten
\makeglossaries

%Diese Befehle sortieren die Einträge in den
%einzelnen Listen:
%makeindex -s datei.ist -t datei.alg -o datei.acr datei.acn
%makeindex -s datei.ist -t datei.glg -o datei.gls datei.glo
%makeindex -s datei.ist -t datei.slg -o datei.syi datei.syg

%Befehle für Symbole
\newglossaryentry{symb:Pi}{
name=$\pi$,
description={Die Kreiszahl.},
sort=symbolpi, type=symbolslist
}
\newglossaryentry{symb:Phi}{
name=$\varphi$,
description={Ein beliebiger Winkel.},
sort=symbolphi, type=symbolslist
}
\newglossaryentry{symb:Lambda}{
name=$\lambda$,
description={Eine beliebige Zahl, mit der der nachfolgende Ausdruck
multipliziert wird.},
sort=symbollambda, type=symbolslist
}

%Befehle für Abkürzungen
\newacronym{MS}{MS}{Microsoft}
\newacronym{CD}{CD}{Compact Disc}
%Eine Abkürzung mit Glossareintrag
\newacronym{AD}{AD}{Active Directory\protect\glsadd{glos:AD}}

%Befehle für Glossar
\newglossaryentry{glos:AD}{
name=Active Directory,
description={Active Directory ist in einem Windows 2000/" "Windows
Server 2003-Netzwerk der Verzeichnisdienst, der die zentrale
Organisation und Verwaltung aller Netzwerkressourcen erlaubt. Es
ermöglicht den Benutzern über eine einzige zentrale Anmeldung den
Zugriff auf alle Ressourcen und den Administratoren die zentral
organisierte Verwaltung, transparent von der Netzwerktopologie und
den eingesetzten Netzwerkprotokollen. Das dafür benötigte
Betriebssystem ist entweder Windows 2000 Server oder
Windows Server 2003, welches auf dem zentralen
Domänencontroller installiert wird. Dieser hält alle Daten des
Active Directory vor, wie z.B. Benutzernamen und
Kennwörter.}
}
\newglossaryentry{glos:AntwD}{name=Antwortdatei, description={Informationen zum
Installieren einer Anwendung oder des Betriebssystems.}}


\begin{document}
\tableofcontents{}

\section{Allgemeines}
In unserem Netzwerk setzen wir auf \gls{AD}. Durch den Einsatz
eines \gls{AD} erreichen wir bei \gls{MS}-Systemen, die mit einer
\gls{glos:AntwD} von \gls{CD} installiert wurden, die beste Standardisierung.

\section{Griechische Symbole}
Berechnungen mit \gls{symb:Pi} ergeben stets ein ungenaues Ergebnis,
denn \gls{symb:Pi} ist eine irrationale Zahl. Weiterhin gibt es noch
\gls{symb:Phi} und \gls{symb:Lambda}.

\cleardoublepage{}

%Glossar ausgeben
\printglossary[style=altlist,title=Glossar]

%Abkürzungen ausgeben
\deftranslation[to=German]{Acronyms}{Abkürzungsverzeichnis}
\printglossary[type=\acronymtype,style=long]

%Symbole ausgeben
\printglossary[type=symbolslist,style=long]

\end{document}

Unter Settings -> Configure Kile-> Tools -> Build folgende Einstellungen machen:

3 neue Tools anlegen, z. B. makeindex_acr, makeindex_glo und makeindex_sym

bei Command in jedes der 3 Tools den Pfad zum verwendeten makeindex eintragen.

Options von
makeindex_acr: -s %S.ist -t %S.alg -o %S.acr %S.acn
makeindex_glo: -s %S.ist -t %S.glg -o %S.gls %S.glo
makeindex_sym: -s %S.ist -t %S.slg -o %S.syi %S.syg

%S ist dabei ein Platzhalter für den Dateinamen eures Latex-Dokuments. Heißt euer Dokument xy.tex dann wird automatisch überall dort wo %S steht xy eingesetzt.

Anschließend hintereinander erst PDFLatex, dann die 3 Tools und dann wieder PDFLatex ausführen (am besten durch Quickbulid) und es sollte funktionieren.

Münzi
25-10-2012, 15:41
Nun, ich musst mit einem aktuellen TeXlive die Zeile


\usepackage[xindy={language=german,codepage=duden-utf8}]{glossaries}

benutzen. Dann läuft "pdflatex datei" mit anschließendem "makeglossaries datei" tadellos (und xindy findet duden-utf8-lang.xdy).

Die xindy-Aufrufe lauten dann z.B. so



xindy -L german -C duden-utf8 -I xindy -M "test-utf8" -t "test-utf8.slg" -o "test-utf8.syi" "test-utf8.syg"

xindy -L german -C duden-utf8 -I xindy -M "test-utf8" -t "test-utf8.glg" -o "test-utf8.gls" "test-utf8.glo"

Super, danke mal wieder Ulrike. Xindy klappt jetzt auch. Ich dachte ehrlich gesagt eigentlich, dass ich mit Xindy nur noch einen statt 3 Aufrufe machen muss und das Perl-Skript sich den Rest zusammensammelt.

Worin besteht denn dann eigentlich der große Unterschied zwischen dem Makeindex-Aufruf und der Lösung des Problems über Xindy.

u_fischer
25-10-2012, 15:47
Xindy kann besser mit utf8 umgehen.

Abgesehen davon, nur um Missverständnisse zu vermeinden: Ich habe nicht xindy direkt aufgerufen. Die Aufrufe, die ich aufgeschrieben habe, sind die die das Skript makeglossaries ausführt.

Münzi
25-10-2012, 15:53
Abgesehen davon, nur um Missverständnisse zu vermeinden: Ich habe nicht xindy direkt aufgerufen. Die Aufrufe, die ich aufgeschrieben habe, sind die die das Skript makeglossaries ausführt.

Okay, das heißt aber dennoch, dass ich diese Aufrufe nach dem ersten PDFLatex-Durchlauf eintippen muss oder?

u_fischer
25-10-2012, 15:57
Okay, das heißt aber dennoch, dass ich diese Aufrufe nach dem ersten PDFLatex-Durchlauf eintippen muss oder?

Nein. Du musst "makeglossaries datei" eintippen.

Münzi
25-10-2012, 16:27
Nein. Du musst "makeglossaries datei" eintippen.

Stimmt, das hatte ich ganz übersehen. Mhmm, wenn ich das durchlaufen lasse findet er xindy nicht, was sicher an der portablen Installation liegt. So wie bei allen anderen Routinen muss ich vermutlich ihm den Pfad von Xindy vorgeben. Dafür muss ich, nehme ich an, die makeglossaries-Datei bearbeiten und irgendwo den Pfad eintragen, richtig?

Bringt es Nachteile wenn ich die xindy-Befehle direkt aufrufe ohne über Makeglossaries zu gehen?

u_fischer
25-10-2012, 16:30
Ich würde einfach den Pfad zu den Binaries in die PATH-Variable einfügen. Hat denn die portable TeXLive-Version kein Kommandofenster, wo die Path-Variable schon richtig gesetzt ist?

Münzi
25-10-2012, 16:58
Vielen Dank für deine ganze Hilfe Ulrike.

Ich glaube ich verstehe aber gerade nicht ganz was du meinst. Wo soll die PATH-Variable gesetzt werden. Ich kenne nur die grundsätzlichen Möglichkeiten des Setzens in Ubuntu von hier (http://wiki.ubuntuusers.de/Umgebungsvariable). Die lassen sich aber nicht anwenden, denn sie verschwinden sobald ich die Konsole zumache und eigentlich arbeite ich ja auch mit Kile um nicht in der Konsole rumeiern zu müssen.

u_fischer
25-10-2012, 17:05
Kile sollte doch in der Lage sein, die path-Variable vor Aufruf eine Programms/Skript zu setzen. Das kann ja sogar winedt.

Und es sollte doch auch in Linux möglich sein, die Path-Variable für eine "Session" zu setzen.

Münzi
25-10-2012, 20:01
Kile sollte doch in der Lage sein, die path-Variable vor Aufruf eine Programms/Skript zu setzen. Das kann ja sogar winedt.

Bestimmt ist Kile das auch und ich bin nur zu doof die Option richtig zu nutzen. Ich habe mal ein Bild von meiner Texinputs-Einstellung gemacht und angehängt. Bitte verprügelt mich aber nicht dafür wie ich die Texgrundlagen hier vergewaltige. :D

Wäre echt nett wenn jmd. das mal narrensicher aufschreiben kann was ich eintragen soll. Denn ihr wisst doch, wenn etwas idiotensicher ist kann man sicher sein, dass nur ein Idiot es benutzen wird (frei nach Darwins Law). ;-)

Gruß und Dank
Münzi

http://www10.pic-upload.de/thumb/25.10.12/je2r9ovbtecb.png (http://www.pic-upload.de/view-16611698/Screenshot.png.html)

Und dazu die Fehlermeldung:


makeglossaries version 2.04 (2012-05-19)
added glossary type 'main' (glg,gls,glo)
added glossary type 'acronym' (alg,acr,acn)
added glossary type 'symbolslist' (slg,syi,syg)
xindy -L german -C duden-utf8 -I xindy -M "test2" -t "test2.alg" -o "test2.acr" "test2.acn"

***Call to xindy failed***

Check 'test2.alg' for details
sh: xindy: not found

Münzi
26-10-2012, 12:49
Hab es jetzt so gelöst, dass ich einen Link auf das xindy-Script in meinen Texmf-Ordner im Home-Verzeichnis gepackt habe. Dadurch findet er xindy und kompiliert auch mit makeglossaries wunderbar. Ist natürlich nicht so elegant, wie wenn man irgendwo die Path-Variablen ändern würde, aber ich komm damit echt nicht klar ohne root zu sein.

Interessieren würde mich nun lediglich ob makeglossaries noch mehr macht als nur die 3 xindy-Befehle für Abk.-Verzeichnis, Symbol-Verzeichnis und Glossar aufzurufen.

Wer da mehr weiß, wär schön zu wissen!

Danke dir auf jeden Fall schonmal Ulrike! Hast mir sehr geholfen.