PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \makeindex \makeglossaries interferieren



chris1234567
06-05-2009, 16:08
Führt man das Minimalbeispiel aus, so wird der Index erstellt. -> Passt
Möchte man nun aber auch ein Glossar einbauen (Auskommentierungen entfernen!) -> Index ist weg, Glossar da. Warum?, ich will doch beides!


\documentclass[a4paper,12pt]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{makeidx}
\makeindex
\usepackage[acronym] {glossaries}
%\makeglossaries
%\newglossaryentry{glos:AW}{name=Answer, description={This is an answer}}
\begin{filecontents}{cv4.ist} %Je nach Filename ändern!

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."

\end{filecontents}

\begin{document}
\section{Index Test}
test\index{test}\\
nochntest\index{nochntest}\\
undnocheiner\index{undnocheiner}\\
bla\index{bla}\\
blabla\index{bla!blabla}\index{bla!blabla!blabla}
%\gls{glos:AW}
\printindex
%\printglossary[style=altlist,title=Glossary]

\end{document}

bobmalaria
06-05-2009, 16:57
hi,

vermutlich musst du den makeindex aufruf aendern. was passiert denn wenn du deinen index und anschliessend dein glossar ueber die konsole/eingabeaufforderung aufrufst?

je nach editor kann man diese prozedur automatisieren

chris1234567
06-05-2009, 17:38
für den index verwende ich
-s "%tm.ist" -i "%tm.idx" -o "%tm.ind"
und für das glossar
-s "%tm.ist" -t "%tm.glg" -o "%tm.gls" "%tm.glo"

wenn ich den index erstelle bekomme ich ein dokument mit index. wenn ich dann das glossar miterstelle habe ich nur mehr das glossar. der index verschwindet. liegt es vielleicht an der gleichen *.ist datei für zwei unterschiedliche ausgaben?

BG C

bobmalaria
06-05-2009, 19:41
hi,

ich habe gerade dein beispiel versucht und keine probleme gehabt.

ich habe pdflatex
makeindex file
makeglossaries (bei glossaries mitgeliefertes perl skript)
pdflatex
pdflatex

laufen lassen

gruss

rais
06-05-2009, 22:21
Moin moin,


wenn ich den index erstelle bekomme ich ein dokument mit index. wenn ich dann das glossar miterstelle habe ich nur mehr das glossar. der index verschwindet.

so ich Dein Problem korrekt verstanden hab', ist hier der Name Deiner .tex ``cv4.tex'' -- in dem Fall stellt sich mir Dein Problem wie folgt dar:
Die filecontents-Umgebung beschreibt Deine Index-Stildatei `cv4.ist'.
Durch Verwendung des glossaries-Pakets wird nun aber ebenfalls eine 'cv4.ist' geschrieben ... schau vllt nochmal in diese `cv4.ist' *nach* (pdf)LaTeX, ob da auch wirklich das drinsteht, was Du per filecontents-Umgebung vorgegeben hast.


liegt es vielleicht an der gleichen *.ist datei für zwei unterschiedliche ausgaben?

Auch das wäre zumindest bedenklich: in der verwendeten makeindex-Stildatei wird u. a. `preamble'/`postamble' definiert, bzw. wenn nicht, wird auf ``\\begin{theindex}\n'' für `preamble' und ``\n\n\\end{theindex}\n'' für `postamble' makeindex-seitig zurückgegriffen ... was genau sollte innerhalb eines Dokuments zweimal die Verwendung der theindex-Umgebung bewirken?

Alternativ: schau in Deine .ilg und .glg (bzw. poste beide).

MfG

chris1234567
07-05-2009, 08:38
Hey, Danke! Beim ersten Durchlauf ohne den glossaries Teil, wird korrekt das *.ist File geschrieben:


%% LaTeX2e file `cv4.ist'
%% generated by the `filecontents' environment
%% from source `cv4' on 2009/05/07.
%%

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."



... und das *.ilg File lautet:

This is C:\Programme\MiKTeX 2.7\miktex\bin\makeindex.exe, version 2.14 [02-Oct-2002] (kpathsea + Thai support).
Scanning style file cv4.ist..........done (10 attributes redefined, 0 ignored).
Scanning input file cv4.idx....done (6 entries accepted, 0 rejected).
Scanning input file stdin...done (0 entries accepted, 0 rejected).
Overall 2 files read (6 entries accepted, 0 rejected).
Sorting entries....done (18 comparisons).
Generating output file cv4.ind....done (23 lines written, 0 warnings).
Output written in cv4.ind.
Transcript written in cv4.ilg.


Wenn ich nun auch die Auskommentierungen verwende sieht die *.ist Datei plötzlich so aus:


% makeindex style file created by the glossaries package
% for document 'cv4' on 2009-5-7
actual '?'
encap '|'
level '!'
quote '"'
keyword "\\glossaryentry"
preamble "\\glossarysection[\\glossarytoctitle]{\\glossarytitle}\\glossarypreamble\n\\begin{thegl ossary}\\glossaryheader\n"
postamble "\%\n\\end{theglossary}\\glossarypostamble\n"
group_skip "\\glsgroupskip\n"
item_0 "\%\n"
item_1 "\%\n"
item_2 "\%\n"
item_01 "\%\n"
item_x1 "\\relax \\glsresetentrylist\n"
item_02 "\%\n"
item_12 "\%\n"
item_x2 "\\relax \\glsresetentrylist\n"
delim_0 "\{\\glossaryentrynumbers\{\\relax "
delim_1 "\{\\glossaryentrynumbers\{\\relax "
delim_2 "\{\\glossaryentrynumbers\{\\relax "
delim_t "\}\}"
delim_n "\\delimN "
delim_r "\\delimR "
headings_flag 1
heading_prefix "\\glsgroupheading\{"
heading_suffix "\}\\relax \\glsresetentrylist "
symhead_positive "glssymbols"
numhead_positive "glsnumbers"
page_compositor "."


... und das *.glg File:


This is C:\Programme\MiKTeX 2.7\miktex\bin\makeindex.exe, version 2.14 [02-Oct-2002] (kpathsea + Thai support).
Scanning style file cv4.ist.............
** Input style error (file = cv4.ist, line = 16):
-- Unknown specifier item_02.
..............done (27 attributes redefined, 1 ignored).
Scanning input file cv4.glo....done (1 entries accepted, 0 rejected).
Sorting entries...done (0 comparisons).
Generating output file cv4.gls....done (6 lines written, 0 warnings).
Output written in cv4.gls.
Transcript written in cv4.glg.


D.h. durch den glossaries Aufruf wird die *.ist Datei so verändert, dass der Index gar nicht mehr funktionieren kann. Aber die Definition von Index:

-s "%tm.ist" -i "%tm.idx" -o "%tm.ind"
besagt doch: -s style file (nimm diesen Style) -i input file (nimm diese Werte als input) -t transfer (Ausgabe an das *.ind file)

... und der glossaries Aufruf:

-s "%tm.ist" -t "%tm.glg" -o "%tm.gls" "%tm.glo"
bedeutet doch auch -s style file (nimm diesen Style). Warum wird diesem Aufruf auf das *.ist File geschrieben, wenn der Befehl nur Lesen bedeutet?

Wie kann ich das Problem denn jetzt angehen? Meiner Meinung nach habe ich ein File mit der Endung *.ist zu wenig zur Verfügung um dieses Problem zu lösen. Oder?

BG C

rais
07-05-2009, 09:49
Moin moin,


D.h. durch den glossaries Aufruf wird die *.ist Datei so verändert, dass der Index gar nicht mehr funktionieren kann. Aber die Definition von Index:

-s "%tm.ist" -i "%tm.idx" -o "%tm.ind"
besagt doch: -s style file (nimm diesen Style) -i input file (nimm diese Werte als input) -t transfer (Ausgabe an das *.ind file)

... und der glossaries Aufruf:

-s "%tm.ist" -t "%tm.glg" -o "%tm.gls" "%tm.glo"
bedeutet doch auch -s style file (nimm diesen Style). Warum wird diesem Aufruf auf das *.ist File geschrieben, wenn der Befehl nur Lesen bedeutet?

makeindex liest das Teil ja auch nur in beiden Fällen ... schau vielmehr in die glossaries-Doku, welche Dateien davon angelegt werden.


Wie kann ich das Problem denn jetzt angehen? Meiner Meinung nach habe ich ein File mit der Endung *.ist zu wenig zur Verfügung um dieses Problem zu lösen. Oder?



\begin{filecontents}{\jobname-wasanderes.idx}
%Dein Stil
\end{filecontents}

und im Aufruf für makeindex (Index):

-s "%tm-wasanderes.ist" -i "%tm.idx" -o "%tm.ind"
sollte so tun.

MfG

chris1234567
07-05-2009, 11:05
Du bist genial! Vielen Dank! Es funktioniert! Damit andere noch profitieren können, zusammenfassend: Index und Glossar erstellen:


\documentclass[a4paper,12pt]{scrartcl}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage{makeidx}
\makeindex
\usepackage[acronym] {glossaries}
\makeglossaries
\newglossaryentry{glos:AW}{name=Answer, description={This is an answer}}
\begin{filecontents}{\jobname-wasanderes.ist}

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."

\end{filecontents}

\begin{document}
\section{Index Test}
test\index{test}\\
nochntest\index{nochntest}\\
undnocheiner\index{undnocheiner}\\
bla\index{bla}\\
blabla\index{bla!blabla}\index{bla!blabla!blabla}
\gls{glos:AW}
\printindex
\printglossary[style=altlist,title=Glossary]

\end{document}

Im TeXnicCenter unter Build -> Define new output Profile (Alt+F7) aufrufen.
Für den Makeindexaufruf in LaTeX unter Command line arguments to pass to MakeIndex

-s "%tm-wasanderes.ist" -i "%tm.idx" -o "%tm.ind"
einfügen

Dann unter Postprocessor eine neue Routine hinzufügen, mit den Argumenten


-s "%tm.ist" -t "%tm.glg" -o "%tm.gls" "%tm.glo"

Ausführen, Index und Glossar werden erstellt!

BG C