包含许多 tikz 图形/绘图的项目的工作流程

包含许多 tikz 图形/绘图的项目的工作流程

我喜欢 LaTeX 和 TiZ 是创建高质量文档的最佳方式。问题是大型项目需要相当长的编译时间那个复杂的TiZ 图形/图很快超出了内存上限main.tex。如果我将不同的部分包含到我的代码中,然后取消注释它们(如果我没有处理它们),我就可以避免他的问题。另一种方法是将我的 Ti 外部化Z 图形/图,但这也不是最佳选择,因为我经常需要按顺序取消注释图,然后按顺序编译每个图。但编译整个项目会相当麻烦。

问题:这就是为什么我想知道管理大量 Ti 的大型项目的最佳实践Z 图形/图表。

答案1

如果我理解正确的话,它之所以tikzexternalize无法正常工作是因为当您通过注释掉部分内容来更改图形顺序时,它会变得混乱并重新编译图片。这里的问题似乎是使用tikzexternalize文档中图形的相对位置来引用它。

tikzexternalize让图片即使位置发生变化也能被识别的一种方法是给它们命名(然后tikzexternalize是给它们命名(然后不再使用顺序来引用图形)。假设你加载了你的 TiZ 图片来自外部文件,你可以这样做:

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

附言:我知道输出不会将数字保持在应在的位置,但我并不在意,只想更快地工作。

相关内容