我有一篇文章,其中包含许多 Ti钾Z 图片。为了使代码更清晰,节省编译时间,我想删除 Ti钾来自主文档的 Z 代码。我读到这可以通过 tikzlibrary“外部”实现。(例如参见这个问题)
但是我不确定在哪里写哪些命令?
我在仅包含 tikz 图片代码的文件中要写什么?
为了导入图片,我在主文档中要写什么以及在哪里写?
答案1
您的帖子中隐藏着两个问题,它们有两个基本正交的答案:
使用以下方法加速编译tikzexternalize
:
实际上,您不必将它们写入单独的文件以节省编译时间。您可以几乎不改变代码,这就是它的美妙之处。这是使用外部化的最简单的设置
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=figures/] % activate and define figures/ as cache folder
\begin{document}
\begin{tikzpicture}
\node {real complex figure};
\end{tikzpicture}
\end{document}
这仅当你的 LaTeX 设置为使用 shell escape 运行时才会运行(pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex
,例如参见此处)
通过编写 Ti 来获得整洁的代码钾Z 代码分成单独的文件:
当然,您也可以将\begin{tikzpicture}...\end{tikzpicture}
代码存储在外部.tex
或.tikz
文件中,然后使用\input
它来包含它。但这只是个人喜好问题,并不影响编译性能。
你可以写
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=figures/]
\begin{document}
\input{tikzfigure1.tikz}
\end{document}
并变成tikzfigure1.tikz
:
\begin{tikzpicture}
\node {real complex figure};
\end{tikzpicture}
我倾向于定义自己的命令来包含tikz
文件,而不是使用\input
以便处理更多的事情:
\newcommand{\inputtikz}[1]{%
\tikzsetnextfilename{#1}%
\input{#1.tikz}%
}
这将确保外部化基于文件名(而不是顺序),这样如果您更改 Ti 的顺序,就不会感到困惑钾文档中的 Z 张图片。
答案2
我更喜欢手动方式来外部化 TikZ 图片。这样您可以完全控制,并且不需要任何 shell 转义。
将每个 TikZ 图像放在其自己的文件中(无论如何,这对于跟踪您的代码很有用)。使用此模板(例如 ext-img1.tex):
\documentclass[tikz]{standalone} \usepackage{tikz} \begin{document} % \begin{tikzpicture} <your tikz code here> \end{tikzpicture} % \end{document}
将外部图像包含在主文档中:
\begin{figure} \includegraphics{ext-img1.pdf} \caption{external image} \end{figure}
编译外部映像
pdflatex ext-img1.tex
编译主文档
无论何时你想要修改图像,你都必须重建第一步中定义的文件。