我无法控制 itemize 的最后一行和下一行之间的行距,如图所示。有人能提出解决方案来解决这个问题吗?我还想知道我是否可以获得更紧凑的列表。
\documentclass[10pt,a4paper,oneside]{article}
\usepackage[a4paper,left=0.9in,right=0.9in,top=1in,bottom=1in]{geometry}
\usepackage{longtable}
\usepackage{enumitem}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\scriptsize
\begin{minipage}[t]{0.5\textwidth}
\begin{longtable}[t]{|p{1.0cm}|p{5.5cm}|}
\hline
\bf{Head 1} & \textbf{Head 2} \\\hline\hline
\texttt{A} & Department
\begin{itemize} \setlength{\itemsep}{0pt}
\item \texttt{A} - Apple
\item \texttt{B} - Boy
\item \texttt{C} - Cat
\item \texttt{D} - Dog
\end{itemize}\\
\texttt{E} & Elephant \\
\texttt{F} & Fan \\
\hline
\end{longtable}
\end{minipage}%
\end{document}
答案1
布局有两种变化。我减少了列表的缩进量和相对于周围文本的垂直间距。
注意命令或环境的可选参数必须用一对括号 ( [option]
) 分隔,不是在一对括号命令 ( \[option\]
) 之间。此外,字体命令(例如)\bf
已被弃用超过 20 年。请使用\textbf{…}
命令或\bfseries
开关。
最后,同样重要的是,正如@Zarko 指出的那样,长表可以跨页拆分,而小页不能。您可以改用环境multicols
。
\documentclass[10pt,a4paper,oneside]{article}
\usepackage[a4paper,hmargin=0.9in, vmargin=1in]{geometry}
\usepackage{longtable}
\usepackage{enumitem}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\scriptsize
\begin{minipage}[t]{0.5\textwidth}
\renewcommand\arraystretch{1.33}
\begin{longtable}[t]{|p{1.0cm}|p{5.5cm}|}
\hline
\textbf{Head 1} & \textbf{Head 2} \\\hline\hline
\texttt{A} & Department
\begin{itemize}[wide = 0.5em, nosep, after=\vspace{-\baselineskip}]
\item \texttt{A} - Apple
\item \texttt{B} - Boy
\item \texttt{C} - Cat
\item \texttt{D} - Dog
\end{itemize}\\
\texttt{E} & Elephant \\
\texttt{F} & Fan \\
\hline
\end{longtable}
\end{minipage}%
\begin{minipage}[t]{0.5\textwidth}
\renewcommand\arraystretch{1.33}
\begin{longtable}[t]{|c|p{5.5cm}|}
\hline
\textbf{Head 1} & \textbf{Head 2} \\\hline\hline
\texttt{A} & Department
\begin{itemize}[wide = 0.5em, nosep, after=\vspace{-\baselineskip}]
\item \texttt{A} - Apple
\item \texttt{B} - Boy
\item \texttt{C} - Cat
\item \texttt{D} - Dog
\end{itemize}\\
\texttt{E} & Elephant \\
\texttt{F} & Fan \\
\hline
\end{longtable}
\end{minipage}%
\end{document}
答案2
如果您加载了该enumitem
包,则可以设置列表选项(一个或多个),包括您需要的命令after=
。例如,如果您写入after=\vspace{\baselineskip}
,那么这就是列表之后将发生的事情。
如果您想要更紧凑的列表,也可以使用负值,例如itemsep=-1mm
。无论如何,请检查我如何使用这些命令,因为您使用的方式不是标准方式。要将longtable
左对齐,请添加可选参数[l]
。
另外,请确保检查你的代码,有很多\[\]
不应该出现的地方,可能是搜索和替换的结果。
输出
代码
\documentclass[10pt,a4paper,oneside]{article}
\usepackage[a4paper,left=0.9in,right=0.9in,top=1in,bottom=1in]{geometry}
\usepackage{longtable}
\usepackage{enumitem}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\scriptsize
%\begin{minipage}[t]{0.5\textwidth}
\begin{longtable}[l]{|p{1.0cm}|p{5.5cm}|}
\hline
\bf{Head 1} & \textbf{Head 2} \\\hline\hline
\texttt{A} & Department
\begin{itemize}[itemsep=0pt, after=\vspace{-1ex}]
\item \texttt{A} - Apple
\item \texttt{B} - Boy
\item \texttt{C} - Cat
\item \texttt{D} - Dog
\end{itemize}\\
\texttt{E} & Elephant \\
\texttt{F} & Fan \\
\hline
\end{longtable}
%\end{minipage}%
\end{document}
答案3
我不知道这个表设计背后要求的是什么,但是,我会设计如下:
\documentclass[10pt,a4paper,oneside]{article}
\usepackage[a4paper,hmargin=0.9in, vmargin=1in]{geometry}
\usepackage{tabularx}
\usepackage{enumitem}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\renewcommand\arraystretch{1.2}
\begin{tabularx}{0.5\textwidth}{|>{\ttfamily}c|>{\ttfamily}X|}
\hline
\textbf{\textsf{Head 1}} & \textbf{\textsf{Head 2}} \\\hline\hline
A & Department
\begin{itemize}[wide = 0.5em, nosep, after=\vspace{-\baselineskip}]
\item A - Apple
\item B - Boy
\item C - Cat
\item D - Dog
\end{itemize}\\
E & Elephant \\
F & Fan \\
\hline
\end{tabularx}
\end{document}
即不使用minipages
,而是使用tabularx
,将表格扩展到所需宽度并在列选项中定义字体系列。这使代码更简洁,更不容易出错。上面的 MWE 给出:
附录:
如果您对列头使用包thead
中的宏makecell
,则可以获得:
上述 MWE 需要进行的变更包括:
\usepackage{makecell,tabularx}
\renewcommand\theadfont{\bfseries\sffamily}
\usepackage{enumitem}
\renewcommand{\familydefault}{\sfdefault}
\begin{document}
\renewcommand\arraystretch{1.2}
\begin{tabularx}{0.5\textwidth}{|>{\ttfamily}c|>{\ttfamily}X|}
\hline
\thead{Head 1} & \thead{Head 2} \\\hline\hline
... <further is the same as in above MWE > ...