标题中的图例引用*和*外部化

标题中的图例引用*和*外部化

我试图在使用外部化库时引用图形标题内的绘图。

使用外部化的情节参考问题已经在这个问题。我决定不外部化参考图像并定义以下命令:

\newcommand{\plotref}1{\tikzexternaldisable\ref{#1}\tikzexternalenable}

然后,参考以下代码外部标题有效:

\documentclass{article}

\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/,shell escape=-enable-write18]

\newcommand{\plotref}[1]{\tikzexternaldisable\ref{#1}\tikzexternalenable}

\begin{document}

\begin{figure}
  \centering
  \tikzset{external/remake next}
  \tikzsetnextfilename{figname}
\begin{tikzpicture}[baseline]

  \pgfplotstableread{
    1 4   
    2 4.2 
    3 3.1 
    4 2.5 
  }\table

\begin{axis}[width=5cm,height=5cm]

\addplot table[x index=0,y index=1]{\table};\label{LAB}

\end{axis}
\end{tikzpicture}
  \caption{You must defeat Sheng Long to stand a chance.}
  \label{dummy}
\end{figure}

Xyzzy ! \plotref{LAB} happens.

\end{document}

我曾见过这个问题 标题中的图例通常是可能的。但是,以下代码引用了里面标题不起作用:

\documentclass{article}

\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=tikz/,shell escape=-enable-write18]

\newcommand{\plotref}[1]{\tikzexternaldisable\ref{#1}\tikzexternalenable}

\begin{document}

\begin{figure}
  \centering
  \tikzset{external/remake next}
  \tikzsetnextfilename{figname}
\begin{tikzpicture}[baseline]

  \pgfplotstableread{
    1 4   
    2 4.2 
    3 3.1 
    4 2.5 
  }\table

\begin{axis}[width=5cm,height=5cm]

\addplot table[x index=0,y index=1]{\table};\label{LAB}

\end{axis}
\end{tikzpicture}
  \caption{Xyzzy ! \plotref{LAB} happens.}
  \label{dummy}
\end{figure}

You must defeat Sheng Long to stand a chance.

\end{document}

它引发以下错误消息

! 不完整 \iffalse;第 35 行之后的所有文本均被忽略。\fi

我无法解释。

已经提出了一种不外部化小参考图像的替代方案这个问题 但我不明白如何实现它,也不知道这是否能解决我的问题。

您知道如何在标题中引用情节并使用外部化吗?


附注:有时手动操作更简单、更有效。参见这个问题得到类似的结果,不是自动的,但更直接。

答案1

您应该\protect\plotref{LAB}在标题中写明。我认为这是一个扩展问题;您的 \plotref 命令在 LaTeX 中是“脆弱的”,而“脆弱的”命令需要\protect在标题、章节标题等内进行编辑。

相关内容