
В настоящее время я пишу статью в формате 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}
Более элегантное решение с использованием \patchcmd
предлагаемого etoolbox
пакета [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}
Однако имейте в виду, что исправление внутренних компонентов классов или пакетов документов обычно является плохой идеей, поскольку внутренние компоненты могут измениться в будущих версиях исправленного класса или пакета документов.
[1] См. также:Пожалуйста, объясните, как использовать patchcmd и xpatch.