我对表格的对齐存在问题。
我想将表格的第一列垂直居中对齐,就像“之后”的图像一样。在我上传的代码中,第一列中的文本位于顶部,就像“之前”的图像一样。
我该去哪里改呢?
前
后
\begin{table}[]
\begin{tabular}{|>{\centering\arraybackslash}m{2.3cm}|p{4.6cm}|p{4.6cm}|}
\hline
\multicolumn{1}{|c|}{\multirow{2}{*}{}} & \multicolumn{2}{c|}{\textbf{Model}} \\ \cline{2-3}
\multicolumn{1}{|c|}{}
& \multicolumn{1}{>{\centering}p{4.75cm}|}{\textbf{A}}
&\multicolumn{1}{>{\centering}p{4.75cm}|}{\textbf{B}} \\ \hline
Description &
\begin{itemize}[noitemsep,nolistsep]\item \end{itemize} &
\begin{itemize}[noitemsep,nolistsep] \item \begin{itemize}
\item
\item \end{itemize} \end{itemize} \\ \hline
Advantage &
\begin{itemize}[noitemsep,nolistsep] \item \end{itemize} &
\begin{itemize}[noitemsep,nolistsep] \item \begin{itemize}
\item \end{itemize}
\item\end{itemize} \\ \hline
Disadvantage &
\begin{itemize}[noitemsep,nolistsep] \item
\begin{itemize}[noitemsep,nolistsep] \item \end{itemize} \end{itemize} &
\begin{itemize}[noitemsep,nolistsep] \item \end{itemize} \\ \hline
\end{tabular}%
\caption{Models}
\label{tab:model}
\end{table}
答案1
看来您似乎混淆了“行”和“列”这两个术语。第一行的内容垂直居中,水平居中。根据下面的第二幅图,您喜欢第一列单元格内容垂直居中。从排版上看,这不是一个好主意,最好是像第一幅图那样使用表格。
但是,如果您坚持想要的设计,一种方法是使用\multirow
第一列中的单元格。这需要手动设置相邻单元格中的最大行数:
\documentclass[10pt,a4paper]{article}
\usepackage{multirow, makecell} % new
\renewcommand\theadfont{\normalsize\bfseries} % new
\usepackage{enumitem}
\usepackage{etoolbox} % new
\AtBeginEnvironment{table}{% new
\setlist[itemize,1]{nosep,
leftmargin = * ,
label = $\bullet$ ,
before = \vspace{-0.6\baselineskip},
after = \vspace{-\baselineskip}
}
\setlist[itemize]{leftmargin=*}
}% end of AtBeginEnvironment
\begin{document}
\begin{table}[htb]
\begin{tabular}{|p{2.3cm}|p{4.6cm}|p{4.6cm}|}
\hline
& \multicolumn{2}{c|}{\thead{Model}} \\ \cline{2-3}
& \thead{A}
& \thead{B} \\ \hline
\multirow{4}{=}{Description}
& \begin{itemize}
\item item
\end{itemize}
& \begin{itemize}
\item item
\begin{itemize}
\item subitem
\item subitem
\end{itemize}
\end{itemize} \\ \hline
\multirow{3.4}{=}{Advantage}
& \begin{itemize}
\item item
\end{itemize}
& \begin{itemize}
\item item
\begin{itemize}
\item subitem
\end{itemize}
\item item
\end{itemize} \\ \hline
\multirow{2.4}{=}{Disadvantage}
& \begin{itemize}
\item item
\begin{itemize}
\item subitem
\end{itemize}
\end{itemize}
& \begin{itemize}
\item item
\end{itemize} \\ \hline
\end{tabular}%
\caption{Models}
\label{tab:model}
\end{table}
\end{document}
(红线表示页面布局)
可以看到,表格比 宽\textwidth
,需要适当调整列宽。
笔记:
一行中单元格的内容垂直对齐到基线。当您使用列说明符编写表格时,{m{...} p{...}p{...}
第一个单元格的基线位于此单元格中文本的垂直中心,并与位于单元格顶部的第二和第三个单元格的基线对齐。如果第一行中有三行文本,中间行将与其他单元格内容的顶部对齐。
附录:
如果您使用 Overleaf 服务,您可能会遇到multirow
软件包问题。暂时不使用其最新版本,该版本被视为高于 MWE。您可以通过以下更改解决问题:
\multirow{3.4}{=}{Advantage}
用。。。来代替\multirow{3}{=}[-1ex]{Advantage}
\multirow{2.4}{=}{Advantage}
用。。。来代替\multirow{2}{=}[-1ex]{Advantage}
希望 Overleaf 能在不久的将来升级其软件包存储库,并且原始 MWE 能够按预期工作并通过最新的 MikTeX 进行测试。