ltablex 中的列对齐

ltablex 中的列对齐

我尝试应用如何在 tabularx 中实现列对齐?右对齐单元格ltablex。但是,当表格的大小刚好够容纳我的列时,我遇到了一个问题:一些单元格最终会占据两行,而第一行是空的。这是一个最小的例子:

\documentclass[a4paper, 12pt]{report}

\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{etoolbox}
\AtBeginEnvironment{tabular}{\footnotesize}
\AtBeginEnvironment{tabularx}{\footnotesize}
\AtBeginEnvironment{longtable}{\footnotesize}

\usepackage{multirow}
\usepackage{ltablex}
\usepackage{array}
\newcolumntype{Y}{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}X}
\newcolumntype{Z}{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}X}


\begin{document}

%\renewcommand{\tabcolsep}{3pt}

\begin{tabularx}{160pt}{ X  Y  Z }
% head
  \hline 
  Name & 
  Long~name & 
  Name  \\
  & [unit] & [$longunit$]  \\* 
  \hline\hline 
\endhead
% foot
  \hline
\endfoot 
% body
\multirow{3}{1.6cm}{Text on two lines} & 0 & 0 \\*
 & 0 & 0   \\*
 & 0 & 0   \\
\end{tabularx}


\end{document}

我得到这个结果:

编译结果

我发现删除\hspace{0pt}Y 和 Z 列类型定义可以解决问题,但由于它在其他情况下可能会有用,所以我想知道是否有更好的方法来解决这个问题?

此外,如果我取消注释重新定义 的行tabcolsep,Y 和 Z 列将再次左对齐。有没有办法让 右对齐或居中列,并且 较低tabcolsep

答案1

你可以修复换行符

\newcolumntype{Y}{>{\centering\let\newline\\\arraybackslash\nobreak\hspace{0pt}}X}
\newcolumntype{Z}{>{\raggedleft\let\newline\\\arraybackslash\nobreak\hspace{0pt}}X}

\tabcolsep应该设置为\setlengthnot \renewcommand(但是在这里它仍然表现得很奇怪,现在已经过时了……)

相关内容