这似乎是多列文字引入了虚假的 [?] 垂直空格,但那里的解决方案似乎对我不起作用。基本上我想要使用的multicols
情况不是更改介绍文本和列表之间的垂直间距。右侧的输出使用multicols
:
环境之后还有额外的空间multicols
。
笔记:
- 环境
minipage
被用来说明问题。我不知道不是相信这会影响额外的垂直空间问题。 - 该
tikz
包被使用仅有的突出间距问题。
代码:
\documentclass{article}
\usepackage{tikz}
\usepackage{enumitem}
\usepackage{multicol}
\raggedcolumns
%\setlength{\multicolbaselineskip}{0pt}% Seems to have no effect
\begin{document}
\begin{minipage}[t]{0.44\linewidth}
The following are examples of numbers:
\begin{itemize}
\item 0ne,
\item $\pi$,
\item $2+3i$,
and
\item $0$.
\end{itemize}%
Some text following.
\end{minipage}%
\hfill%-------------------------
\begin{minipage}[t]{0.44\linewidth}
%% https://tex.stackexchange.com/questions/161966/spurious-vertical-space-introduced-by-multicols
%\setlength{\topskip}{\fontcharht\font`B }% Seems to have no effect
The following are examples of numbers:
\begin{multicols}{2}
\begin{itemize}
\item 0ne,
\item $\pi$,
\item $2+3i$,
\item $0$.
\item Two,
\item $e$,
\item $2-3i$,
and
\item $-0$.
\end{itemize}%
\end{multicols}
Some text following.
\end{minipage}%
% Following manually tweaked to show the problem.
\begin{tikzpicture}[overlay, remember picture]
\draw [red] (-11.5cm,-1.16cm) -- ++(4.8in,0);
\draw [blue] (-11.5cm,-1.86cm) -- ++(4.8in,0);
\draw [orange] (-11.5cm,-3.95cm) -- ++(4.8in,0);
\end{tikzpicture}
\end{document}
结果(2014-08-25)
以下是我从 Frank Mittelbach 的 MWE 获得的输出(请注意,后面文本的间距不正确):
\listfiles 的输出:
我刚刚更新全部在运行测试之前,请先从 TeXLive2014 下载软件包。那么,是不是我的某个软件包过期了,或者 TeXLive2014 版本存在问题:
*File List*
article.cls 2007/10/19 v1.4h Standard LaTeX document class
size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
tikz.sty 2013/12/13 v3.0.0 (rcs-revision 1.142)
pgf.sty 2013/12/18 v3.0.0 (rcs-revision 1.14)
pgfrcs.sty 2013/12/20 v3.0.0 (rcs-revision 1.28)
everyshi.sty 2001/05/15 v3.00 EveryShipout Package (MS)
pgfrcs.code.tex
pgfcore.sty 2010/04/11 v3.0.0 (rcs-revision 1.7)
graphicx.sty 2014/04/25 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
keyval.sty 2014/05/08 v1.15 key=value parser (DPC)
graphics.sty 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
trig.sty 1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
infwarerr.sty 2010/04/08 v1.3 Providing info/warning/error messages (HO)
ltxcmds.sty 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
pgfsys.sty 2013/11/30 v3.0.0 (rcs-revision 1.47)
pgfsys.code.tex
pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9)
pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4)
xcolor.sty 2007/01/21 v2.11 LaTeX color extensions (UK)
color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
pgfcore.code.tex
pgfcomp-version-0-65.sty 2007/07/03 v3.0.0 (rcs-revision 1.7)
pgfcomp-version-1-18.sty 2007/07/23 v3.0.0 (rcs-revision 1.1)
pgffor.sty 2013/12/13 v3.0.0 (rcs-revision 1.25)
pgfkeys.sty
pgfkeys.code.tex
pgfmath.sty
pgfmath.code.tex
pgffor.code.tex
tikz.code.tex
enumitem.sty 2011/09/28 v3.5.2 Customized lists
multicol.sty 2014/04/23 v1.8e multicolumn formatting (FMi)
etoolbox.sty 2011/01/03 v2.1 e-TeX tools for LaTeX
etex.sty 1998/03/26 v2.0 eTeX basic definition package (PEB)
supp-pdf.mkii
pdftexcmds.sty 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO)
ifluatex.sty 2010/03/01 v1.3 Provides the ifluatex switch (HO)
ifpdf.sty 2011/01/30 v2.3 Provides the ifpdf switch (HO)
epstopdf-base.sty 2010/02/09 v2.5 Base part for package epstopdf
grfext.sty 2010/08/19 v1.1 Manage graphics extensions (HO)
kvdefinekeys.sty 2011/04/07 v1.3 Define keys (HO)
kvoptions.sty 2011/06/30 v3.11 Key value format for package options (HO)
kvsetkeys.sty 2012/04/25 v1.16 Key value parser (HO)
etexcmds.sty 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
答案1
如果将列表itemize
放置在小页面的开头,则会省略列表前的通常垂直间距。
按照multicols
您添加的方式,itemize
列表周围会产生一个框,就像迷你页面一样,因此\topsep
不会添加。相反,您看到的是环境\multicolsep
前后添加的multicol
。
在文章类中(10pt),\topsep
其值为 8pt 加 2pt 减 4pt,而\multicolsep
12pt 之类的值可以解释(大部分)所经历的差异。因此
\setlength\multicolsep{\topsep}
理论上应该可以解决你的问题。
但是,您的示例还显示了多列处理中的一个故障,\prevdepth
这导致环境后出现 1.9994pt 的错位(仅在“盒装”模式下发生,即当环境出现在小页面或类似内容中时)。
因此,您现在还需要修补 multicol 内部组件之一:
\usepackage{etoolbox}
\makeatletter
\patchcmd\page@sofar{\kern-\dimen\tw@ \ifdim\dimen\tw@}
{\kern-\dimen\tw@ \prevdepth\z@ \ifdim\dimen\tw@}
{\typeout{Success!}}{\ERRORpatching}
\makeatother
完成这两项调整后,您应该看到以下内容:
根据要求,这里是完整的 MWE,如果它在您这边不起作用,您可能有一个旧版本multicol
,这是使用版本 2014/06/19 v1.8f 运行的。
\documentclass{article}
\usepackage{tikz}
\usepackage{enumitem}
\usepackage{multicol}
\raggedcolumns
\usepackage{etoolbox}
\setlength\multicolsep{\topsep}
\makeatletter
\patchcmd\page@sofar{\kern-\dimen\tw@ \ifdim\dimen\tw@}
{\kern-\dimen\tw@ \prevdepth\z@ \ifdim\dimen\tw@}
{\typeout{Success!}}{\ERRORpatching}
\makeatother
\begin{document}
\begin{minipage}[t]{0.44\linewidth}
The following are examples of numbers:
\begin{itemize}
\item 0ne,
\item $\pi$,
\item $2+3i$,
and
\item $0$.
\end{itemize}%
Some text following.
\end{minipage}%
\hfill%-------------------------
\begin{minipage}[t]{0.44\linewidth}
%% http://tex.stackexchange.com/questions/161966/spurious-vertical-space-introduced-by-multicols
%\setlength{\topskip}{\fontcharht\font`B }% Seems to have no effect
The following are examples of numbers:
\begin{multicols}{2}
\begin{itemize}
\item 0ne,
\item $\pi$,
\item $2+3i$,
\item $0$.
\item Two,
\item $e$,
\item $2-3i$,
and
\item $-0$.
\end{itemize}%
\end{multicols}%
Some text following.
\end{minipage}%
% Following manually tweaked to show the problem.
\begin{tikzpicture}[overlay, remember picture]
\draw [red] (-11.5cm,-1.16cm) -- ++(4.8in,0);
\draw [blue] (-11.5cm,-1.86cm) -- ++(4.8in,0);
\draw [orange] (-11.5cm,-3.95cm) -- ++(4.8in,0);
\end{tikzpicture}
\end{document}
更新
1.8g中已添加针对此问题的修复multicol
。新版本现已发布在 CTAN 上,几天后应该会出现在具有更新功能的发行版上(一旦 Heiko 开始提供 tls 包)。
请注意,适当的设置\multicolsep
仍然是必要的(并且将永远是)。