Рабочий процесс для проектов с большим количеством фигур/сюжетов tikz

Рабочий процесс для проектов с большим количеством фигур/сюжетов tikz

Я люблю LaTeX и TiкZ для создания высококачественных документов. Проблема в том, чтобольшие проекты требуют довольно длительного времени компиляцииичто сложно ТикZ-фигуры/графики быстро превышают лимит памяти. Я могу обойти его проблему, если включу в свой раздел различные разделы main.texи, следовательно, раскомментирую их, если я над ними не работаю. Альтернативный подход — это экстернализация моего TiкZ-фигуры/графики, но это тоже не оптимально, потому что часто мне придется раскомментировать графики в последовательном порядке, а затем компилировать каждый график в последовательном порядке. Но компилировать весь проект будет довольно проблематично.

Вопрос: Вот почему я хочу узнать о лучших методах управления крупными проектами с большим объемом TiкZ-фигуры/графики.

решение1

Если я правильно вас понял, причина, по которой tikzexternalizeу вас не работает, заключается в том, что он путается и перекомпилирует картинки, когда вы меняете порядок фигур, комментируя части. Проблема здесь, похоже, в том, что он tikzexternalizeиспользует относительное положение фигуры в документе для ссылки на нее.

Один из способов распознавать tikzexternalizeизображения, даже если они меняют свое положение, — это давать им имена (тогда tikzexternalizeперестанет использоваться порядок ссылок на рисунки). Предполагая, что вы загружаете свой TiкДля изображений Z из внешних файлов можно сделать что-то вроде этого:

\newcommand{\inputtikz}[1]{%
  \tikzsetnextfilename{#1}%
  \input{#1.tikz}%
}

и затем используйте \inputtikz{name of file}там, где вы хотите разместить свою фигуру. Это будет стабильно, когда вы будете перемещать свои фигуры или комментировать разделы.

Конечно, вы также можете вручную дать имя каждой фигуре \tikzsetnextfilename{name}или определить какую-либо другую команду/среду, которая сделает это, что более подходит для вашего рабочего процесса.

решение2

В таком случае я бы переопределил окружение так, чтобы оно tikzpictureбыло просто комментарием во время работы с текстом или другой частью моего документа, и закомментировал бы это переопределение, когда документ будет готов или когда я захочу увидеть его со всеми рисунками внутри.

Я бы также сохранил старое определение, чтобы иметь возможность работать с индивидуумом tikzpicturesв среде, называемой currenttikzpicture(это длинное название просто для демонстрации).

Код:

\documentclass{article}    
\usepackage{tikz}
\usepackage{verbatim}
\let\oldtikzpicture\tikzpicture
\let\oldendtikzpicture\endtikzpicture
\renewenvironment{tikzpicture}[1][]{\comment}{\endcomment}
\newenvironment{currenttikzpicture}[1][]{\oldtikzpicture[#1]}{\oldendtikzpicture}

\begin{document}
\begin{tikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,red]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{tikzpicture}

\begin{tikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,red]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{tikzpicture}

\begin{tikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,red]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{tikzpicture}

\begin{currenttikzpicture}[scale=0.5]
\foreach \i in {1,2,...,4}{\draw[-,thick,green]  (\i,0)to[in={\i*10}, out={170-\i*10}]({2*\i},{4*\i+1}) to[in={170-\i*10},out={270-\i*10}] ({2*\i-3},{\i/10})--(\i,0);}
\end{currenttikzpicture}



Test
\end{document}

PS: Я знаю, что в результате цифры не будут располагаться там, где им положено, но меня это не особо волнует, поскольку я стараюсь работать быстрее.

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