我的问题:
- 我使用 parbox 在表格上设置换行符,但不垂直居中。如果放大表格顶部,您会看到它位于底部中心,但我希望它位于中间。(目标:垂直居中)。
- 枚举的行首与文本的行首不同。似乎列表前有一个垂直空格,我想删除它。使用 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}