Глоссарии и mylatexformat несовместимы?

Глоссарии и mylatexformat несовместимы?

Я пытаюсь ускорить свою большую преамбулу со многими пакетами, используя mylatexformat. И у меня много ошибок, большинство из которых исходит от пакета glossaries.

Мой МВЭ:

\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}

Команда \endofdump запрещает "нормальное" использование Latex, поэтому ее следует закомментировать для нормального запуска. Но она нужна для mylatexformat, который должен запускаться из терминала (открываться в той же папке, что и файл *.tex). Я ввел команду, представленную в руководстве по makeformat, в терминале:

etex -initialize -save-size=20000 -stack-size=20000 -jobname="mlt" "&pdflatex" mylatexformat.ltx """mlt.tex"""

где mlt.tex — это имя файла *.tex, а также имя предполагаемого файла *.fmt (-jobname="mlt"). У меня есть файл *.fmt mlt.fmt, но когда я попытался включить его (с помощью %&mlt в самой первой строке mlt.tex), я не получил никакого результата (и так много ошибок).

Я также попробовал пример без глоссариев (т.е. было включено много других пакетов, но не этот), и он оказался успешным.

решение1

дайте мне знать, как это показать более презентабельно.

Мне тоже нравятся быстрые эффективные комбинации. Комбинация с mylatexformat сложная, но тем не менее потрясающая. Документация по пакету выглядит как ужасная копия mylatex и нуждается в обновлении.

Я вижу пакет glossaries (с командой makeglossaries) как динамическую сборку. Поэтому я следую инструкциям в: http://www.howtotex.com/tips-tricks/faster-latex-part-iv-use-a-precompiled-preamble/ Они рекомендуют размещать пакеты, такие как minitoc, после команды\endofdump. Для меня будет проще разделить работу на два отдельных файла. Мне не нравится идея раскомментировать/убрать комментарий строки и компилировать по-разному один и тот же файл. Первый файл должен быть предварительно скомпилирован с помощью commnad:

pdftex -ini -jobname="fastformat" "&pdflatex" mylatexformat.ltx """example with a space.tex"""

Это имя имеет 3 кавычкитолько еслив документе есть пробел. (Но иногда работает для ОС) Файл example1.tex имеет следующее

\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}

Теперь, второй файл, который компилирует информацию, имеет комбинацию Глоссариев ПОСЛЕ А\endofdump. Второй файл должен быть скомпилирован только с помощью общих команд, например pdflatex, но вы можете попробовать makeglossaries, чтобы глоссарии заработали. [Я не пробовал его с makeindex или 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}

Этот последний пример файла глоссариев я нашел где-то в tex.stackexchange

Поскольку я использую hyperref, все вызовы глоссариев должны иметь гиперссылку. Вы можете удалить hyperref, но тогда вы можете потерять все остальные гиперссылки во всем документе.

Запустить один раз, скомпилировать дважды и перезагрузить трижды. Готово

Связанный контент