表格文字对齐问题

表格文字对齐问题

我对表格的对齐存在问题。

我想将表格的第一列垂直居中对齐,就像“之后”的图像一样。在我上传的代码中,第一列中的文本位于顶部,就像“之前”的图像一样。

我该去哪里改呢?

在此处输入图片描述

在此处输入图片描述

\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 进行测试。

相关内容