![章节标题前后的多列列表间距](https://linux22.com/image/298732/%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%E5%89%8D%E5%90%8E%E7%9A%84%E5%A4%9A%E5%88%97%E5%88%97%E8%A1%A8%E9%97%B4%E8%B7%9D.png)
当列表位于某个部分的开始之后或开始之前时,如何itemize
在环境内部的环境之前和之后获得一致的间距?multicols
Foo2 中的列表是一个enumitem
列表,并且列表前后的间距似乎与 Foo1 中文本前后的间距相匹配。
Foo3 中的列表是相同的enumitem
列表,但被封闭在multicols
环境中。两列列表前后的垂直空间太多了。
Foo4 中的列表与 Foo3 相同,只是\multicolsep
设置为 0pt。列表前面的空间仍然太多,但不是那么糟糕,列表后面的空间现在太少了。
我该如何修复这个问题以获得一致的间距?
代码如下:
\documentclass{article}
\usepackage{calc}
\usepackage[vmargin=1em,hmargin=0.25in+1em,papersize={2in,2.7in}]{geometry}
\usepackage{titlesec}
\titleformat{\section}[block]{\normalfont\large\scshape}{}{0pt}{}[\titlerule]
\titlespacing*{\section}{-0.25in}{*0.25}{*0.25}[-0.25in]
\usepackage{multicol}
\usepackage{enumitem}
\SetEnumitemKey{twocol}{
before=\raggedcolumns\begin{multicols}{2},
after=\end{multicols},
}
\SetEnumitemKey{twocol0}{
before=\raggedcolumns\setlength{\multicolsep}{0pt}\begin{multicols}{2},
after=\end{multicols},
}
\setlist[itemize]{leftmargin=*,nosep,}
\begin{document}%
\section{Foo1}Aj%
\section{Foo2}\begin{itemize}\item{}Aj\end{itemize}%
\section{Foo3}\begin{itemize}[twocol,]\item{}Aj\item{}Aj\end{itemize}%
\section{Foo4}\begin{itemize}[twocol0,]\item{}Aj\item{}Aj\end{itemize}%
\section{Foo5}Aj%
\end{document}
版本:
multicol 2014/08/24 v1.8g multicolumn formatting (FMi)
enumitem 2011/09/28 v3.5.2 Customized lists
答案1
如果您multicolumn
只需要一个在线itemize
环境,我建议采用另一种基于shortlst
软件包的方法。您可以在 CTAN 上找到它,但由于许可原因,它不在任何发行版中。
我定义了一个tabitemize
环境,用于按列显示的项目;列数由一个nc
键控制(默认为 3)。我认为以下代码可以满足您的要求:
\documentclass{article}
\usepackage{calc}
\usepackage[vmargin=1em,hmargin=0.25in+1em,papersize={2in,2.7in}]{geometry}
\usepackage{titlesec}
\titleformat{\section}[block]{\normalfont\large\scshape}{}{0pt}{}[\titlerule]
\titlespacing*{\section}{-0.25in}{*0.25}{*0.25}[-0.25in]
\usepackage{multicol}
\usepackage[inline]{enumitem}
\SetEnumitemKey{twocol}{
before=\raggedcolumns\begin{multicols}{2},
after=\end{multicols},
}
\SetEnumitemKey{twocol0}{
before=\raggedcolumns\setlength{\multicolsep}{0pt}\begin{multicols}{2},
after=\end{multicols},
}
\setlist[itemize]{leftmargin=*,nosep,}
\usepackage{shortlst, xkeyval}
\makeatletter
\newcounter{ncol}
\define@key{mcl}{nc}[3]{\setcounter{ncol}{#1}}%% 3 columns by default
\newenvironment{tabitemize}[1][]{%
\setkeys{mcl}{nc,#1}
\settowidth{\labelwidth}{\textbullet}
\setlength{\leftmargini}{\dimexpr\labelwidth+\labelsep\relax}%[1][3]
\setlength{\shortitemwidth}{\dimexpr\linewidth/\value{ncol}-\labelwidth-2\labelsep\relax}%
\begin{shortitemize}}%
{\end{shortitemize}
\vspace*{\dimexpr-\topsep-\partopsep\relax
}%
\begin{document}%
\section{Foo1}Aj%
\section{Foo2}\begin{itemize}\item{}Aj\end{itemize}%
\section{Foo3}\begin{tabitemize}[nc = 2]\item{}Aj\item{}Aj\end{tabitemize}%
\section{Foo4}\begin{tabitemize}[nc = 2]\item{}Aj\item{}Aj\end{tabitemize}%
\section{Foo5}Aj%
\end{document}