13

I'm attempting to put a small tikzpicture inside a \caption{} belonging to a figure environment. The reason for doing this is fairly simple - to create an in-caption legend for a PGFplot, with consistency between the TikZ styles in the figure and in the caption. Previously I would have done this using dashes and the xcolor package, however, this is an awful hack. In this MWE:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\caption{\raisebox{0.5ex}{
\begin{tikzpicture}\draw[dashed,color=red,thick] (0,0) -- (0.5,0);\end{tikzpicture}}
Gas--Phase} 
\end{figure}
\end{document}

The expected output:

an example of my expected output

is generated, but I get ! Argument of \@caption has an extra }. and ! Paragraph ended before \@caption was complete. Within the larger context of the document that I'm writing, which includes chapters in external .tex files, compilation fails catastrophically (dozens of errors) with no output, so I can't just ignore the warnings in this instance. Any ideas?

1 Answers1

17

PGFplots has this feature built-in already: You can assign \labels to your plots, and then use \ref in the figure caption (or anywhere else) to get a legend picture:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{figure}\centering
\begin{tikzpicture}
\begin{axis}
\addplot [red, dashed, thick] {x+rand}; \label{gasphase}
\addplot [black] {x}; \label{straightline}
\end{axis}
\end{tikzpicture}
\caption{A simple diagram: \ref{gasphase} Gas--Phase;  \ref{straightline} A straight line}
\end{figure}
\end{document}
Jake
  • 232,450
  • Thanks Jake, that works wonderfully. Never spotted that in the manual. – Richard Terrett Nov 01 '11 at 04:34
  • The solution proposed is smart. – projetmbc Nov 01 '11 at 10:59
  • Very nice! But what happens if I make my tikzpicture in an external file and call it from within main.tex where the figure environment is located? – HCAI Mar 30 '13 at 12:20
  • @HCAI: Do you mean that you're putting the tikzpicture into an external .tex file that you include using \input (or \include) (in that case it should just work), or do you mean that you're compiling the tikzpicture into a separate .pdf file using the external library? In that case, things are a bit more complicated. – Jake Mar 30 '13 at 16:58
  • @Jake The latter. I create a standalone tikzpic.tex file and call it using \input and compile using external library. It's necessary because the pictures are so big. Is it a complicated procedure? – HCAI Mar 30 '13 at 17:34