Glossar nach Löschung der Hilfsdateien

Erstellen von Index, Glossar, Symbolverzeichnis, einer Nomenklatur etc. mit MakeIndex oder Xindy


die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Glossar nach Löschung der Hilfsdateien

Beitrag von die_nase »

Hallo zusammen,

ich versuche mich gerade an der Erstellung eines Symbolverzeichnisses. Leider funktionieren ein paar Sachen noch nicht; ein Blick in das glossaries-Manual hat mich auch nicht weitergebracht.

Das Hauptproblem ist, dass, sobald ich Änderungen an den Glossar-Einträgen vornehme, diese Änderungen im zweiten Gesamtdurchlauf nicht berücksichtigt werden. Den folgenden Code habe ich als *.engine gespeichert und kompiliere mit TexShop (auf OS X) den Code aus dem Minimalbeispiel (siehe unten). Lösche ich alle Hilfsdateien und kompiliere erneut, dann werden die Änderungen berücksichtigt. Kann jemand das Problem reproduzieren oder hat eine Vermutung, woran das liegen könnte?

Dann noch ein, zwei Fragen:

Wie kann man die Symbole nach griechischen und dann römischen Buchstaben sortieren lassen? - Ich habe bisher ein optionales Argument benutzt (also in [ ] angegeben, welches den römischen Buchstaben zu dem griechischen Zeichen enthielt). Kann glossaries automatisch \alpha, usw. sortieren?

Außerdem wird mir in dem Symbolverzeichnis (in der Seiten-Spalte) auch die Seite angezeigt, auf der sich das Symbolverzeichnis selbst befindet. Kann man das abstellen bzw. beeinflussen?

Ich habe einen Teil des Beispiels aus einer Vorlage kopiert. Aus anderen Quellen weiß ich, dass \ensuremath nicht das Beste ist. Ich dachte, dass ich $ $ verwenden könnte, das ging jedoch leider nicht. Wie würdet ihr die Formelzeichen in der Matheumgebung verwenden?



#!/bin/sh
pdflatex "$1"
pdflatex "$1"
bfname=$(dirname "$1")/"`basename "$1" .tex`"
makeindex -s "$bfname".ist -t "$bfname".alg -o "$bfname".acr "$bfname".acn
makeindex -s "$bfname".ist -t "$bfname".glg -o "$bfname".gls "$bfname".glo
pdflatex "$1"
Die Glossar-Einträge sind teilweise erfunden (also nur zum testen gedacht).
\documentclass{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}

\AfterPackage*{hyperref}{
	\usepackage[
		automake,
		symbols,
			]{glossaries}

\makeglossaries
%\setkeys{glslink}{hyper=false}

\usepackage{longtable}
\usepackage{booktabs}
\usepackage{xfrac}

\newcommand*{\newsymbol}[5][]{
	\newglossaryentry{#2}{
		type=symbols,
		description={},
		name={#3},
		symbol={\ensuremath{#4}},
		user1={\ensuremath{\mathrm{#5}}},
		sort={#3}								
	}
}


\defglsentryfmt[symbols]{
	\ifmmode
	\glssymbol{\glslabel}
	\else
	\glsgenentryfmt~\glsentrysymbol{\glslabel}
	\fi
}

\newglossarystyle{Langetabelle}{
	\renewenvironment{theglossary}{
		\begin{longtable}{lp{5cm}ll}
	}{
		\end{longtable}
	}
	\renewcommand*{\glossaryheader}{
	\toprule
	\bfseries Symbol & \bfseries Einheit & \bfseries Name & \bfseries Seite(n)
	\tabularnewline\midrule\endhead
	\bottomrule\endfoot
	}
	\renewcommand*{\glsgroupheading}[1]{}
	\renewcommand*{\glsgroupskip}{}
	\renewcommand*{\glossentry}[2]{
	\glsentryitem{##1}
	\glstarget{##1}{\glossentrysymbol{##1}} &
	\glsentryuseri{##1} &
	\glossentryname{##1} &
	##2\tabularnewline
	}
	}
}% Ende von AfterPackage

\usepackage[colorlinks,linkcolor=blue]{hyperref}



\begin{document}

\newsymbol{alpha}{Winkel}{\alpha}{^\circ}
\newsymbol{beta}{Koeffizient}{\beta}{\sfrac{1}{s}}
\newsymbol{a}{Beschleunigung}{a}{\sfrac{m}{s^2}}
\newsymbol{t}{Zeit}{t}{s}
\newsymbol{f}{Frequenz}{f}{Hz}
\newsymbol{v}{Geschwindigkeit}{v}{\sfrac{m}{s}}
\newsymbol{g}{Gravitationskonstante}{g}{9{,}81\,\sfrac{m}{s^2}}
\newsymbol{p}{Impuls}{p}{kg \sfrac{m}{s}}
\newsymbol{x}{Weg}{s}{m}
\newsymbol{Gamma}{Winkel groß}{\Gamma}{^\circ}
\newsymbol{Delta}{Koeffizient groß}{\Delta}{\sfrac{1}{s}}

\glsaddall 
\printsymbols[style=Langetabelle, title=Symbolverzeichnis]


\newpage
	\gls{alpha}   \gls{beta}   \gls{a}   \gls{t}   \gls{f}   \gls{v}   \gls{g}   \gls{p}   \gls{x}   \gls{Gamma}   \gls{Delta}
\newpage
	\gls{alpha}   \gls{beta}   \gls{a}   \gls{t}   \gls{f}   \gls{v}   \gls{g}   \gls{p}   \gls{x}   \gls{Gamma}   \gls{Delta}

\end{document}


Besserwisser

Beitrag von Besserwisser »

Nur ganz allgemein: Da man hyperref i. d. R. als eines der letzten Pakete laden sollte, ist es eher keine so gute Idee, alle anderen Pakete via \AfterPackage* erst nach hyperref zu laden. Gerade für ein bereits geladenes longtable enthält hyperref speziellen Code.

Es ist aber auch deshalb nicht sinnvoll, weil dieser gesamte Code plötzlich nicht mehr ausgeführt würde, sollte hyperref aus irgendwelchen Gründen nicht mehr geladen werden. Falls der Code aus einer Vorlage stammt: Wirf sie weg.

Die Quelle für die \ensuremath-Kritik wüsste ich auch gerne. Das klingt wieder sehr nach Halbunwahrheit also falscher Anwendung von nicht verstandenen Informationen aus einem anderen Zusammenhang.

Wie man ein Glossar nach griechischen und römischen Symbolen aufteilt ist in der [d]glossaries[/d]-Anleitung übrigens in Abschnitt 4.7.1 gezeigt. Für mehr habe ich gerade weder Zeit noch Lust. Tut mir leid. Das Problem mit der Abfolge der LaTeX-Läufe ist für mich ohnehin nicht nachvollziehbar. Allerdings würde ich bereits nach dem ersten pdflatex-Lauf erste makeindex-Läufe ausführen, weil sonst die Verschiebung durch die entsprechenden Verzeichnisse beim dritten Lauf ev. noch kein endgültiges Ergebnis liefern. Außerdem würde ich für die Glossare makeglossaries verwenden. Perl hast du ja hoffentlich installiert.

die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Beitrag von die_nase »

Hallo Besserwisser,

vielen Dank für deine Antwort! - Zu dem hyperref-Paket: Wenn ich \AfterPackage* weglasse und hyperref als letztes Paket einbinde, dann funktionieren meine Verlinkungen nicht mehr. Es sei denn ich lade hyperref vor glossaries (Wäre das die korrekte Variante? - Also glossaries zuletzt und nach hyperref zu laden).

Zu dem \ensuremath: Vielleicht habe ich mich auch falsch ausgedrückt. Ich habe mich nur gewundert, warum man das \ensuremath nicht durch ein $ $ ersetzen kann. Wie ich darauf gekommen bin: hier.

Okay, der einfache Hinweis, wo die Info zu finden ist, hat mir genügt. Es war ja auch nicht verlangt, dass mir jemand eine Lösung hinzaubert. :wink:

Perl habe ich installiert, ja. Leider wird mir immer noch kein aktualisiertes Glossar angezeigt. Habe ich dich richtig verstanden, dass die Läufe am Besten in der Reihenfolge ausgeführt werden?
#!/bin/sh
pdflatex "$1"
bfname=$(dirname "$1")/"`basename "$1" .tex`"
makeglossaries "$bfname"
makeglossaries "$bfname"
pdflatex "$1"
pdflatex "$1"
(Das ist der Inhalt meiner *.engine)


Die Dateien, die erstellt werden, sind folgende:



Ohne-Titel.aux
Ohne-Titel.glg
Ohne-Titel.glo
Ohne-Titel.gls
Ohne-Titel.glsdefs
Ohne-Titel.ist
Ohne-Titel.log
Ohne-Titel.out
Ohne-Titel.pdf
Ohne-Titel.slg
Ohne-Titel.slo
Ohne-Titel.sls
Ohne-Titel.tex


Hat vielleicht noch jemand einen Tipp, woran es liegen könnte, dass das Glossar nicht aktualisiert wird?

Auch die Seiten, auf der sich das Glossar befindet, sind immer noch im Glossar selbst aufgeführt. Woran könnte das liegen?

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

glossaries wird als eine der wenigen Ausnahmen nach hyperref geladen.

Anstatt mit irgend einer batch-Datei rumzueimern, mach doch die Aufrufe auf der Kommandozeile erst mal von Hand.

pdflatex basename
makeglossaries basename
biber basename
pdflatex basename



Die log-Datei wird dir verraten, welche Läufe noch konkret gemacht werden müssen.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Beitrag von die_nase »

Hallo Johannes,

ich habe es jetzt noch mal über die Kommandozeile versucht; es ergab das gleiche Ergebnis wie mit der batch-Datei.

Der Auszug aus der log-Datei:
makeglossaries version 2.16 (2015-06-28)
added glossary type 'main' (glg,gls,glo)
added glossary type 'symbols' (slg,sls,slo)
makeindex  -s "Ohne-Titel.ist" -t "Ohne-Titel.slg" -o "Ohne-Titel.sls" "Ohne-Titel.slo"
This is makeindex, version 2.15 [TeX Live 2015] (kpathsea + Thai support).
Scanning style file ./Ohne-Titel.ist.............................done (29 attributes redefined, 0 ignored).
Scanning input file Ohne-Titel.slo....done (33 entries accepted, 0 rejected).
Sorting entries....done (181 comparisons).
Generating output file Ohne-Titel.sls....done (32 lines written, 0 warnings).
Output written in Ohne-Titel.sls.
Transcript written in Ohne-Titel.slg.
Warning: File 'Ohne-Titel.glo' is empty.
Have you used any entries defined in glossary 'main'?
Remember to use package option 'nomain' if you
don't want to use the main glossary.
Wenn ich nomain in die Paket-Optionen schreibe, dann erhalte ich ebenfalls das gleiche Ergebnis.

die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Beitrag von die_nase »

Hat noch jemand einen Tipp? - Ich bin leider immer noch nicht weitergekommen.

die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Beitrag von die_nase »

Ich habe noch etliche Sachen probiert, alles umgebastelt, aber es will noch nicht. Selbst wenn ich alles über die Konsole mache, dann wird mir die Datei bzw. die PDF immer noch nicht neu erstellt. Lösche ich alle Hilfsdateien (+.pdf) und setze es, dann wird das Glossar angezeigt. Ändere ich im nächsten Schritt eine Bezeichnung, Symbol, sort..dann werden diese Änderungen, auch nach mehrmaligen Durchläufen mit pdflatex basename und makeglossaries basename nicht sichtbar.

Woran könnte das liegen?

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Mit deinen wenigen Angaben ist es wirklich schwer irgendwas zu sagen, man kann nur raten. Mach ein Minimalbeispiel, zeig uns das und die dazugehörigen log-Dateien (auch makeglossaries).
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Beitrag von die_nase »

Hallo Johannes,

entschuldige, da hast du Recht.
\documentclass{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{xfrac}

\usepackage{glossaries}

\makeglossaries

\newglossarystyle{Symbolliste}{
	\renewenvironment{theglossary}{
		\begin{longtable}{cp{5cm}ll}
		}{
		\end{longtable}
		}
	\renewcommand*{\glossaryheader}{
		\toprule
		\bfseries Symbol & \bfseries Einheit & \bfseries Bezeichnung & \bfseries Seite(n)
		\tabularnewline\midrule\endhead
		\bottomrule\endfoot
		}
	\renewcommand*{\glsgroupheading}[1]{}	
	\renewcommand*{\glsgroupskip}{}
	\renewcommand*{\glossentry}[2]{ 
	\glsentryitem{##1} 
	\glstarget{##1}{\glossentrysymbol{##1}} & 
	\glsentryuseri{##1} & 
	\glossentryname{##1} & 
	##2\tabularnewline
	}
} % Ende



\begin{document}

\newglossaryentry{Geschwindigkeiten}{
		description={Weg pro Zeit},
		name={Geschwindigkeitsname},
		symbol={\ensuremath{x}},
		user1={\ensuremath{\mathrm{v}}},
		sort={Geschwindigkeiten}						
	}
	
\gls{Geschwindigkeiten}
	
\printglossary[style=Symbolliste,title={Symbolverzeichnis}]

\end{document}
Das ist der Code, den ich mit:
pdflatex Glossar
makeglossaries Glossar
pdflatex Glossar
pdflatex Glossar
kompiliere (Glossar.tex ist dabei die Hauptdatei).

Die .log-Datei von dem pdflatex-Durchlauf befindet sich im Anhang, die log-Datei zu dem makeglossaries:
makeglossaries version 2.16 (2015-06-28)
added glossary type 'main' (glg,gls,glo)
makeindex  -s "Glossar.ist" -t "Glossar.glg" -o "Glossar.gls" "Glossar.glo"
This is makeindex, version 2.15 [TeX Live 2015] (kpathsea + Thai support).
Scanning style file ./Glossar.ist.............................done (29 attributes redefined, 0 ignored).
Scanning input file Glossar.glo....done (1 entries accepted, 0 rejected).
Sorting entries...done (0 comparisons).
Generating output file Glossar.gls....done (6 lines written, 0 warnings).
Output written in Glossar.gls.
Transcript written in Glossar.glg.
Daniels-iMac:Glossar_Test danielwalpert$ makeglossaries Glossar
makeglossaries version 2.16 (2015-06-28)
added glossary type 'main' (glg,gls,glo)
makeindex  -s "Glossar.ist" -t "Glossar.glg" -o "Glossar.gls" "Glossar.glo"
This is makeindex, version 2.15 [TeX Live 2015] (kpathsea + Thai support).
Scanning style file ./Glossar.ist.............................done (29 attributes redefined, 0 ignored).
Scanning input file Glossar.glo....done (1 entries accepted, 0 rejected).
Sorting entries...done (0 comparisons).
Generating output file Glossar.gls....done (6 lines written, 0 warnings).
Output written in Glossar.gls.
Transcript written in Glossar.glg.
Das funktioniert bis zu dieser Stelle auch. Wenn allerdings etwas an den Glossar-Einträgen geändert wird, dann werden diese Änderungen nicht im PDF sichtbar. (Also Beispielsweise symbol={\ensuremath{x}} zu symbol={\ensuremath{ABC}} ändern)
Dateianhänge
Glossarpdf.log
(30.82 KiB) 428-mal heruntergeladen

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Das sieht doch gut aus? Du kannst auch auf Öffne in Online-Editor klicken um festzustellen: Alles prima.

Edit: Du musst die Einträge in der Präambel festlegen.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Antworten