表格标题在 revtex 中未左对齐

表格标题在 revtex 中未左对齐

我目前正在撰写一篇 APS 文章并使用:

\documentclass[%
 reprint,
 amsmath,amssymb,
 aps,nofootinbib,
]{revtex4-1}
%
\usepackage{graphicx}
\usepackage{dcolumn}
\usepackage{bm}
\PassOptionsToPackage{linktocpage}{hyperref}
\usepackage[hyperindex,breaklinks]{hyperref}
\usepackage{tabularx}
\usepackage{enumitem}
\usepackage{slashed}
\usepackage{array}

我的图形标题左对齐,这是理所当然的。但是,如果我使用以下代码,表格标题将居中:

{\renewcommand{\arraystretch}{1.2}
\begin{table*}[t]
  \centering
\begin{tabular*}{\textwidth}{l @{\extracolsep{\fill}} l l}
   \hline
   \hline
   \multicolumn{1}{c}{ \rule{0pt}{3ex} ...} & \multicolumn{1}{c}{...} & \multicolumn{1}{c}{...} \\
   \hline
... & ... & ... \\
    \hline
    \hline
    \end{tabular*}
    \caption{Centered caption.}\label{tab:1}
\end{table*}
}

我怎样才能使表格标题左对齐(并且位于表格上方而不是下方)?

答案1

文档revtex4-1类不提供关闭不需要的行为的选项,即短标题始终居中。由于该caption包尚未适应,revtex因此需要自己修补负责的代码,例如:

\long\def\@makecaption#1#2{%
  \par
  \vskip\abovecaptionskip
  \begingroup
   \small\rmfamily
   \sbox\@tempboxa{%
    \let\\\heading@cr
    \@make@capt@title{#1}{#2}%
   }%
   \@ifdim{\wd\@tempboxa >\hsize}{%
    \begingroup
     \samepage
     \flushing
     \let\footnote\@footnotemark@gobble
     \@make@capt@title{#1}{#2}\par
    \endgroup
   }{%
     \global \@minipagefalse
     \hb@xt@\hsize{\hfil\unhbox\@tempboxa\hfil}%
   }%
  \endgroup
  \vskip\belowcaptionskip
}%

可以修补为:

\long\def\@makecaption#1#2{%
  \par
  \vskip\abovecaptionskip
  \begingroup
   \small\rmfamily
    \begingroup
     \samepage
     \flushing
     \let\footnote\@footnotemark@gobble
     \@make@capt@title{#1}{#2}\par
    \endgroup
  \endgroup
  \vskip\belowcaptionskip
}

作为完整的示例文档:

\documentclass[%
 reprint,
 amsmath,amssymb,
 aps,nofootinbib,
]{revtex4-1}

\makeatletter
\renewcommand\@makecaption[2]{%
  \par
  \vskip\abovecaptionskip
  \begingroup
   \small\rmfamily
    \begingroup
     \samepage
     \flushing
     \let\footnote\@footnotemark@gobble
     \@make@capt@title{#1}{#2}\par
    \endgroup
  \endgroup
  \vskip\belowcaptionskip
}
\makeatother

\begin{document}

Some text...

\begin{table}
  Test
  \caption{Test}
\end{table}

Some text...

\end{document}

使用包[1]\patchcmd提供的更优雅的解决方案:etoolbox

\documentclass[%
 reprint,
 amsmath,amssymb,
 aps,nofootinbib,
]{revtex4-1}

\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makecaption}{\@ifdim{\wd\@tempboxa >\hsize}}{\@firstoftwo}{}{}
\makeatother

\begin{document}

Some text...

\begin{table}
  Test
  \caption{Test}
\end{table}

Some text...

\end{document}

但请注意,修补文档类或包的内部结构通常不是一个好主意,因为修补后的文档类或包的未来版本中的内部结构可能会发生变化。

[1]另请参阅:请指导一下patchcmd和xpatch的使用

相关内容