表格上的 Parbox 未垂直居中,枚举前删除空格,但 topsep=0pt 失败

表格上的 Parbox 未垂直居中,枚举前删除空格,但 topsep=0pt 失败

我的问题:

  1. 我使用 parbox 在表格上设置换行符,但不垂直居中。如果放大表格顶部,您会看到它位于底部中心,但我希望它位于中间。(目标:垂直居中)。
  2. 枚举的行首与文本的行首不同。似乎列表前有一个垂直空格,我想删除它。使用 topsep=0pt 什么也没得到。(目标:相同的行首)。

这是我的 MWE:

\documentclass[a4paper,12pt,oneside,openany]{book}
\usepackage[a4paper, inner=4cm, outer=3cm, top=4cm, bottom=3cm]{geometry}
\usepackage{longtable}
\usepackage{lipsum}
\usepackage{pdflscape}
\renewcommand{\arraystretch}{2.0}
\usepackage{enumitem}

\begin{document}
    \chapter{BOO}
    \lipsum[1-2]
    \newpage
    \thispagestyle{plain}
    \begin{landscape}
        \section{My Table}
        \begin{table}[h!]
            \centering
            \caption{This is a table}
            \begin{tabular}{|p{3cm}| p{3cm} |p{3cm}|p{3.2cm}|p{2.5cm}|p{2.5cm}|p{3cm}|}
                \hline
                \multicolumn{1}{|c|}{\textbf{Whatever}} 
                & \multicolumn{1}{c|}{\parbox[H]{3cm}{\centering \textbf{Random \\ Text}}} 
                & \multicolumn{1}{c|}{\textbf{Whatever}} 
                & \multicolumn{1}{c|}{\textbf{Whatever}} 
                & \multicolumn{1}{c|}{\parbox[H]{2cm}{\centering \textbf{Random \\ Text}}} 
                & \multicolumn{1}{c|}{\parbox[H]{3cm}{\centering \textbf{Random \\ Text}}}
                & \multicolumn{1}{c|}{\parbox[H]{3cm}{\centering \textbf{Random \\ Text}}}\\
                \hline
                \lipsum[2][1]
                & \begin{enumerate}[left= 0pt, label=\arabic*), noitemsep, topsep= 0pt]
                    \item \lipsum[1][1]
                    \item \lipsum[1][1]
                \end{enumerate} 
                & \begin{enumerate}[left= 0pt, label=\arabic*), noitemsep, topsep= 0pt]
                    \item \lipsum[1][1]
                    \item \lipsum[1][1]
                \end{enumerate} 
                &\begin{enumerate}[left= 0pt, label=\arabic*), noitemsep, topsep= 0pt]
                    \item \lipsum[1][1]
                    \item \lipsum[1][1]
                \end{enumerate}
                &\begin{enumerate}[left= 0pt, label=\arabic*), noitemsep, topsep= 0pt]
                    \item \lipsum[1][1]
                \end{enumerate}
                &\lipsum[2][4]
                & \lipsum[2][1]\\
                \hline
            \end{tabular}
        \end{table}
    \end{landscape}
    
\end{document}

请帮助我。谢谢!

答案1

为了解决第一个问题,我建议您加载makecell包并使用\makecell{...}指令而不是\multicolumn{1}{c|}{\parbox[H]{3cm}{\centering ...}}包装器。

为了解决第二个问题,我建议您利用enumitem包中的某些机制(特别是它的\newlist\setlist指令)来创建一个定制enumerate的列表环境(ColEnum在下面的示例代码中调用),将列表的内容包含在中minipage。 这样做将去除垂直空格。

我还建议您\RaggedRight在窄列中使用指令,从完全对齐切换到右对齐。

在此处输入图片描述

\documentclass[a4paper,12pt,oneside,openany]{book}
\usepackage[inner=4cm, outer=3cm, top=4cm, bottom=3cm]{geometry}
\usepackage{lipsum,pdflscape}

% new:
\usepackage{makecell} % for '\makecell' macro
\usepackage{ragged2e} % for '\RaggedRight' macro
\usepackage{enumitem} % for '\newlist' and '\setlist' macros
\newlist{ColEnum}{enumerate}{1}
\setlist[ColEnum,1]{label = \arabic*), left = 0pt, nosep, 
          before= {\begin{minipage}[t]{\hsize}\RaggedRight},
          after = {\end{minipage}}}

\begin{document}
\setcounter{chapter}{2} % just for this example
\thispagestyle{plain}
\begin{landscape}
\section{A section header, followed by a table}

\begin{table}[h!]
\centering
\caption{This is a table\strut}
\begin{tabular}{|p{3cm}   | p{3cm}   | p{3cm}   |
                 p{3.2cm} | p{2.5cm} | p{2.5cm} | p{3cm}|}
\hline
\bfseries\makecell{Whatever}  & 
\bfseries\makecell{Random \\ Text} & 
\bfseries\makecell{Whatever} & 
\bfseries\makecell{Whatever} & 
\bfseries\makecell{Random \\ Text} & 
\bfseries\makecell{Random \\ Text} & 
\bfseries\makecell{Random \\ Text} \\
\hline
\RaggedRight\lipsum[2][1] & 
\begin{ColEnum}
   \item \lipsum[1][1]
   \item \lipsum[1][1]
\end{ColEnum} & 
\begin{ColEnum}
   \item \lipsum[1][1]
   \item \lipsum[1][1]
\end{ColEnum} &
\begin{ColEnum}
   \item \lipsum[1][1]
   \item \lipsum[1][1]
\end{ColEnum} &
\begin{ColEnum}
   \item \lipsum[1][1]
\end{ColEnum} &
\RaggedRight\lipsum[2][4] & 
\RaggedRight\lipsum[2][1] \\
\hline
\end{tabular}
\end{table}
\end{landscape}
    
\end{document}

相关内容