我正在使用caption
和subcaption
包来为文档中使用的图表添加更漂亮的标题。因此我使用以下样式,
\DeclareCaptionStyle{MarinoCaptionStyle}{
format=plain,
indention=0cm,
labelformat=simple,
labelsep=period,
textformat=simple,
justification=Justified,
font={singlespacing, MarinoFont},
width=\textwidth,
skip=\baselineskip,
position=bottom,
list=false,
hypcap=false,
}
对于单行,标题不会自动居中,我曾尝试使用
singlelinecheck=true
但也不起作用。
然后,我尝试创建自己的解决方案,我浪费了半天时间搜索和阅读一些软件包文档,并使用etoolbox
我设法得到它
\DeclareCaptionJustification{MarinoJustification}{\ifnumequal{\the\prevgraf}{1}{\centering}{\justifying}}
但同样,也没有用(是的,我打了电话justification=MarinoJustification
)。
所以我想知道这是否可行并且有解决方案吗?或者最好有办法改进并使我的解决方案有效。
我认为这也许是一些重要的事情,我使用 LuaLatex 编译器。
答案1
标题包文档称:“如果您指定,<additional options>
当标题适合一行并且未使用选项 singlelinecheck=off 禁用此检查时,它们还会被使用。”
据我对标题包文档这一部分的理解,\DeclareCaptionStyle
如果标题确实适合一行,则会另外应用给出的“附加选项”。即,当标题长于一行时,将应用常规选项(在强制参数中给出),如果标题短于一行,则将应用常规选项和附加选项(在可选参数中给出)。
因此,如果较短的标题应该居中,则必须使用justification=centering
可选参数。
示例文档:
\documentclass{article}
\usepackage{caption,ragged2e,graphicx,lipsum}
\DeclareCaptionFont{MarinoFont}{\itshape} % TODO
\DeclareCaptionStyle{MarinoCaptionStyle}[
justification=centering]{
format=plain,
indention=0cm,
labelformat=simple,
labelsep=period,
textformat=simple,
justification=Justified,
font={singlespacing, MarinoFont},
width=\textwidth,
skip=\baselineskip,
position=bottom,
list=false,
hypcap=false
}
\captionsetup{style=MarinoCaptionStyle}
\begin{document}
\begin{figure}
\centering
\includegraphics{example-image-a}
\caption{A short caption}
\end{figure}
\begin{figure}
\centering
\includegraphics{example-image-b}
\caption{\lipsum[1]}
\end{figure}
\end{document}
答案2
这是猜测的 MWE 的代码。
\documentclass[12pt,a4paper]{article}
\usepackage{graphicx}
\usepackage{caption}
\DeclareCaptionStyle{MarinoCaptionStyle}{
format=plain,
indention=0cm,
labelformat=simple,
labelsep=period,
textformat=simple,
justification=centering, %<<<<<<<<<<<<<<< changed
font={singlespacing, it},
width=\textwidth,
skip=\baselineskip,
position=bottom,
list=false,
hypcap=false,
}
\captionsetup[figure]{%
style=MarinoCaptionStyle
}
\begin{document}
\begin{figure}
\centering
\includegraphics[width=0.7\linewidth]{example-image}
\caption{A very nice centered caption}
\end{figure}
\end{document}