表格中单元格居中对齐

表格中单元格居中对齐

如何实现这一一致? 在此处输入图片描述 反而:

\documentclass{article}
\usepackage{array, tabu} 
\begin{document}
\begin{table}[h]
\begin{tabu} to 1.0\textwidth { |X[c]|X[c]| }
\hline
$ N_{1} $ & $ (0: 1] $ \\[3cm]  \hline
\end{tabu}
\end{table}
\end{document}

在此处输入图片描述

答案1

尝试以下肮脏的伎俩:

\documentclass{article}
\usepackage{array, tabu}
\begin{document}
\begin{table}[h]

\begin{tabu} to 1.0\textwidth { |X[c,$] | X[c,$]m{0pt}|}
\hline
N_{1}  &  (0: 1]  & \\[3cm]  \hline
\end{tabu}
\end{table}
\end{document}

在此处输入图片描述

不清楚为什么需要如此奇怪的表格设计。而且tabu包的使用很棘手。它没有维护并且包含错​​误...

附录:单元格内容的垂直居中并非易事。为此,m{0pt}在上面的示例中添加了一个假列,行的基线通过该假列垂直居中。

对于表格中单元格内容的水平居中tabularx,您需要定义新的列类型,例如

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

如果整列的内容都是数学模式,那么整列定义为这种模式是合理的。这样你就不需要在每个单元格中写入内容了$<math expression>$。在这种情况下,你可以将新列类型定义为:

\newcolumntype{C}{>{\centering\arraybackslash $}X<{$}}

Complete code is then:

\documentclass{article}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash $}X<{$}}

\begin{document}
\begin{table}[h]
\begin{tabularx}{\textwidth}{ | C | C @{}m{0pt}|}
\hline
N_{1}  &  (0: 1]  & \\[3cm]  \hline
\end{tabularx}
\end{table}
\end{document}

如您所见,这里也使用了与之前相同的技巧。与第一个例子相比,结果略有改善,因为上面的 MWE 是通过@{}消除列间空间来实现的。

附录2: 不清楚为什么要使用\\[3cm]在单元格内容周围留出更多垂直空间。通过更改可以实现类似的效果,且问题更少\arraystretch,例如,通过在单元格中更合理地添加垂直空间,您可以按如下方式设计表格:

\documentclass{article}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{m{#1}}% <-- cell's contend is vertically centered
\newcolumntype{C}{>{\centering\arraybackslash $}X<{$}}

\begin{document}
\begin{table}[h]
    \renewcommand{\arraystretch}{3}
    \setlength{\extrarowheight}{-2.5pt}% <-- correction of vertical centering
\begin{tabularx}{\textwidth}{ | C | C |}
\hline
N_{1}
    &  (0: 1]   \\  \hline
\end{tabularx}
\end{table}
\end{document}

如您所见,现在还没有添加虚假列。

在此处输入图片描述

相关内容