![Глоссарии и mylatexformat несовместимы?](https://rvso.com/image/281573/%D0%93%D0%BB%D0%BE%D1%81%D1%81%D0%B0%D1%80%D0%B8%D0%B8%20%D0%B8%20mylatexformat%20%D0%BD%D0%B5%D1%81%D0%BE%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D0%BC%D1%8B%3F.png)
Я пытаюсь ускорить свою большую преамбулу со многими пакетами, используя 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, но тогда вы можете потерять все остальные гиперссылки во всем документе.
Запустить один раз, скомпилировать дважды и перезагрузить трижды. Готово