我希望我的外部化图形有前缀来反映它们所属的章节,但是当我这样做时:
\usetikzlibrary{external}
\tikzexternalize[prefix=TiKz/\value{chapter}]
\tikzexternalize
或者
\usetikzlibrary{external}
\tikzexternalize[prefix=TiKz/\c@chapter]
\tikzexternalize
我收到错误,无法创建正确的标签。因此问题是:
什么才是正确的方法?
我们还可以在那里保留哪些其他变量?(即除了计数器之外,TiKz 还能给我们什么。它显然对包含图形的文件名有一些了解......)
如何抑制文件名前缀。TiKz 在自动将文件名作为前缀方面做得很好,但在某些情况下,这并不那么好,例如当使用子文件和在主文档中重复使用外部化图形时。
请注意,当我说文件名时,我指的是 pdflatex 正在构建的 .tex 文档。不像 .tikz include 的许多示例那样。
8)
答案1
该external
库带有两个组成文件名的“模板”:静态的prefix
和更动态的figure name
。
为了使用章节/部分名称,您可以使用figure name
:
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{external}
\tikzexternalize[
prefix=plots/,
figure name=plot_sec\thesubsection_no,
]
\begin{document}
\section{Section 1}
\begin{tikzpicture}
\begin{axis}[
xlabel=$x$,
ylabel={$f(x) = x^2 - x +4$}
]
\addplot {x^2 - x +4};
\end{axis}
\end{tikzpicture}%
\tikz \draw[-stealth] (0,0) -- (10,0);
\section{Resultsection}
\begin{tikzpicture}
\begin{axis}
\addplot {x^2};
\end{axis}
\end{tikzpicture}%
\subsection{Super results}
\begin{tikzpicture}
\begin{axis}
\addplot {e^x};
\end{axis}
\end{tikzpicture}%
\end{document}
编译此文件并pdflatex -shell-escape P
得到文件中的结果
>>ls plots/*.pdf
plots/plot_sec1.0_no0.pdf plots/plot_sec2.0_no0.pdf
plots/plot_sec1.0_no1.pdf plots/plot_sec2.1_no0.pdf
或者,您可以figure name
通过添加更多后缀来自行修改。就我个人而言,我一直使用这种方法,并且发现它更易于阅读。它看起来像
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{external}
\tikzexternalize[
prefix=plots/,
figure name=plot,
]
\begin{document}
\section{Section 1}
{\tikzset{external/figure name/.add={}{_section1}}%
\begin{tikzpicture}
\begin{axis}[
xlabel=$x$,
ylabel={$f(x) = x^2 - x +4$}
]
\addplot {x^2 - x +4};
\end{axis}
\end{tikzpicture}%
\tikz \draw[-stealth] (0,0) -- (10,0);
}%
\section{Resultsection}
{\tikzset{external/figure name/.add={}{_results}}%
\begin{tikzpicture}
\begin{axis}
\addplot {x^2};
\end{axis}
\end{tikzpicture}%
\subsection{Super results}
{\tikzset{external/figure name/.add={}{_super}}%
\begin{tikzpicture}
\begin{axis}
\addplot {e^x};
\end{axis}
\end{tikzpicture}%
}%
}%
\end{document}
并生成文件
>>ls plots/*.pdf
plots/plot_results0.pdf plots/plot_section10.pdf
plots/plot_results_super0.pdf plots/plot_section11.pdf
该语法\pgfkeys{<key name>/.add={<prefix>}{<suffix>}}
允许修改包含字符串的键。它采用当前值并在前面添加<prefix>
和附加<suffix>
。由于这些赋值的值在当前组结束前都有效,因此我们可以使用花括号来控制它们的开始和结束。