Tabellenüberschrift in Revtex nicht linksbündig ausgerichtet

Tabellenüberschrift in Revtex nicht linksbündig ausgerichtet

Ich schreibe derzeit einen APS-Artikel und verwende:

\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}

Meine Bildunterschriften sind wie vorgesehen linksbündig ausgerichtet. Die Tabellenunterschriften werden jedoch zentriert, wenn ich den folgenden Code verwende:

{\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*}
}

Wie kann ich die Tabellenüberschriften ebenfalls linksbündig ausrichten (und über und nicht unter der Tabelle)?

Antwort1

Die revtex4-1Dokumentklasse bietet keine Möglichkeit, das unerwünschte Verhalten abzuschalten, d.h. kurze Überschriften werden immer zentriert. Und da das captionPaket noch nicht angepasst ist, revtexmuss man den verantwortlichen Code selbst patchen, z.B.:

\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
}%

könnte gepatcht werden auf:

\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
}

Als vollständiges Beispieldokument:

\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}

Eine elegantere Lösung \patchcmdbietet das etoolboxPaket [1]:

\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}

Beachten Sie jedoch, dass das Patchen der internen Komponenten von Dokumentklassen oder Paketen im Allgemeinen keine gute Idee ist, da die internen Komponenten in zukünftigen Versionen der gepatchten Dokumentklasse oder des gepatchten Pakets geändert werden können.

[1] Siehe auch:Bitte unterrichten Sie die Verwendung von patchcmd und xpatch

verwandte Informationen