如何在不使用 caption 包的情况下为标题添加换行符

如何在不使用 caption 包的情况下为标题添加换行符

我想在标题中添加换行符,但又不想添加caption包。可以吗?

\documentclass{article}
\usepackage[format=plain, 
justification=raggedright,singlelinecheck=false]{caption}
\begin{document}
\begin{figure}
\caption{This is the caption\\ This is the second line}
\end{figure}
\end{document}

答案1

在此处输入图片描述

\documentclass{article}
\begin{document}
\begin{figure}
\caption[caption]{This is the caption\\\hspace{\textwidth}This is the second line}
\end{figure}

\end{document}

\\最初不起作用的原因是标题太小,无法容纳在一行中。默认的标题设置首先将标题设置在 mbox 中,如果 mbox 小于行宽,则该框居中。否则,该框将被丢弃,标题将在 parbox 中重新设置。第一个设置\\不执行任何操作,因为在这样的框中它始终是无操作,第二个设置(如果使用)则\\开始新的一行。因此,您所要做的就是确保不使用第一个设置,因为行首的空格会被丢弃,空格有多大并不重要,只要整个标题的总自然宽度大于即可\textwidth

答案2

\\使用in \caption{..}(单个强制参数)的问题在于,它默认为\caption[..]{..}(可选 + 强制),并且\\在可选参数中存在问题。如果您指定替代的非\\可选参数,那么它是可以的,但\\它会变得“无用”或没有任何效果。您可以使用 atabular来设置参数:

在此处输入图片描述

\documentclass{article}
\begin{document}
\begin{figure}
  \caption[This is the caption; This is the second line]
    {\tabular[t]{@{}l@{}}This is the caption \\ This is the second line\endtabular}
\end{figure}
\end{document}

当然,如果您不需要可选参数(因为您可能不使用\listoftables),只需使用一个空的可选参数。如果没有更多需求背景,我不确定它有多大用处。

答案3

不确定为什么,但是\protect\linebreak在包中有效boxhandler,但在\caption命令中无效。

\documentclass{article}
\usepackage{boxhandler}
\begin{document}

\bxfigure{Caption goes \protect\linebreak here}
{\fbox{Goodbye, very, very, very cruel world}}

\begin{figure}
\begin{center}
\fbox{Goodbye, very, very, very cruel world}
\caption{Caption goes \protect\linebreak here}
\end{center}
\end{figure}

\end{document}

答案4

或者,您也可以使用\protect\linebreak,无需任何caption包。

对于短标题文本,其作用与 相同\\\hspace{\textwidth}。但是,这可能是一个更好的解决方案,如果你的标题文字较长如果不换行,则会占用多行,并且您希望它被拉伸以填满线

例子:

    \documentclass{article}
    \begin{document}
    \begin{figure}
    \caption[caption]{This is the first line of a caption text that \\\hspace{\textwidth} without the
      linebreak would occupy more than one line and it goes and it goes}
    \end{figure}
    \begin{figure}
    \caption{This is the first line of a caption text that \protect\linebreak without the
      linebreak would occupy more than one line and it goes and it goes}
    \end{figure}
    \end{document}

图1 图2

相关内容