我期望在包装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}