加载标题包后,如果标题适合用浮动包的规则样式放在一行中,如何使标题居中?

加载标题包后,如果标题适合用浮动包的规则样式放在一行中,如何使标题居中?

我期望在包装ruled的风格下float如果标题适合一行,则将其居中,并将标题排版为多行的普通段落,符合article文档类中的默认样式。

通过查看float包的源代码,我发现 的样式ruled是自然段落, 的样式plain是将标题居中,并将标题排版为多行的普通段落,所以我将 的标题样式设置为ruled与 一致plain。下面是相应的代码和结果。这就是我想要的效果。

\documentclass{article}

\usepackage{float}
\floatstyle{ruled}
\newfloat{xxx}{htbp}{lox}

\makeatletter
\let\floatc@ruled\floatc@plain
\makeatother

\begin{document}

\begin{xxx}
\caption{title}
aaaa
\end{xxx}

\begin{xxx}
\caption{title title title title title title title title title title title title title title title title title title title title}
aaaa
\end{xxx}

\end{document}

在此处输入图片描述


caption因为需要设置其他字幕的样式,所以加载了这个包,但是caption加载之后,字幕一直都在左边,下面是对应的代码和结果。

\documentclass{article}

\usepackage{caption}

\usepackage{float}
\floatstyle{ruled}
\newfloat{xxx}{htbp}{lox}

\makeatletter
\let\floatc@ruled\floatc@plain
\makeatother

\begin{document}

\begin{xxx}
\caption{title}
aaaa
\end{xxx}

\begin{xxx}
\caption{title title title title title title title title title title title title title title title title title title title title}
aaaa
\end{xxx}

\end{document}

在此处输入图片描述


我做了一些尝试,发现boxed在加载包时,样式可以将一行内容放在一行中央caption。因此,我猜想caption样式做了一些特殊处理ruled,但目前我找不到任何具体的处理。下面是相应的代码和结果。

\documentclass{article}

\usepackage{caption}

\usepackage{float}
\floatstyle{boxed}
\newfloat{xxx}{htbp}{lox}

\begin{document}

\begin{xxx}
\caption{title}
aaaa
\end{xxx}

\begin{xxx}
\caption{title title title title title title title title title title title title title title title title title title title title}
aaaa
\end{xxx}

\end{document}

在此处输入图片描述


caption我搜索了包的源代码,并\DeclareCaptionStyle{ruled}{labelfont=bf,labelsep=space,strut=0}在 的第 921 行中找到了caption.sty。如果我将其更改为\captionsetup{labelfont=bf,labelsep=space,strut=0}。我发现singlelinecheck它可以正常工作。

\documentclass{article}

\usepackage{caption}
% In line 921, change
% \DeclareCaptionStyle{ruled}{labelfont=bf,labelsep=space,strut=0}
% to
% \captionsetup{labelfont=bf,labelsep=space,strut=0}
\captionsetup{singlelinecheck=true}

\usepackage{float}
\floatstyle{ruled}
\newfloat{xxx}{htbp}{lox}

\makeatletter
\let\floatc@ruled\floatc@plain
\makeatother

\begin{document}

\begin{xxx}
\caption{title}
aaaa
\end{xxx}

\begin{xxx}
\caption{title title title title title title title title title title title title title title title title title title title title}
aaaa
\end{xxx}

\end{document}

在此处输入图片描述


总结一下,当包加载ruled时,如果标题适合一行,如何使样式中心的浮动成为标题。caption

答案1

\documentclass{article}

\usepackage[ruled]{caption}
\captionsetup[ruled]{singlelinecheck=true}

\usepackage{float}
\floatstyle{ruled}
\newfloat{xxx}{htbp}{lox}

\begin{document}

\begin{xxx}
\caption{title}
aaaa
\end{xxx}

\begin{xxx}
\caption{title title title title title title title title title title title title title title title title title title title title}
aaaa
\end{xxx}

\end{document}

在此处输入图片描述

相关内容