![Glossare und MyLatexformat inkompatibel?](https://rvso.com/image/281573/Glossare%20und%20MyLatexformat%20inkompatibel%3F.png)
Ich versuche, meine große Präambel mit vielen Paketen mithilfe von mylatexformat zu beschleunigen. Und ich habe viele Fehler, von denen die meisten vom Glossarpaket stammen.
Mein MWE:
\documentclass[11pt,onecolumn,twoside,draft,titlepage,fleqn,a4paper,openright]{book}
\usepackage{titlesec}
\usepackage{longtable}
\usepackage{makeidx}
\usepackage[nonumberlist, acronym, toc, section, shortcuts, nopostdot, nogroupskip]{glossaries}
\renewcommand*{\arraystretch}{1.3} % sets the line indent in glossaries
\setlength{\glsdescwidth}{12.5cm}
\setlength\LTleft{0pt}
\endofdump
\newglossary[slg]{symbols}{syi}{syg}{Nomenclature}
\newglossary[ilg]{indices}{iyi}{iyg}{List of indices}
\makeglossaries
\newacronym{ECD}{ECD}{equivalent circuit diagram}
\newacronym{RES}{RES}{renewable energy source}
\newglossaryentry{Rx1}
{
name={\ensuremath{R_{x1}}},
description={Equivalent series resistance},
sort=Rx1, type=symbols
}
\newglossaryentry{ref}
{
name={*},
description={Indicates reference value},
sort=ref, type=indices
}
\begin{document}
\glsaddall
\printglossary[type=\acronymtype, style=long, title=List of Abbreviations and Acronyms]
\printglossary[type=symbols, style=long, title=Nomenclature]
\printglossary[type=indices, style=long, title=List of indices]
\section*{Sample}
\begin{longtable}{ll}
Some & Text
\end{longtable}
\gls{ref}, \gls{ECD}, \gls{Rx1}
\end{document}
Der Befehl \endofdump verhindert die „normale“ Verwendung von Latex und sollte daher für normale Ausführungen auskommentiert werden. Er wird jedoch für mylatexformat benötigt, das vom Terminal aus gestartet werden sollte (im selben Ordner wie die *.tex-Datei geöffnet). Ich habe den im Makeformat-Handbuch angegebenen Befehl im Terminal eingegeben:
etex -initialize -save-size=20000 -stack-size=20000 -jobname="mlt" "&pdflatex" mylatexformat.ltx """mlt.tex"""
wobei mlt.tex der Name der *.tex-Datei und auch der Name der erwarteten *.fmt-Datei ist (-jobname="mlt"). Ich habe die *.fmt-Datei mlt.fmt, aber als ich versuchte, sie einzubinden (durch %&mlt in der allerersten Zeile von mlt.tex), erhielt ich kein Ergebnis (und so viele Fehler).
Ich habe auch ein Beispiel ohne Glossare ausprobiert (d. h. viele andere Pakete waren enthalten, dieses jedoch nicht) und es war erfolgreich.
Antwort1
Lassen Sie mich wissen, wie ich das ansprechender darstellen kann.
Ich liebe auch schnelle, effiziente Kombinationen. Die Kombination mit mylatexformat ist knifflig, aber trotzdem erstaunlich. Die Paketdokumentation scheint eine schreckliche Kopie von mylatex zu sein und muss aktualisiert werden.
Ich sehe das Glossarpaket (mit dem Befehl makeglossaries) als dynamischen Build. Daher folge ich den Anweisungen in: http://www.howtotex.com/tips-tricks/faster-latex-part-iv-use-a-precompiled-preamble/ Sie empfehlen, Pakete wie minitoc nach dem Befehl zu platzieren\Ende des Dumps. Für mich wäre es einfacher, die Arbeit in zwei separate Dateien aufzuteilen. Mir gefällt die Idee nicht, eine Zeile zu unkommentieren bzw. zu kommentieren und dieselbe Datei dann anders zu kompilieren. Die erste Datei sollte mit folgendem Befehl vorkompiliert werden:
pdftex -ini -jobname="fastformat" "&pdflatex" mylatexformat.ltx """example with a space.tex"""
Dieser Name hat 3 Anführungszeichennur wenndas Dokument hat ein Leerzeichen. (Funktioniert aber manchmal bei Betriebssystemen) Die Datei example1.tex hat Folgendes
\documentclass{article}
% Add here more pacakges
\usepackage{hyperref}
% add here those packages after hyperref
% 'saves' everything above into one precompiled preamble
\endofdump
%% or
%\csname endofdump\endcsname
% No glossaries needed here. You could though. They shouldn't be read
\begin{document}
\noindent
Hola.
This shouldn't be read either on the precompilation
It does work if you comment the endofdump command
and compile normally with pdflatex
Done
\end{document}
Die zweite Datei, die die Informationen kompiliert, enthält nun die Glossare-Kombination NACH A\Ende des Dumps. Die zweite Datei sollte nur mit den üblichen Befehlen kompiliert werden, z. B. pdflatex. Sie sollten aber auch makeglossaries ausprobieren, damit die Glossare funktionieren. [Ich habe es nicht mit makeindex oder xindy versucht.]
%&fastformat
% the name above should match the name on the precompilation.
\endofdump
%add packages taht have problem with mylatexformat
%\usepackage{minitoc}
\usepackage[acronym]{glossaries}
\makeglossaries
\input{dictionary} % dictionary.tex is the file with glossary and acronyms
\begin{document}
\noindent
First use \gls{api}\ subsequent \gls{api}
\newpage
\printglossary[type=\acronymtype]
%%% \newpage just to demonstrate that links are correct
\newpage
\printglossary[type=main]
\end{document}
Dieses letzte Beispiel einer Glossardatei habe ich irgendwo in tex.stackexchange gefunden
Da ich Hyperref verwende, sollten alle Glossaraufrufe einen Hyperlink haben. Sie können Hyperref entfernen, aber dann verlieren Sie möglicherweise alle anderen Hyperlinks im gesamten Dokument.
Einmal ausführen, zweimal kompilieren und dreimal neu starten. Fertig