Латекс, тикз и раздельный сборник глав и рисунков

У меня довольно большой латексный документ с большим количеством фигур TikZ внутри. У меня есть привычка частой перекомпиляции, и сборка с использованием pdflatex занимает вечность. Цифры в TikZ занимают большую часть времени.

Мой вопрос заключается в том, как лучше всего разделить документ на отдельные текстовые файлы (рисунки / главы), чтобы добиться отдельной компиляции рисунков и глав, отдельных глав PDF и целого файла PDF документа?

4 ответа

Решение

Вы пытались скомпилировать каждое изображение отдельно, а затем включить его в свой текстовый файл в формате pdf, а не в код tikz? Вы можете использовать автономный пакет, так что изображение будет именно того размера, который вам нужен. Так:

\documentclass{standalone}

\usepackage{tikz,pgf} %and any other packages or tikzlibraries your picture needs

\begin{document}

\begin{tikzpicture}

%your tikz code here

\end{tikzpicture}

\end{document}

Хорошая вещь об этом заключается в том, что вы можете либо включить компиляцию этого документа напрямую, чтобы получить рисунок PDF для включения в ваш документ, либо вы можете использовать команду \input, чтобы включить его в ваш основной документ в виде кода tikz, добавив

\usepackage{standalone}

в вашем основном документе (вместе с пакетами и библиотеками tikz), а затем

\begin{figure}
\input{tikzfile.tex}
\end{figure}

Существует, возможно, лучший способ (imho) для кэширования tikz-картинок. Добавьте следующие строки в вашу преамбулу:

\usetikzlibrary{external}
\tikzexternalize[prefix=i/]

После запуска pdflatex вы увидите все картинки в подкаталоге./i . Если вы обновите код тикз-картинки, просто выбросьте соответствующий pdf-файл, и он будет восстановлен. Для получения дополнительной информации см. Руководство по PFG/TikZ, раздел 32.4 Внешняя графика и, возможно, 32.5 Использование внешней графики без установленного pgf.

Как насчет помещения каждой главы в отдельный файл, а затем с помощью \include положить их в какой-то мастер-файл? Тогда вы можете использовать \includeonly только для составления главы, над которой вы сейчас работаете. Это должно сэкономить время, по крайней мере.

Я ожидаю, что какое-то решение на основе make-файлов будет даже лучше, чем это, но я ничего не знаю о make-файлах...

Обычно я делаю это, применяя Latex только к части файла: Emacs и несколько других редакторов Latex позволяют вам компилировать регионы: с Auctex вы можете запустить TeX-pin-region, чтобы указать текущую главу, а затем TeX-command-region для запуска Latex в выбранном регионе.

Традиционный способ сделать это - разрезать части большого файла на более мелкие части, которые \included, а затем либо закомментируйте части, над которыми вы не хотите работать, либо поместите некоторую макрологию в начало и конец каждого файла, которая позволяет их компилировать отдельно.

Другие вопросы по тегам