[Tex/LaTex] Manually add legend symbols in text (without \label and \ref)

legendpgfplots

I would like to add legend symbols from pgfplots in my text.
I am aware of the possibility to use the \label and \ref commands
but my setup is complicated and I fear that making it work will more
time consuming than setting the small drawings manually.
I use externalization, my plots are generated with an intricate
\pgfplotsinvokeforeach inside a template that is used several times
in the document…

What I am looking for is a command like

\legendimageintext{mark=x, draw=blue}

that would draw a small blue dash with a cross on it, just as the
legend post of a plot with similar styles would appear.

Note: if you want to put the legend in caption or in text, it is usually simpler to use \ref and \label as described in the pgfplots manual or there. My question related to special cases where the canonical approach is not usable.

Best Answer

You can adapt the approach described by Christian Feuersänger in Using a pgfplots-style legend in a plain-old tikzpicture to provide a command \legendimageintext{mark=x, draw=blue}:

\documentclass{article}

\usepackage{pgfplots}

\newenvironment{customlegend}[1][]{%
    \begingroup
    \csname pgfplots@init@cleared@structures\endcsname
    \pgfplotsset{#1}%
}{%
    \csname pgfplots@createlegend\endcsname
    \endgroup
}%
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}

\newcommand{\addlegendimageintext}[1]{%
    \tikz {
        \begin{customlegend}[
            legend entries={\empty},
            legend style={
                draw=none,
                inner sep=0pt,
                column sep=0pt,
                nodes={inner sep=0pt}}]
        \addlegendimage{#1}
        \end{customlegend}
    }%
}

\begin{document}
\addlegendimageintext{mark=x, draw=blue} A plot

\addlegendimageintext{fill=cyan, area legend} An area plot
\end{document}