PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Latex Stildatei wird nicht eingebunden



Frank Walter
28-03-2008, 16:01
Hallo,

ich habe hier im Forum einige nützliche Tipps rund um die Einbindung einer eigenen Stildatei gefunden. Leider klappt das nicht so wie ich erwarten würde. Ich habe mit eine Bat-Datei geschrieben, die ich bei jedem neuen Sachworteintrag/Index-Eintrag manuell durchlaufen lasse:

"D:\Programme\MiKTeX 2.7\miktex\bin\makeindex.exe" -c -g -l -s Dissertation.ist C:\Forschung\Statusdatei\Dissertation.idx

pause


Diese soll eigentlich Makeindex dazu veranlassen meine eigene Stildatei Dissertation.ist zu berücksichtigen. Darin steht:

quote '+'

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

(diese ist hier aus dem Forum entnommen)

Jetzt sollte doch eigentlich im Register der Großbuchstabe des entsprechenden Eintragbereiches stehen, oder? Das tut es bei mir nicht. Auch sind die Untereinträge nicht durch Punkte von der Seitenangabe voneinander getrennt. Eigentlich sieht alles so aus, als würde ich keine eigene Stildatei verwenden. Kann mir jemand einen Tipp geben was hier falsch ist, denn makeindex liefer auch keine Fehlermeldungen beim Durchlauf.


Gruß Frank

rais
28-03-2008, 19:57
Hallo und Herzlich Willkommen :)
was steht denn in Deiner .ilg?

MfG

Frank Walter
30-03-2008, 00:03
Sorry für die späte Meldung, in der *.ilg steht folgendes:


This is D:\Programme\MiKTeX 2.7\miktex\bin\makeindex.exe, version 2.14 [02-Oct-2002] (kpathsea + Thai support).
Scanning input file Dissertation.idx....done (7 entries accepted, 0 rejected).
Sorting entries....done (22 comparisons).
Generating output file Dissertation.ind....done (22 lines written, 0 warnings).
Output written in Dissertation.ind.
Transcript written in Dissertation.ilg.

rais
30-03-2008, 00:55
Moin Frank,

in der *.ilg steht folgendes:


This is D:\Programme\MiKTeX 2.7\miktex\bin\makeindex.exe, version 2.14 [02-Oct-2002] (kpathsea + Thai support).
Scanning input file Dissertation.idx....done (7 entries accepted, 0 rejected).
Sorting entries....done (22 comparisons).
Generating output file Dissertation.ind....done (22 lines written, 0 warnings).
Output written in Dissertation.ind.
Transcript written in Dissertation.ilg.
eigentlich vermisse ich einen Hinweis in der Art


Scanning style file ./Dissertation.ist...done (10 attributes redefined, 0 ignored)
--ist Deine .ilg vielleicht älter als Deine .idx? Dann wird Deine .ist wohlmöglich nicht gefunden ... BTW: wozu gibst Du den Pfad zu Deiner .idx an, nicht aber den Pfad zu Deiner .ist? Aus welchem Pfad heraus versuchst Du den Aufruf Deiner Bat-Datei? Bzw.: Ausgehend von diesem Pfad, in dem Du Deine .bat aufrufst: was bekommst Du bei


kpsewhich Dissertation.ist

?

MfG

Frank Walter
31-03-2008, 10:22
Hallo Rainer,

erst mal danke für Deine Hilfe. Leider muss ich zugeben, dass ich erst ziemlich wenig Ahnung beim Umgang mit Latex habe (Dipl.-Arbeit in Word --> Umstieg), so dass ich nicht genau weiß was du mit der Anmerkung

kpsewhich Dissertation.ist

meintest, bzw. was genau ich machen soll. Meine .ilg und die idx sind gleich alt und ändern sich auch gemeinsam bei jedem Durchlauf. Wo soll ich den Pfad meiner .ist angeben? Ich dachte es genügt, wenn ich makeindex das in der Bat.-Datei angebe oder meinst Du genau das, nämlich, dass keine vollständige Pfadangabe dort steht? Zur Übersicht: Ich habe mit Winedt ein Projekt (Dissertation) begonnen und habe dieses in einem Ordner (Statusdatei) abgespeichert. Hierin liegen alle weiteren Dateien ebenfalls, also die Dissertation.idx usw. Ferner auch die Bat.-Datei.


Gruß Frank

rais
31-03-2008, 13:10
Moin Frank,

so dass ich nicht genau weiß was du mit der Anmerkung

kpsewhich Dissertation.ist

meintest, bzw. was genau ich machen soll.

kpsewhich ist ein Programm, das Dir hier den kompletten Zugriffspfad zur Datei `Dissertation.ist' liefern kann ... so `Dissertation.ist' denn per kpathsea gefunden wird.


Meine .ilg und die idx sind gleich alt und ändern sich auch gemeinsam bei jedem Durchlauf. Wo soll ich den Pfad meiner .ist angeben? Ich dachte es genügt, wenn ich makeindex das in der Bat.-Datei angebe oder meinst Du genau das, nämlich, dass keine vollständige Pfadangabe dort steht?

Nö, mich hat nur irritiert, daß Du es bei der .idx-Datei als nötig angesehen hast, eben diesen Pfad anzugeben.

Versuch's mal anders herum:
Lege Dir einen neuen Ordner an, da kopierst Du Deine `Dissertation.ist' hinein, dazu vielleicht als `foo.tex':


\documentclass{article}
\usepackage{makeidx}
\makeindex
\begin{document}
foo\index{foo}
bar\index{bar}
\printindex
\end{document}

Nun öffnest Du eine Eingabeaufforderung, begibst Dich in diesen Ordner und rufst


latex foo.tex
makeindex foo.idx -c -g -l -s Dissertation.ist
latex foo.tex
latex foo.tex

auf.
Wie der Index bei mir mit dieser Methode rausgekommen ist, siehst Du im Anhang.

Wenn das bei Dir auch so funktioniert und nur mit Deiner .bat nicht, dann liegt es an Deiner .bat -- evtl. musst Du darin ein cd zu/Deinem/Projekt vorstellen, dann sollte auch der Pfad darin zur .idx unnötig sein.

MfG

Frank Walter
31-03-2008, 14:58
Danke für die sehr schnelle Hilfe. Leider geht auch dieses bei mir nicht. Wenn ich die foo.tex durchlaufen lasse erschein dann nachher das Index so:


Index

bar, 1
foo, 1

und nicht wie in Deinem Beispiel


Dies hier brachte makeidx:


Scanning style file Dissertation.ist..........done (10 attributes redefined, 0 i
gnored).
Scanning input file foo.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file foo.ind....done (11 lines written, 0 warnings).
Output written in foo.ind.
Transcript written in foo.ilg.

E:\test>latex foo.tex
This is pdfTeX, Version 3.141592-1.40.4 (MiKTeX 2.7)
entering extended mode
(foo.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, dumylang, nohyphenation, ge
rman, ngerman, french, loaded.
("D:\Programme\MiKTeX 2.7\tex\latex\base\article.cls"
Document Class: article 2005/09/16 v1.4f Standard LaTeX document class
("D:\Programme\MiKTeX 2.7\tex\latex\base\size10.clo"))
("D:\Programme\MiKTeX 2.7\tex\latex\base\makeidx.sty")
Writing index file foo.idx
(foo.aux) (foo.ind [1] [2]) (foo.aux) )
Output written on foo.dvi (2 pages, 1028 bytes).
Transcript written on foo.log.

Jetzt stehe ich wirklich auf dem Schlauch. Mach ich global was verkehrt?



Gruß Frank

rais
31-03-2008, 18:45
Moin Frank,


Scanning style file Dissertation.ist..........done (10 attributes redefined, 0 i
gnored).
das ist doch schonmal was: `Dissertation.ist' wird von makeindex auch benutzt.


Scanning input file foo.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file foo.ind....done (11 lines written, 0 warnings).
Output written in foo.ind.
Transcript written in foo.ilg.
Ok, die Meldungen sehen bei mir auch so aus: was wird in Deine foo.ind geschrieben?


Output written on foo.dvi (2 pages, 1028 bytes).

sogar das passt.;-)
Vielleicht doch einmal mit pdflatex direkt pdf ausgeben lassen ...

MfG

Frank Walter
01-04-2008, 10:22
Hi,

auch Dir einen guten Morgen. In meiner foo.ind steht folgendes:

\begin{theindex}

\item bar, 1

\indexspace

\item foo, 1

\end{theindex}

In der foo.idx dies:

\indexentry{foo}{1}
\indexentry{bar}{1}

Wenn ich das PDFLatex direkt duurchlaufen lasse, bekomme ich leider auch keine richtige Einbindung der *-ist. ????

rais
01-04-2008, 11:49
Moin Frank,


\begin{theindex}

\item bar, 1

\indexspace

\item foo, 1

\end{theindex}

das sieht in der Tat so aus, als ob Du makeindex ohne `-s Dissertation.ist' aufrufst -- rufst Du makeindex vielleicht zweimal auf, einmal mit -s und einmal ohne?


Generating output file foo.ind....done (11 lines written, 0 warnings).

Statt der hier angegebenen 11 Zeilen sehe ich nur 9 (inkl. der Leerzeilen dazwischen), wie es bei


makeindex foo.idx
wäre ... dann stünde in der .ilg aber auch nur 9 Zeilen...
Versuch einmal folgendes: Lösch mal alle nicht selbst erstellten Dateien, also nur `Dissertation.ist' und `foo.tex' sollten in Deinem Testordner übrig bleiben, dann


latex foo.tex
makeindex foo.idx -c -g -l -s Dissertation.ist -t foo.xlg -o foo.xnd
latex foo.tex
latex foo.tex

poste die so entstandene `foo.xnd' und schau nach, ob Du auch wieder eine `foo.ind' bekommen hast. Wenn ja, dann kannst Du `foo.ilg' mal mit `foo.xlg' vergleichen.;)

MfG

Frank Walter
01-04-2008, 12:19
Hi,

also habe alles so gemacht und keine foo.ind bekommen. In der foo.xlg steht folgendes:

This is makeindex, version 2.14 [02-Oct-2002] (kpathsea + Thai support).
Scanning style file Dissertation.ist..........done (10 attributes redefined, 0 ignored).
Scanning input file foo.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file foo.xnd....done (11 lines written, 0 warnings).
Output written in foo.xnd.
Transcript written in foo.xlg.


und hier die foo.xnd:


\begin{theindex}
{\bfseries B}\nopagebreak%
\indexspace\nopagebreak
\item bar\dotfill 1

\indexspace
{\bfseries F}\nopagebreak%
\indexspace\nopagebreak
\item foo\dotfill 1

\end{theindex}

rais
01-04-2008, 15:19
Moin Frank,


und hier die foo.xnd:


\begin{theindex}
{\bfseries B}\nopagebreak%
\indexspace\nopagebreak
\item bar\dotfill 1

\indexspace
{\bfseries F}\nopagebreak%
\indexspace\nopagebreak
\item foo\dotfill 1

\end{theindex}
und genau so sollte Deine foo.ind aussehen, wenn Du die blau hinterlegten Parameter beim makeindex wieder weglässt -- bei mir tut es das -- und dann kommt auch das richtige Ergebnis bei raus. Hast Du gestern abend bzw. heute morgen noch irgend etwas anders gemacht?
Klingt ja fast so, als hättest Du nicht bzw. nicht nur per Konsole kompiliert.

BTW: lass ggf. den `-t foo.xlg' erstmal noch mit drin und lösch vorm Kompilieren nochmal alles außer `Dissertation.ist' und `foo.tex' ...
MfG

Frank Walter
01-04-2008, 17:56
oh ja ich habe da wohl einen Fehler gemacht. Also ich habe jetzt genau wie du gesagt hast im Editor (Winedt) die foo.tex kompiliert und über die Konsole mit dem obigen Code makeindex aufgerufen. Dabei kamen folgende beiden Dateien raus.

foo.ilg:


This is D:\Programme\MiKTeX 2.7\miktex\bin\makeindex.exe, version 2.14 [02-Oct-2002] (kpathsea + Thai support).
Scanning input file foo.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file foo.ind....done (9 lines written, 0 warnings).
Output written in foo.ind.
Transcript written in foo.ilg.


und die foo.xlg:


This is makeindex, version 2.14 [02-Oct-2002] (kpathsea + Thai support).
Scanning style file Dissertation.ist..........done (10 attributes redefined, 0 ignored).
Scanning input file foo.idx....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file foo.ind....done (11 lines written, 0 warnings).
Output written in foo.ind.
Transcript written in foo.xlg.

dabei sind aber, wie Du bereits gesagt hast, unterschiedliche Anzahlen von Linien entstanden. ich weiß wirklich nciht mehr was ich noch machen soll, dies ist ja nun schon das einfachste Beispiel, was möglich ist. Hast Du noch einen Rat?

Gruß Frank

rais
01-04-2008, 19:17
Moin Frank,

Also ich habe jetzt genau wie du gesagt hast im Editor (Winedt) die foo.tex kompiliert und über die Konsole mit dem obigen Code makeindex aufgerufen. (..)

nun ja, dann ruft winedt halt makeindex mit auf, vermutlich nur mit der .idx als Parameter -- und dieser Aufruf überschreibt Deine `foo.ind', die Du mit Deinem eigenen makeindex-Aufruf erstellt hast.


ich weiß wirklich nciht mehr was ich noch machen soll, dies ist ja nun schon das einfachste Beispiel, was möglich ist. Hast Du noch einen Rat?

Ich benutze winedt nicht, könnte mir aber vorstellen, daß Du mit einer Suchmaschine Deiner Wahl und `winedt + makeindex' als Suchbegriffe den einen oder anderen Hinweis findest, wie Du die Aufrufparameter für makeindex bei winedt anpassen kannst -- dann brauchst Du Deine .bat nicht mal mehr, die zusätzlichen Parameter sollte winedt auch an makeindex durchreichen können.;)

MfG

Frank Walter
02-04-2008, 20:44
Oh, du hast recht. Danke. Winedt ruft makeindex selbst auf und ich brauche die Bat. gar nicht. Da muß man erst mal drauf kommen. Nochmal vielen vielen Dank. WErd mal sehen, ob mir jemand die Einstellungen in Winedt erklären kann.

Gruß Fank