表格平衡列中的轻松垂直对齐

表格平衡列中的轻松垂直对齐

我想让文本在所有表格单元格中垂直居中。但是,我不希望指定固定的列宽,而是让它tabulary平衡列宽。在这种情况下,如何正确使用列说明符?

方便日常使用的解决方案将受到欢迎。还有其他 LaTeX 软件包可以同时实现列宽平衡和更好的垂直对齐吗?

我不知道该类IEEEtran(v1.8b)的使用对我的问题是否有意义。

\documentclass[conference]{IEEEtran}
\usepackage{tabulary}
\usepackage{booktabs}
\begin{document}

\begin{table}[!h]
\renewcommand{\arraystretch}{1.3}
\caption{Comparison of Algorithm Results}
\centering

\begin{tabulary}{\columnwidth}{@{\hspace{.2em}}L*{4}{C}@{}}
\toprule
\textbf{Optimization Algorithm} & \textbf{Swarm Size} & \textbf{No. of Iterations} & \textbf{Final Wirelength} & \textbf{Best Value Cost Fn.}\\ \midrule
Short Text                      & 10    & 1000  & 100   & --    \\
Slightly Longer Text that Wraps & 20    & 2000  & 200   & 10.5  \\
Slightly Longer Text that Wraps & 30    & 3000  & 300   & 20.55 \\
Short                           & 40    & 4000  & 400   & 30.5  \\
\bottomrule
\end{tabulary}

\end{table}
\end{document}

在此处输入图片描述

答案1

tabularx作为和包的作者tabulary,我不会将它们用于这样的数据表。它们用于单元格内的换行,并且在这里,除了标题之外,您不希望换行。

我会使用tabular*强制整体宽度(如果必须,或者居中tabular通常效果很好)将m列用作第一列,以便其参考点垂直居中。对于数字列,我使用dcolumn小数对齐(siunitx这也很好)。

最后我改成[h!][htp]h单独使用会增加表格被强制到文档末尾的机会,并且通常会从乳胶中生成一个警告,表明它正在被更改为ht

在此处输入图片描述

\documentclass[conference]{IEEEtran}
\usepackage{dcolumn}
\usepackage{booktabs}


\newcommand\hd[1]{\multicolumn{1}{c}{%
  \textbf{\begin{tabular}{@{}c@{}}#1\end{tabular}}}}

\begin{document}

\begin{table}[htp]
\renewcommand{\arraystretch}{1.3}
\caption{Comparison of Algorithm Results}
\centering

\begin{tabular*}{\columnwidth}{
@{\extracolsep{\fill}}
m{3cm}
D.{}{2.0}
D.{}{4.0}
D.{}{3.0}
D..{2.2}
@{}}
\toprule
\hd{Optimization Algorithm} & \hd{Swarm\\Size} & 
\hd{No. of\\ Iterations} & \hd{Final\\ Wire-\\length} &
\hd{Best Value\\ Cost Fn.}\\ \midrule
Short Text                      & 10    & 1000  & 100   & \multicolumn{1}{c}{--}    \\
Slightly Longer Text that Wraps & 20    & 2000  & 200   & 10.5  \\
Slightly Longer Text that Wraps & 30    & 3000  & 300   & 20.55 \\
Short                           & 40    & 4000  & 400   & 30.5  \\
\bottomrule
\end{tabular*}

\end{table}

\end{document}

答案2

您可以“破解”tabulary定义以垂直对齐所有LRCJ列。

\makeatletter
\def\TY@box@v#1{%
      $\vcenter \@startpbox{\csname TY@F\the\TY@count\endcsname}%
              #1\arraybackslash\tyformat
                              \insert@column\@endpbox$}
\makeatother

答案3

解决方案是tabularx,定义新列LC更改\tabularxcolumn更改从中获取回答获得X列类型垂直对齐

\documentclass[conference]{IEEEtran}
\usepackage{tabularx}
\usepackage{booktabs}

\renewcommand{\tabularxcolumn}[1]{m{#1}}

\newcolumntype{L}{>{\raggedright}X}
\newcolumntype{C}{>{\centering\arraybackslash}X}

\begin{document}

\begin{table}[!h]
\renewcommand{\arraystretch}{1.3}
\caption{Comparison of Algorithm Results}
\centering

\begin{tabularx}{\columnwidth}{@{\hspace{.2em}}L*{4}{C}@{}}
\toprule
\textbf{Optimization Algorithm} & \textbf{Swarm Size} & \textbf{No. of Iterations} & \textbf{Final Wirelength} & \textbf{Best Value Cost Fn.}\\ \midrule
Short Text                      & 10    & 1000  & 100   & --    \\
Slightly Longer Text that Wraps & 20    & 2000  & 200   & 10.5  \\
Slightly Longer Text that Wraps & 30    & 3000  & 300   & 20.55 \\
Short                           & 40    & 4000  & 400   & 30.5  \\
\bottomrule
\end{tabularx}

\end{table}

\end{document}

在此处输入图片描述

答案4

嗯,它不是自动化的,因此可能不可接受。但是,从 OP 的 MWE 开始,一旦看到自动断点,只需将该文本换行\mycol并手动插入断点即可。

\documentclass[conference]{IEEEtran}
\usepackage{tabulary}
\usepackage{booktabs}
\usepackage[usestackEOL]{stackengine}
\def\mycol#1{\addstackgap[1pt]{\Centerstack[l]{#1}}}
\begin{document}

\begin{table}[!h]
\renewcommand{\arraystretch}{1.3}
\caption{Comparison of Algorithm Results}
\centering

\begin{tabulary}{\columnwidth}{@{\hspace{.2em}}L*{4}{C}@{}}
\toprule
\textbf{Optimization Algorithm} & \textbf{Swarm Size} & \textbf{No. of Iterations} & \textbf{Final Wirelength} & \textbf{Best Value Cost Fn.}\\ \midrule
Short Text                      & 10    & 1000  & 100   & --    \\
\mycol{Slightly Longer\\ Text that Wraps} & 20    & 2000  & 200   & 10.5  \\
\mycol{Slightly Longer\\ Text that Wraps} & 30    & 3000  & 300   & 20.55 \\
Short                           & 40    & 4000  & 400   & 30.5  \\
\bottomrule
\end{tabulary}

\end{table}
\end{document}

在此处输入图片描述

相关内容