在 tabularx 中混合 m 和 X

在 tabularx 中混合 m 和 X

我对包含 m 和 X 列的表格有疑问。我需要一列垂直居中,另一列填充可用的水平空间。我的问题是,只要添加“X”列,垂直对齐就不起作用。有没有解决方法可以同时实现这两个功能,还是我做了一些概念上的错误。

这是我的最小示例:

\documentclass{scrreprt}    
\usepackage{tabularx}

\begin{document}
    \noindent
    \begin{tabularx}{\textwidth}{|m{0.75cm}|X|p{5cm}|}
        \hline
        \textbf{NO} & \centering \textbf{Content} & \textbf{Signature} \\ \hline
        40 & \begin{itemize}
                \item some
                \item items
             \end{itemize}   & \\ \hline
        40 & \begin{itemize}
                \item some
                \item items
             \end{itemize}   & \\ \hline
    \end{tabularx}

\end{document}

因为我认为这可能很重要,所以我想给出一个更复杂的例子,因为它更接近我的实际代码。我有一张很长的表,因此我使用它ltxtable来允许分页符,并将“X”列设置为tabularx

\documentclass{scrreprt}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}
    \begin{filecontents}{activitytable.tex}
        \begin{longtable}{|M{0.75cm}|X|P{5cm}|}
            \hline
            \textbf{NO} & \centering \textbf{Content} & \textbf{Signature} \\ \hline
            40 & \begin{itemize}
                    \item some
                    \item items
                 \end{itemize}   & \\ \hline
            41 & \begin{itemize}
                    \item some
                    \item items
                 \end{itemize}   & \\ \hline
        \end{longtable}
    \end{filecontents}

    \LTXtable{\textwidth}{activitytable}

\end{document}

在这个简单的例子中,两个例子的结果看起来几乎(对于简单的例子来说并不居中)相同。 错误对齐

我希望它看起来与此类似,但不需要自己填充第二列的宽度。 错误的宽度

先感谢您。

答案1

这是关于m它的一个常见误解不是表示将内容放置在该单元格垂直空间的中间。意思是:将内容的参考点放置在内容的中间。

在此处输入图片描述

我在您的图像中添加了一条线来显示第二行单元格的参考点,第 1 列的参考点是 40 的中间而不是基线,列的参考点X是其顶部,因为它p通常使用的参考点p是其第一行的基线,但是由于您有一个显示列表,第一个项目是垂直空间,因此参考点是单元格的顶部,所以参考点放在红线上,产生您看到的效果。

可能您想要做的是使用\tabularxcolumn,这样就X定义了红线不会穿过列表的垂直中心mp

相关内容