tabularx 中的文本垂直居中(再次)?

tabularx 中的文本垂直居中(再次)?

我见过宽度为 100% 且垂直/水平对齐的表格tabularx 表中的文本垂直居中tabularx X 列类型中的垂直对齐- 我正在尝试他们建议的方法,但没有效果。

考虑一下这个MWE:

\documentclass{article}
\usepackage{array,booktabs}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{hhline}
\newcolumntype{x}[1]
{>{\raggedright}p{#1}}
\newcolumntype{z}[1]
{>{\centering}p{#1}}
\newcommand{\tn}{\tabularnewline}

\renewcommand\tabularxcolumn[1]{>{\Centering}m{#1}}  %% COMMENT

\begin{document}

\begin{table}[!h]%t1
\caption{A rather long explanation of what this table is supposed to be}
\small%
{%
\begin{tabularx}{\textwidth}%
  {|x{2.6cm}|X|}  %% COMMENT
%   {|x{2.6cm}|>{\centering}X|} %% UNCOMMENT
\hline
Something something & something else \tn
\hhline{|=|=|}
\textbf{Item one} \\ {\small\it item ref 1} &%
  param 01 / param 02 \\/ param3\tn
\hline
\textbf{Item two} \\ {\small\it item ref 2} &%
  param 03 / param 04 \\/ param5\tn
\hline
\textbf{Item two} \\ {\small\it item ref 2} &%
  param 03 / param 04 / param5\tn
\hline
\end{tabularx}}
\label{tab:sometable}
\end{table}

\end{document}

照这样,这将产生:

测试c2.png

... 显然有些东西坏了(\\我猜,它们被视为新的表格线)?

%%但是如果你取消注释/注释掉MWE 中标记的行,它几乎可以正常编译:

测试c1.png

...除了没有垂直居中 - 正如第 3 行、第 2 列所证明的那样。

那么,如何才能拥有一个可以拉伸的列,允许在单元格内换行 - 并使文本垂直居中?

答案1

\Centering尝试友好并避免重新定义\\,因此\\可以安全地在第一列中使用,但在第二列中则不行。这只是告诉\Centering不要担心tabular的版本\\。无关,但不要使用[h!]

\documentclass{article}
\usepackage{array,booktabs}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{hhline}
\newcolumntype{x}[1]
{>{\raggedright}p{#1}}
\newcolumntype{z}[1]
{>{\centering}p{#1}}
\newcommand{\tn}{\tabularnewline}

\makeatletter
\renewcommand\tabularxcolumn[1]{>{%
\let\@raggedtwoe@savedcr\\%
\Centering}m{#1}}  %% COMMENT
\makeatother

\begin{document}

\begin{table}[htp]%t1
\caption{A rather long explanation of what this table is supposed to be}
\small%
{%
\begin{tabularx}{\textwidth}%
  {|x{2.6cm}|X|}  %% COMMENT
%   {|x{2.6cm}|>{\centering}X|} %% UNCOMMENT
\hline
Something something & something else \tn
\hhline{|=|=|}
\textbf{Item one} \\ {\small\it item ref 1} &%
  param 01 / param 02 {\show\\}\\/ param3\tn
\hline
\textbf{Item two} \\ {\small\it item ref 2} &%
  param 03 / param 04 \\/ param5\tn
\hline
\textbf{Item two} \\ {\small\it item ref 2} &%
  param 03 / param 04 / param5\tn
\hline
\end{tabularx}}
\label{tab:sometable}
\end{table}

\end{document}

答案2

一种使用makecell垂直居中单元格并带有换行符的变体,并且cellspace行与行之间的垂直间距较小:

\documentclass{article}
\usepackage{array,booktabs}
\usepackage{tabularx}
\usepackage{ragged2e}
\usepackage{hhline}
\newcolumntype{x}[1]
{>{\raggedright}m{#1}}
\newcolumntype{z}[1]
{>{\centering}m{#1}}
\newcommand{\tn}{\tabularnewline}

\renewcommand\tabularxcolumn[1]{>{\centering\arraybackslash}m{#1}} %% COMMENT
\usepackage{makecell}
\renewcommand\cellalign{lc}
\usepackage{cellspace}
\setlength\cellspacetoplimit{2pt}
\setlength\cellspacebottomlimit{2pt}
\addparagraphcolumntypes{x, }
\usepackage{caption}

\begin{document}

\begin{table}[!h]%t1
  \caption{A rather long explanation of what this table is supposed to be}
  \small
  \begin{tabularx}{\textwidth}%
    {|S{x{2.6cm}}|X|} %
    \hline
    \makecell{Something \\something} & something else \\
    \hhline{|=|=|}
    \makecell{\textbf{Item one} \\ {\small\it item ref 1}} &%
    param 01 / param 02 \par/ param3\tn
    \hline
    \makecell{\textbf{Item two} \\ {\small\it item ref 2}} &%
    param 03 / param 04 \par/ param5\tn
    \hline
    \makecell{\textbf{Item two} \\ {\small\it item ref 2}} &%
    param 03 / param 04 / param5\tn
    \hline
  \end{tabularx}
  \label{tab:sometable}
\end{table}

\end{document} 

在此处输入图片描述

相关内容