我一直在尝试解决这个问题,但尽管我确实找到了另一个有同样问题的帖子,但我不明白他们具体做了什么来解决这个问题。所以我正在使用这个包
\usepackage{caption}
并希望得到下图及标题:
\begin{figure}
\centering
\includegraphics[scale=0.47]{HP.png}
\captionsetup{singlelinecheck=off}
\caption{
text1:
\begin{itemize}
\renewcommand\labelitemi{--}
\item blue: $0.1 - 0.36$
\item green: $0.36 - 0.98$
\item red: $0.98 - 3.5$
\item purple: $3.5 +$
\end{itemize}
text2 }
\label{HP}
\end{figure}
它给了我这个错误:
! Argument of \@caption has an extra }.
另一个解决方案做了一些事情,但我不知道是什么,因为他们使用“foo”“bar”而不是真正的命令。
更新:建议的解决方案如下
\begin{figure}
\centering
\includegraphics[scale=0.3]{HP.png}
\captionsetup{singlelinecheck=off}
\caption[]{text1:
\begin{itemize}[label={--}]
\item blue: 0.1 -- 0.36
\item green: 0.36 -- 0.98
\item red: 0.98 -- 3.5
\item purple: 3.5 +
\end{itemize}
text2}
\end{figure}
我现在收到错误! LaTeX Error: Something's wrong--perhaps a missing \item.
其他人可以尝试一下并看看是否会遇到同样的错误吗?
答案1
请注意,标题是一个浮动参数,它们很脆弱。虽然singlelinecheck=off
有一定的安全性,但您应该提供非段落标题作为浮动参数:
\documentclass{article}
\usepackage{caption,graphicx,enumitem}
\begin{document}
\begin{figure}
\centering
\includegraphics[scale=0.3]{example-image}
\captionsetup{singlelinecheck=off}
\caption[]{text1:
\begin{itemize}[label={--}]
\item blue: 0.1 -- 0.36
\item green: 0.36 -- 0.98
\item red: 0.98 -- 3.5
\item purple: 3.5 +
\end{itemize}
text2}
\end{figure}
\end{document}
请注意,可选参数的使用不包含任何段落。它目前为空白,如果您不使用,则这无关紧要\listoffigures
。
答案2
如果你的清单冒犯了你,就把它删掉
\caption{}
一个简单而安全的解决方案是在逐项列表和剩余文本之后移出。
如果某个类/包/宏控制标题的位置(即,你将标题放在图像后面,但标题将打印在顶部位置),或者更改字体,或者在标题后设置一些垂直跳过(\belowcaptionskip
),那么这种方法可能会出现一些问题,但除此之外......为什么不呢?
不要低估minipages
人们经常寻找可以用简单边界框解决的复杂解决方案。对于标题,标题内的逐项列表minipage
只是一个牢不可破的框。这可以规避标题限制,例如避免段落中断。
一些例子:
\documentclass[a5paper]{article}
\usepackage[margin=1cm]{geometry}
\usepackage{graphicx}
\begin{document}
\begin{figure}[h]
\centering
\includegraphics[scale=0.1]{example-image-a}\par
\caption[Text1]{Some short text 1:}
\leftmargini.4\linewidth
\begin{itemize}
\renewcommand\labelitemi{--}
\itemsep0pt\parskip0pt
\item blue: 0.1 -- 0.36
\item green: 0.36 -- 0.98
\item red: 0.98 -- 3.5
\item purple: 3.5 +
\end{itemize}
Some short text 2.
\end{figure}
\hrule
\begin{figure}[h]
\centering
\includegraphics[scale=0.1]{example-image-b}
\caption[Text1]{
\begin{minipage}[t]{3cm}
Some short text 1:
\leftmargini0pt
\begin{itemize}
\renewcommand\labelitemi{--}
\itemsep0pt\parskip0pt
\item blue: 0.1 -- 0.36
\item green: 0.36 -- 0.98
\item red: 0.98 -- 3.5
\item purple: 3.5 +
\end{itemize}
Some short text 2.
\end{minipage}}
\end{figure}
\hrule
\begin{figure}[h]
\centering
\includegraphics[scale=0.1]{example-image-c}
\caption[Text1]{Some long text 1. Some long text 1.
Some long text 1.Some long text 1: \parskip.5em\par
{\centering\begin{minipage}{.3\linewidth}
\begin{itemize}
\renewcommand\labelitemi{--}
\itemsep0pt\parskip0pt
\item blue: 0.1 -- 0.36
\item green: 0.36 -- 0.98
\item red: 0.98 -- 3.5
\item purple: 3.5 +
\end{itemize}
\end{minipage}\par}
Some long text 2. Some long text 2. Some long text 2. Some long text 2.}
\end{figure}
\hrule
\end{document}