TiKz 中的章节和图号外部化前缀

TiKz 中的章节和图号外部化前缀

我希望我的外部化图形有前缀来反映它们所属的章节,但是当我这样做时:

\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>。由于这些赋值的值在当前组结束前都有效,因此我们可以使用花括号来控制它们的开始和结束。

相关内容