我在表格中使用了 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 节点。