我想要一个真正紧凑的列表,因此我定义了一个自定义环境来实现相同的目标。
但是,我无法消除列表顶部超出一定宽度的空白。我尝试了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
和\partopsep
来0em
:
\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
另一个选择是使用nolistsep
并leftamrgin=*
从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 提供的垂直空间,因为@minipage
是false
;为了防止这种情况,可以“假装”列表位于 内minipage
(在 内minipage
不会添加此空间)设置@minipage
为true
。这是一个可能的解决方案:
\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}