一旦包含 \usepackage{subcaption},标题就不再对齐

一旦包含 \usepackage{subcaption},标题就不再对齐

我遇到了以下问题:如果我使用 \usepackage{subcaption} 包来构建子图,则图*下的标题会变得不对齐。为了演示此问题,我使用了 Overleaf 中的“RevTeX 4.2 模板和示例”:

\documentclass[amsmath,amssymb, aps]{revtex4-2}

\usepackage{graphicx}% Include figure files

\usepackage{dcolumn}% Align table columns on decimal point

\usepackage{bm}% bold math

\usepackage[format=plain, justification=justified]{subcaption}

。 。 。

\begin{figure*}

\includegraphics{fig_2}\caption{...Long not justified caption...}

\end{figure*}

。 。 。

结果 1:

在此处输入图片描述

如果我不使用 \usepackage{subcaption},则标题是合理的。以下是结果 2:

在此处输入图片描述

我希望我的标题与结果 2 一样,但包含 \usepackage{subcaption}。我很乐意得到任何帮助!提前谢谢您!

答案1

您会收到警告

Package caption Warning: Unknown document class (or package),
(caption)                standard defaults will be used.
See the caption package documentation for explanation.

这意味着caption将把标题命令恢复为它所知道的、但绝对不是revtex4-2预期的内容。

遵循 John Kormylo 的建议,但在问题发生\show\caption后添加(用于调试)\begin{document}

> \caption=macro:
->\minipagefootnote@here \caption@iftype {\caption@checkgrouplevel \@empty \cap
tion \caption@star {\caption@refstepcounter \@captype }{\caption@dblarg {\@capt
ion \@captype }}}{\caption@Error {\noexpand \caption outside float}\caption@gob
ble }.

而该类的原始定义是

> \caption=macro:
->\minipagefootnote@here \ifx \@captype \@undefined \@latex@error {\noexpand \c
aption outside float}\@ehd \expandafter \@gobble \else \refstepcounter \@captyp
e \expandafter \@firstofone \fi {\@dblarg {\@caption \@captype }}.

所以这不仅仅是一个保存和恢复的问题\@makecaption

如果你想过危险的生活并冒着提交被拒绝的风险……

否则,subfig使用兼容revtex4-2

\documentclass[amsmath,amssymb, aps]{revtex4-2}
\usepackage{graphicx}% Include figure files
\usepackage{dcolumn}% Align table columns on decimal point
\usepackage{bm}% bold math
\usepackage[caption=false]{subfig}

\begin{document}

\begin{figure*}
\subfloat[A subcaption\label{A}]{\includegraphics[width=2cm]{example-image-a}}\quad
\subfloat[A subcaption\label{B}]{\includegraphics[width=2cm]{example-image-a}}

\bigskip

\includegraphics[width=5cm]{example-image}
\caption{...Long not justified caption...
...Long not justified caption...
...Long not justified caption...
...Long not justified caption...
...Long not justified caption...
...Long not justified caption...
...Long not justified caption...
...Long not justified caption...
...Long not justified caption...\label{C}}
\end{figure*}

\ref{A}, \ref{B}, \ref{C}

\end{document}

在此处输入图片描述

答案2

这将恢复原始的\@makecaption。这还将禁用由字幕或子字幕包应用的任何格式。

\documentclass[amsmath,amssymb, aps]{revtex4-2}
\usepackage{graphicx}% Include figure files
\usepackage{dcolumn}% Align table columns on decimal point
\usepackage{bm}% bold math
\makeatletter
\let\old@makecaption=\@makecaption
\usepackage{subcaption}
\let\@makecaption=\old@makecaption
\makeatother
\usepackage{blindtext}

\begin{document}
\begin{figure*}
\includegraphics{example-image}
\caption{\blindtext}% justified
\subcaption{\blindtext}% centered
\end{figure*}
\end{document}

相关内容