将跨两列文档的表格居中

将跨两列文档的表格居中

我有一个跨两列文档的表格。问题是表格没有按照我的\centering命令居中对齐。此外,表格不适合使用 10pt 字体的文档。

如何解决这些问题?

在此处输入图片描述

\documentclass[10pt, twocolumn]{article}

\usepackage{lipsum}
\usepackage{tabularx, multirow, booktabs}

\begin{document}

\lipsum

{\centering
\begin{table*}[!hbt]
\caption{hello core APIs}\label{tab:apis}
{\small\centering
\begin{tabular}{llll}

\toprule

     {\bf API group} & {\bf Name} & {\bf Parameters} & {\bf output} \\
     \midrule\midrule[.1em]

     \multirow{2}{3.5cm}{Creation} 
         & {\tt createFBFSummary}
         & {\tt summary}, {\tt tableWidth}%, {\tt schema} (optional)  
         & FBF summary \\
     \cmidrule(lr){2-4}
         & {\tt createLabeledSummary}
         & {\tt summary}
         & Labeled summary \\

\midrule[.1em] 

\multirow{2}{3.5cm}{Query} 
    & {\tt query}
    & {\tt summary}, {\tt label}
    & value \\
\cmidrule(lr){2-4}
    & {\tt search}
    & {\tt directory}, {\tt label}
    & (summary, value) pairs \\   
\bottomrule
\end{tabular}
}
\end{table*}
}

\lipsum

\end{document}

答案1

转变 \centering仅在找到段落结尾(明确的行\par或空白行)时才会执行。由于您是\centering在组内换行,并且组关闭前没有这样的“段落结尾”信号,因此\centering永远不会执行的效果。

解决方案是删除范围括号{... ,}因为这里不需要它们(尽管\small也使用了)。或者,使用\begin{center}... \end{center},这将在 上方/下方插入额外的间距tabular

在此处输入图片描述

\documentclass[twocolumn]{article}

\usepackage{lipsum}
\usepackage{multirow, booktabs}

\begin{document}

\lipsum

\begin{table*}[t]
  \caption{hello core APIs}
  \small\centering
  \begin{tabular}{llll}

    \toprule

    {\bfseries API group} & {\bfseries Name} & {\bfseries Parameters} & {\bfseries output} \\
    \midrule\midrule[.1em]

    \multirow{2}{3.5cm}{Creation} 
      & {\ttfamily createFBFSummary}
      & {\ttfamily summary}, {\ttfamily tableWidth}%, {\ttfamily schema} (optional)  
      & FBF summary \\
    \cmidrule(lr){2-4}
      & {\ttfamily createLabeledSummary}
      & {\ttfamily summary}
      & Labeled summary \\

    \midrule[.1em] 

    \multirow{2}{3.5cm}{Query} 
      & {\ttfamily query}
      & {\ttfamily summary}, {\ttfamily label}
      & value \\
    \cmidrule(lr){2-4}
      & {\ttfamily search}
      & {\ttfamily directory}, {\ttfamily label}
      & (summary, value) pairs \\   
    \bottomrule
  \end{tabular}
\end{table*}

\lipsum

\end{document}

在上面的例子中,环境的结束table*构成了“段落结束”信号。

答案2

一些额外的建议(除了删除限制范围的花括号之外),没有特定的顺序:

  • 使用p列类型(宽度为 3.5 厘米);删除\multicolumn语句

  • 为第 2 列和第 3 列中的固定宽度字体材料设置新的列类型(t 在下面的代码中调用);摆脱单独的\tt指令

  • 无需调用\small;只需以正常文档字体大小排版表格即可

  • 由于您使用的是软件包的宏booktabs,因此也请采用软件包的整体表格设计方法。例如,谨慎使用水平线,而改用空格。结果将是一个看起来更“开放”的表格。

  • 不要使用已弃用的字体切换宏\tt\bf;而是使用\ttfamily\bfseries

  • 放置指令中的元素h和对环境完全没有影响。省略元素可能会造成问题,因为它会阻止创建整页浮动,从而增加浮动最终位于文档末尾的可能性。我的建议是完全省略该指令。b[!hbt]table*p[!hbt]

在此处输入图片描述

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{booktabs, array}
\newcolumntype{t}{>{\ttfamily}l}  % automatic-ttfamily "l" column

\begin{document}
\lipsum[1-3]

\begin{table*}
\caption[hello core APIs]{hello core APIs\strut}\label{tab:apis}
\centering
\renewcommand\arraystretch{1.2}
\begin{tabular}{@{} p{3.5cm} t t l @{}}
\toprule
\bfseries API group & \bfseries\rmfamily Name & \bfseries\rmfamily Parameters & \bfseries output \\
\midrule
Creation
& createFBFSummary  & summary, tableWidth & FBF summary \\
& createLabeledSummary & summary & Labeled summary \\
\addlinespace
Query               & query & summary, label & value \\
& search & directory, label & (summary, value) pairs \\   
\bottomrule
\end{tabular}
\end{table*}

\lipsum[4-13]
\end{document}

答案3

到目前为止给出的答案解决了问题,但在建议“改进”方面却出了问题。

关于主要问题,只是为了完整性:

  1. \centering外部table环境根本不影响环境

  2. {\centering...}没有效果,因为段落在}扫描后结束,所以\centering已经结束其作用。

所以格式应该是

\lipsum

\begin{table*}[t]
\centering\small

\caption{hello core APIs}\label{tab:apis}

\begin{tabular}{llll}
[...]
\end{tabular}

\end{table*}

\lipsum

我更喜欢将格式说明放在顶部;无论如何它们都不会影响标题。

现在,让我们考虑表格以及如何改进它。

\documentclass[10pt, twocolumn]{article}

\usepackage{lipsum}
\usepackage{booktabs}

\newcommand{\keyw}[1]{\texttt{#1}}

\begin{document}

\lipsum

\begin{table*}
\small\centering

\caption{hello core APIs}\label{tab:apis}

\medskip % not necessary if you load caption

\begin{tabular}{llll}
\toprule
% header
\bfseries API group & \bfseries Name & \bfseries Parameters & \bfseries output \\
% table data
\midrule
Creation
  & \keyw{createFBFSummary}
  & \keyw{summary}, \keyw{tableWidth}%, \keyw{schema} (optional)  
  & FBF summary \\
\cmidrule(lr){2-4}
  & \keyw{createLabeledSummary}
  & \keyw{summary}
  & Labeled summary \\
\midrule
Query
  & \keyw{query}
  & \keyw{summary}, \keyw{label}
  & value \\
\cmidrule(lr){2-4}
  & \keyw{search}
  & \keyw{directory}, \keyw{label}
  & (summary, value) pairs \\   
\bottomrule
\end{tabular}

\end{table*}

\lipsum

\end{document}

请注意,在打字机类型中排版特殊单词的个人命令;也绝不应使用\bf\tt。也不要使用双水平线。也没有必要\multirow:单词“Creation”自动引用其下方的空白单元格。

在此处输入图片描述

答案4

使用center环境而不是居中;但我不知道为什么

\documentclass[10pt, twocolumn]{article}

\usepackage{lipsum}
\usepackage{tabularx, multirow, booktabs}

\begin{document}

\lipsum

\begin{table*}[!hbt]
  \caption{hello core APIs}\label{tab:apis}
  \small
  \begin{center}
    \begin{tabular}{llll}

      \toprule

      {\bf API group} & {\bf Name} & {\bf Parameters} & {\bf output} \\
      \midrule\midrule[.1em]

      \multirow{2}{3.5cm}{Creation} 
                      & {\tt createFBFSummary}
                                   & {\tt summary}, {\tt tableWidth}%, {\tt schema} (optional)  
                                                      & FBF summary \\
      \cmidrule(lr){2-4}
                      & {\tt createLabeledSummary}
                                   & {\tt summary}
                                                      & Labeled summary \\

      \midrule[.1em] 

      \multirow{2}{3.5cm}{Query} 
                      & {\tt query}
                                   & {\tt summary}, {\tt label}
                                                      & value \\
      \cmidrule(lr){2-4}
                      & {\tt search}
                                   & {\tt directory}, {\tt label}
                                                      & (summary, value) pairs \\   
      \bottomrule
    \end{tabular}
  \end{center}
\end{table*}
\lipsum

\end{document}

在此处输入图片描述

相关内容