在表格中使用小页面时失去垂直对齐

在表格中使用小页面时失去垂直对齐

我在表格中使用了 minipage 和 enumerate。但是,当我这样做时,代码中“hello”部分的垂直对齐会丢失。

以下是代码:

\documentclass[12pt]{extarticle}

\usepackage{geometry}
\usepackage{array}
\usepackage{enumitem}


\begin{document}

\begin{tabular}{ >{\centering\arraybackslash} m{2cm} | >{\arraybackslash} m{\textwidth} }
    \textit{Hello} & One \newline
    Two \newline
    \textit{{Three}}
    
\begin{minipage}[t]{\linewidth}
        \begin{itemize}[left=2mm, topsep=0pt, label={-}, noitemsep, nosep, partopsep=0pt, after=\strut]
            \item \small Four
            \item \small Five
        \end{itemize}
    \end{minipage} \\
\end{tabular} 

\end{document}

下面是输出

未垂直对齐

有人知道如何使其垂直对齐吗?提前谢谢您。

答案1

尝试:

  • 删除列表周围的小页面
  • 借助etoolbox序言中的定义列表样式
  • 要添加列表样式minipage,请参阅 MWE
\documentclass[12pt]{extarticle}
\usepackage{array}
\usepackage{enumitem}
\usepackage{etoolbox}
\AtBeginEnvironment{tabular}{% <---
    \setlist[itemize]{nosep=0pt,
                     leftmargin=1.5em,
                     label=--,
                     after=\end{minipage},                   
                     before=\begin{minipage}[t]{\linewidth}}
                     }

\begin{document}

\begin{tabular}{ >{\centering\arraybackslash}m{2cm} | m{5cm} }
\textit{Hello}  &   One \newline
                    Two \newline
                    \textit{Three}
                    \begin{itemize}\small 
                \item   Four
                \item   Five
                    \end{itemize}   \\
\end{tabular}

\end{document}

在此处输入图片描述

答案2

{NiceTabular}这是使用 的解决方法nicematrix。在该环境中,它类似于经典环境{tabular}(包array),有一个命令\Block。对于您的情况,您可以放入Hello一个单单元格\Block:,允许使用该密钥v-center\Block使用该密钥,块的内容在数学上位于单元格的中心(通过使用 PGF 计算)。

\documentclass[12pt]{extarticle}

\usepackage{geometry}
\usepackage{enumitem}

\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{ >{\centering\arraybackslash} m{2cm} | >{\arraybackslash} m{11cm} }[hvlines]
    \Block[v-center]{}{\textit{Hello}} & One \newline
    Two \newline
    \textit{{Three}}

\begin{minipage}[t]{\linewidth}
        \begin{itemize}[left=2mm, topsep=0pt, label={-}, noitemsep, nosep, partopsep=0pt, after=\strut]
            \item \small Four
            \item \small Five
        \end{itemize}
    \end{minipage} \\
\end{NiceTabular} 

\end{document}

您需要进行多次编译,因为nicematrix底层使用了 PGF/Tikz 节点。

上述代码的输出

相关内容