我试图在图片的标题中添加一个简单的绘图。绘图只是一条线,我使用它在标题中添加某种图例。
我尝试过使用picture
环境和内联\tikz
命令来实现这一点,但都不起作用。似乎\caption
不能容忍这种内容?我还愚蠢地尝试通过\protect
绘制来修复它,但这似乎没有帮助。
我还没有放弃的原因是我的尝试实际上似乎在标题内产生了所需的绘图,但它们引发了如下错误:
ERROR: Argument of \@caption has an extra }.
那么有没有办法解决我在这里尝试的问题?
更新:
@pluton 的建议似乎有效。此外,我希望它picture
也能与 LaTeX 配合使用,因为我想避免在当前项目中加载 TiKZ。具体来说,我尝试过:
\documentclass{article}
\begin{document}
\begin{figure}
\centering
\caption{Test \protect{\setlength{\unitlength}{1mm}
\begin{picture}(5,3)
\put(0,1){\line(5,0){5}}
\end{picture}}}
\label{fig:test}
\end{figure}
\end{document}
这给了我上述错误。
然而,(错误的)输出似乎很好:
答案1
\protect
适用于单个 token,切勿将其应用于{
\documentclass{article}
\newcommand\zzz{{\setlength{\unitlength}{1mm}%
\begin{picture}(5,3)
\put(0,1){\line(5,0){5}}
\end{picture}}}
\begin{document}
\begin{figure}
\centering
\caption{Test \protect\zzz}
\label{fig:test}
\end{figure}
\end{document}
答案2
根据David Carlisle的回答,一个可能的解决方案Tikz
是:
\documentclass[10pt,tikz]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\newcommand\strokeA{[\tikz[baseline=(current bounding box.base)]{\draw[red,line width=2pt] (0,3pt) -- (1.8em,3pt);}]}
\newcommand\strokeB{[\tikz[baseline=(current bounding box.base)]{\draw[blue,line width=2pt] (0,3pt) -- (1.8em,3pt);}]}
\begin{document}
\begin{figure}[ht]
\caption{Title: legend A \protect\strokeA{} and legend B \protect\strokeB}
\end{figure}
\end{document}