Estou tentando acelerar meu grande preâmbulo com muitos pacotes usando mylatexformat. E tenho muitos erros, a maioria dos quais vem do pacote de glossários.
Meu 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}
O comando \endofdump proíbe o uso "normal" de Latex, portanto deve ser comentado para execuções normais. Mas é necessário para o mylatexformat que deve ser iniciado a partir do terminal (aberto na mesma pasta do arquivo *.tex). Digitei o comando apresentado no manual do makeformat no terminal:
etex -initialize -save-size=20000 -stack-size=20000 -jobname="mlt" "&pdflatex" mylatexformat.ltx """mlt.tex"""
onde mlt.tex é o nome do arquivo *.tex e também o nome do suposto arquivo *.fmt (-jobname="mlt"). Eu tenho o arquivo *.fmt mlt.fmt, mas quando tentei incluí-lo (por %&mlt na primeira linha de mlt.tex), não obtive resultado (e muitos erros).
Eu também tentei um exemplo sem glossários (ou seja, muitos outros pacotes foram incluídos, mas não este), e foi bem sucedido.
Responder1
deixe-me saber como mostrar isso de uma maneira mais apresentável.
Eu também adoro combos rápidos e eficientes. A combinação com mylatexformat é complicada, mas ainda assim incrível. A documentação do pacote parece uma cópia terrível do mylatex e precisa ser atualizada.
Vejo o pacote glossários (com o comando makeglossaries) como uma construção dinâmica. Então sigo as instruções em: http://www.howtotex.com/tips-tricks/faster-latex-part-iv-use-a-precompiled-preamble/ Eles recomendam que pacotes como minitoc sejam localizados após o comando\endofdump. Para mim será mais fácil dividir o trabalho em dois arquivos separados. Não gosto da ideia de des/comentar uma linha e compilar de forma diferente o mesmo arquivo. O primeiro arquivo deve ser pré-compilado com commnad:
pdftex -ini -jobname="fastformat" "&pdflatex" mylatexformat.ltx """example with a space.tex"""
Este nome tem 3 aspassomente seo documento tem um espaço. (Mas às vezes funciona para sistemas operacionais) O arquivo example1.tex tem o seguinte
\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}
Agora, o segundo arquivo que compila as informações possui o combo Glossários APÓS A\endofdump. O segundo arquivo que só deve ser compilado com comandos comuns, digamos pdflatex, mas você pode tentar makeglossaries para que os glossários funcionem. [Eu não tentei com um makeindex ou xindy.]
%&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}
Este último exemplo de arquivo de glossários que encontrei em algum lugar em tex.stackexchange
Como uso hyperref, todas as chamadas de glossários devem ter um hiperlink. Você pode remover o hiperref, mas poderá perder todos os outros hiperlinks em todo o documento.
Execute uma vez, compile duas vezes e reinicie três vezes. Feito