当表格在页面上居中时如何对齐表格和标题

当表格在页面上居中时如何对齐表格和标题

我一直无法找到设置表格的最佳方法。这些是它们应该具有的功能:

  1. 应位于页面中央
  2. 标题应“对齐”并与表格左边框对齐。如果标题跨越两行,则应在表格右边框处换行。
  3. 附加注释应位于标题和表格顶部边框之间,并且应“对齐”并与表格左边框对齐。如果附加注释包含第二行,则应在表格的右边框处换行。

为了澄清起见,我在下面的代码中提供了两个示例。第一个示例正是我的表格应该有的样子。它之所以有效,是因为表格太宽,以至于没有其他对齐和换行的可能性。第二个表格根本不遵循上面提到的规则 #2 和 #3。有人知道如何解决这两个问题吗?

多谢。

\documentclass[captions=tableheading]{scrbook}

\usepackage{siunitx}
\usepackage{booktabs}
\usepackage[figuresright]{rotating} 
\usepackage[format=hang,justification=justified,singlelinecheck=false]{caption}[2004/07/16]
\usepackage{blindtext}
\usepackage{pdflscape}
\newcommand{\commenttable}[1]{\par{\itshape #1\par}\vskip 2mm}

\begin{document}

\begin{landscape}
\begin{table}
\caption{A table caption with a really fancy and ridiculously long description of what could and also should be said in just a few words}
\commenttable{Hello. \blindtext.}
\centering
\begin{tabular}{SSSSSSSSSSSSS}
\toprule
{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}\\
\midrule
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34&12.34&12.34  \\
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34&12.34&12.34  \\
\bottomrule
\end{tabular}
\end{table}
\end{landscape}

\begin{landscape}
\begin{table}
\caption{A table caption with a really fancy and ridiculously long description of what could and also should be said in just a few words}
\commenttable{Hello. \blindtext.}
\centering
\begin{tabular}{SSSSSSSSSS}
\toprule
{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}\\
\midrule
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  \\
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  \\
\bottomrule
\end{tabular}
\end{table}
\end{landscape}

\end{document}

答案1

这是一个使用captionfloatrow包的解决方案。您的commenttable命令必须放在ttabbox命令的第一个参数中,紧跟在之后caption{…}。为了获得正确的垂直间距,我不得不对其进行了轻微的修改。

\documentclass[captions=tableheading]{scrbook}

\usepackage{siunitx}
\usepackage{booktabs}
\usepackage[figuresright]{rotating}
\usepackage[format=hang,justification=justified,singlelinecheck=false]{caption}[2004/07/16]
\usepackage{blindtext}
\usepackage{pdflscape}
\newcommand{\commenttable}[1]{\vskip2ex\par{\itshape #1}}%\par\vskip 2mm

        \usepackage[tracking]{microtype}
        \usepackage{floatrow}  

       \DeclareCaptionFormat{leftmargin}{\captionsetup{textfont={small, md, up}, labelfont={small, sf, md, up}, labelsep=space, position = above, slc = off}\textls*[150]{\MakeUppercase{#1 #2}}#3}%
       \captionsetup{format = leftmargin}
\begin{document}

\begin{landscape}
\centering
\begin{table}
\centering
\ttabbox[\FBwidth]{\caption{A table caption with a really fancy and ridiculously long description of what could and also should be said in just a few words\commenttable{Hello. \blindtext.}}}
{%
  \begin{tabular}{SSSSSSSSSSSSS}
\toprule
{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}\\
\midrule
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34&12.34&12.34  \\
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34&12.34&12.34  \\
\bottomrule
\end{tabular}}%
\end{table}
\end{landscape}

\begin{landscape}
\centering
\begin{table}
\ttabbox{\caption{A table caption with a really fancy and ridiculously long description of what could and also should be said in just a few words\commenttable{Hello. \blindtext.}}}%
{%
\begin{tabular}{SSSSSSSSSS}
\toprule
{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}\\
\midrule
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  \\
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  \\
\bottomrule
\end{tabular}}%
\end{table}
\end{landscape}

\end{document} 

在此处输入图片描述 在此处输入图片描述

答案2

这是为该boxhandler包量身定制的,它几乎默认以您要求的样式设置字幕。字幕是可配置的。但是,必须将表作为宏\bxtable{caption}{content}而不是环境输入,有些人会觉得这很麻烦。

唯一的挑战是让注释自动与表格对齐。为此,我在一个临时框中设置了,并在该宽度的tabular框中创建注释,并将其堆叠在框上方。\parboxtabular

此外,由于图像旋转了,所以必须重置允许的最大标题宽度(我最初以为这是一个软件包错误,直到我意识到发生了什么)。

\documentclass[captions=tableheading]{scrbook}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage[figuresright]{rotating} 
\usepackage[format=hang,justification=justified,singlelinecheck=false]{caption}[2004/07/16]
\usepackage{blindtext}
\usepackage{pdflscape}
\usepackage{boxhandler}
\usepackage[usestackEOL]{stackengine}
\begin{document}
\begin{landscape}
% Need to reset max caption width, because of rotated image
\constrainCaptionWidth[1in]{\linewidth}
% Make caption flush with outer edge of table content
\setlength{\TableDeadMargin}{0em}
\bxtable{%
A table caption with a really fancy and ridiculously long description of 
what could and also should be said in just a few words}{%
\setbox0=\hbox{%
\begin{tabular}{SSSSSSSSSS}
\toprule
{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}&{column}\\
\midrule
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  \\
12.34   &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  &12.34  \\
\bottomrule
\end{tabular}}%
\setstackgap{S}{12pt}%
\Shortstack{\parbox{\wd0}{\itshape Hello \blindtext}\\ \box0}
}
\end{landscape}
\end{document}

在此处输入图片描述

答案3

这是一个简单的解决方案,对我来说效果很好,不需要任何特殊的软件包或高级乳胶技巧等。这个想法只是将表格和标题放在具有足够宽度的迷你页面内,然后在迷你页面之前使用 \hspace 添加这样的空间,将其移动到更中心的水平位置,并且与文本左右边距的距离几乎相等。

\begin{table}[...]
\hspace{0.05\textwidth} 
\begin{minipage}{0.94\linewidth}
\caption{...}
\label{...}
\begin{tabular}{...}
...
\end{tabular}
\end{minipage}
\end{table}                     

相关内容