我试图在使用外部化库时引用图形标题内的绘图。
使用外部化的情节参考问题已经在这个问题。我决定不外部化参考图像并定义以下命令:
\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
在标题、章节标题等内进行编辑。