Я люблю 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: Я знаю, что в результате цифры не будут располагаться там, где им положено, но меня это не особо волнует, поскольку я стараюсь работать быстрее.