我想确保内容始终位于子浮动元素的中心(而不需要\centering
在每个浮动元素中都居中)。这个问题6 年前被问到并回答过但是,截至 2020 年 1 月,唯一仍然有效的答案是:
\usepackage{etoolbox}
\makeatletter
\gappto\@floatboxreset{\centering\appto\@minipagerestore{\centering}}
\makeatother
不幸的是,引用回答者:
但我不会这么做,因为这意味着浮动中的所有小页面都会得到 \centering;有些宏在内部使用可能在浮动中使用的小页面:这些宏也会收到 \centering,因此可能最终出现在不想要的地方。
以下是我的 MWE,它使用了链接方法:
\documentclass{article}
\usepackage{subcaption}
\usepackage{etoolbox}
\makeatletter
\g@addto@macro\@floatboxreset\centering % Centre within every float
\makeatother
\makeatletter
\gappto\@floatboxreset{\centering\appto\@minipagerestore{\centering}} % Centre within every subfloat
\makeatother
\begin{document}
\begin{table}
\caption{Table}\label{fig}
\begin{subtable}[H]{0.5\textwidth}
\caption{Subtable}
\begin{tabular}{c}
\hline
Tabular\\
\hline
\end{tabular}
\end{subtable}
\end{table}
\end{document}
是否有其他解决方案可以解决上述问题?
答案1
这应该有效:
\documentclass{article}
\makeatletter
\g@addto@macro\@floatboxreset\centering % Centre within every float
\makeatother
\usepackage{subcaption}
\DeclareCaptionOptionNoValue{centering}{\centering}
\captionsetup[sub]{centering}
\begin{document}
\begin{table}
\caption{Table}\label{fig}
\begin{subtable}{0.5\textwidth}
\caption{Subtable}
\begin{tabular}{c}
\hline
Tabular\\
\hline
\end{tabular}
\end{subtable}
\end{table}
% This could be overridden for single figures or tables:
\begin{table}
\clearcaptionsetup[centering]{sub} % Remove "centering" from "sub" options
\caption{Table}\label{fig2}
\begin{subtable}{0.5\textwidth}
\caption{Subtable}
\begin{tabular}{c}
\hline
Tabular\\
\hline
\end{tabular}
\end{subtable}
\end{table}
\end{document}
或者\subcaptionbox
可以使用选项“c”:
\documentclass{article}
\makeatletter
\g@addto@macro\@floatboxreset\centering % Centre within every float
\makeatother
\usepackage{subcaption}
\begin{document}
\begin{table}
\caption{Table}\label{fig3}
\subcaptionbox
{Subtable}
[0.5\textwidth][c]
{\begin{tabular}{c}
\hline
Tabular\\
\hline
\end{tabular}}
\end{table}
\end{document}