无法减少列表顶部的空白

无法减少列表顶部的空白

我想要一个真正紧凑的列表,因此我定义了一个自定义环境来实现相同的目标。

但是,我无法消除列表顶部超出一定宽度的空白。我尝试了topsep和其他参数的负值,但没有成功。

为什么会发生这种情况?列表中顶部空格有最小限制吗?

以下是我的简历示例:

\documentclass[a4paper]{article}

\usepackage[total={6.8in,9.3in},top=1.1in,left=.7in]{geometry}
\usepackage{fancyhdr}
\usepackage[hidelinks]{hyperref}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[T1]{fontenc}
\usepackage{tgpagella}
\usepackage{textcomp}
\usepackage{enumitem}

\pagestyle{fancy}
% Remove page numbers
\fancyfoot{}

\newenvironment{noindlist}
 {\begin{list}{\labelitemi}{\leftmargin=1em\itemindent=0em\topsep=0em\partopsep=0em\itemsep=-4pt}}
 {\end{list}}

\setlength{\headheight}{52pt}
\chead{%
  \fontsize{20.74pt}{24pt}\selectfont{}%
  Firstname Secondname\\%
  \fontsize{8pt}{9.6pt}\selectfont{}%
  \oldstylenums{1234}C, Street Name, City, State, \oldstylenums{12345}, United States; \oldstylenums{123 456 7890}; %
  \href{mailto:[email protected]}{\nolinkurl{[email protected]}}; %
  \href{http://google.com}{WWW}%
}

\begin{document}
\noindent
\renewcommand\multirowsetup{\raggedleft}
\begin{tabularx}{\textwidth}{rX lX}
  \multirow{2}{2.5cm}{RESEARCH\\WORK} & \textbf{Master's Thesis:} Blah Blah Blah \hfill University\\
  &  \textit{Advisor: \href{http://www.google.com}{Prof. Some Name}}\hfill April \oldstylenums{2012 =} Current\\
  & \begin{noindlist}
    \item First line of the thesis description
    \item Second line of the thesis description which is quite long and hence will spill out in an additional line
  \end{noindlist}\\
\end{tabularx}
\end{document}

topsep以下是设置为 的示例-100em在此处输入图片描述

答案1

你必须小心:\topsep不仅在前一个文本和列表之间使用,而且在列表和后面的文本之后使用,所以这

\documentclass{article}

\newenvironment{noindlist}
 {\begin{list}{\labelitemi}{\leftmargin=1em\itemindent=0em\topsep=-5em\itemsep=-4pt}}
 {\end{list}}

\begin{document}

\noindent Some text before the list
\begin{noindlist}
\item First item.
\item Second item.
\end{noindlist}
Some text after the list

\end{document}

会产生不太理想的效果:

在此处输入图片描述

您可以设置\topsep\partopsep0em

\documentclass{article}

\newenvironment{noindlist}
 {\begin{list}{\labelitemi}{\leftmargin=1em\itemindent=0em\topsep=0em\partopsep=0em \itemsep=-4pt}}
 {\end{list}}

\begin{document}

\noindent Some text before the list
\begin{noindlist}
\item First item.
\item Second item.
\end{noindlist}
Some text after the list

\end{document

在此处输入图片描述

另一个选择是使用nolistsepleftamrgin=*enumitem包裹:

\documentclass{article}
\usepackage{enumitem}

\begin{document}

\noindent Some text before the list
\begin{itemize}[nolistsep,leftmargin=*]
\item First item.
\item Second item.
\end{itemize}
Some text after the list

\end{document}

在此处输入图片描述

如果这必须应用于所有itemize环境,你可以说

\setlist[itemize]{nolistsep,leftmargin=*}

在序言中,或者您可以使用这些设置定义自己的列表(请参阅包文档)。

更新:现在实际代码已经提供,可以检测到问题:在表格单元格列表中插入由 \parskip 提供的垂直空间,因为@minipagefalse;为了防止这种情况,可以“假装”列表位于 内minipage(在 内minipage不会添加此空间)设置@minipagetrue。这是一个可能的解决方案:

\documentclass[a4paper]{article}

\usepackage[total={6.8in,9.3in},top=1.1in,left=.7in]{geometry}
\usepackage{fancyhdr}
\usepackage[hidelinks]{hyperref}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[T1]{fontenc}
\usepackage{tgpagella}
\usepackage{textcomp}
\usepackage{enumitem}

\pagestyle{fancy}
% Remove page numbers
\fancyfoot{}

\newenvironment{noindlist}
 {\begin{list}{\labelitemi}{\leftmargin=1em\itemindent=0em\topsep=0em\partopsep=0em\itemsep=-4pt\parskip=0pt}}
 {\end{list}}

\setlength{\headheight}{52pt}
\chead{%
  \fontsize{20.74pt}{24pt}\selectfont{}%
  Firstname Secondname\\%
  \fontsize{8pt}{9.6pt}\selectfont{}%
  \oldstylenums{1234}C, Street Name, City, State, \oldstylenums{12345}, United States; \oldstylenums{123 456 7890}; %
  \href{mailto:[email protected]}{\nolinkurl{[email protected]}}; %
  \href{http://google.com}{WWW}%
}

\makeatletter
\newcommand\novspace{\@minipagetrue}
\makeatother

\begin{document}
\noindent
\renewcommand\multirowsetup{\raggedleft}
\begin{tabularx}{\textwidth}{rX lX}
  \multirow{2}{2.5cm}{RESEARCH\\WORK} & \textbf{Master's Thesis:} Blah Blah Blah \hfill University\\
  &  \textit{Advisor: \href{http://www.google.com}{Prof. Some Name}}\hfill April \oldstylenums{2012 =} Current \\
  & \novspace\begin{noindlist}
    \item First line of the thesis description
    \item Second line of the thesis description which is quite long and hence will spill out in an additional line
  \end{noindlist}\\
\end{tabularx}
\end{document}

在此处输入图片描述

当然,如果您要在列中多次使用列表,最好的办法是定义一个新的列类型:

\makeatletter
\newcommand\novspace{\@minipagetrue}
\makeatother
\newcolumntype{Y}{>{\novspace}X}

进而:

\begin{tabularx}{\textwidth}{rY lX}
...
\end{tabularx}

另外,看到你的第一列,也许最好将其定义为一p{<length>}列,这样它就会有一个固定的宽度(由给出<length>)。

答案2

总是提供一份完整的文档来说明问题。使用标准设置,您显示的负间距不会留下较大的空间,实际上它会产生负间距并过度打印周围的文本。因此,您显示的效果是由于您未显示的代码造成的,这使得很难提供帮助。

我猜你有一个非标准\parskip,并没有考虑到这一点和/或\partopsep

在此处输入图片描述

\documentclass{article}

\newenvironment{noindlist}
 {\begin{list}{\labelitemi}{\leftmargin=1em \itemindent=0em \topsep=-5em \itemsep=-4pt}}
 {\end{list}}

\begin{document}


aaaa aaaa aaaa aaaa aaaa aaaa aaaa aaaa 
\begin{noindlist}
\item 1 1 1 1 1 1
\item 2 2 2 2 2 2
\item 3 3 3 3 3 3
\end{noindlist}
bbbb bbbb bbbb bbbb bbbb bbbb bbbb bbbb 


\vspace{3cm}


cccc cccc cccc cccc cccc cccc cccc cccc 

\begin{noindlist}
\item 1 1 1 1 1 1
\item 2 2 2 2 2 2
\item 3 3 3 3 3 3
\end{noindlist}

dddd dddd dddd dddd dddd dddd dddd dddd 


\end{document}

在编辑的问题中,空白不是胶水p它是由添加到列(包括)的支柱和列表处理之间的交互引起的空白段落X。最简单的方法是用 开始一个普通段落,为\mbox{}列表提供一个基础,但插入一些负空间进行补偿。

& 
\mbox{}\par\vskip-2\baselineskip\mbox{}
\begin{noindlist}

相关内容