Espaço vertical espúrio introduzido por multicols (caso adicional)

Espaço vertical espúrio introduzido por multicols (caso adicional)

Esta parece ser uma duplicata deEspaço vertical espúrio [?] introduzido por multicols, mas a solução daí não parece funcionar para mim. Basicamente eu quero o caso de usar multicolsparanãoaltere o espaçamento vertical entre o texto de introdução e a lista. A saída à direita está usando multicols:

insira a descrição da imagem aqui

Há também espaço adicional seguindo o multicolsambiente.

Notas:

  • O minipageambiente foi utilizado para ilustrar o problema. Eu nãonãoacredito que isso está afetando a questão do espaço vertical adicional.
  • O tikzpacote é usadoapenaspara destacar a questão do espaçamento.

Código:

\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} 

Resultados (25/08/2014)

Aqui está o resultado que recebo do MWE de Frank Mittelbach (observe que o espaçamento do texto a seguir não está correto):

insira a descrição da imagem aqui

Saída de \listfiles:

Acabei de atualizartodospacotes do TeXLive2014 antes de executar o teste. Então, um dos meus pacotes está desatualizado ou há algum problema com o lançamento do 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

Responder1

Se uma lista como essa itemizefor colocada no início de uma minipágina, seu espaçamento vertical usual antes da lista será omitido.

Adicionar multicolsda maneira que você fez está produzindo uma caixa ao redor da itemizelista como uma minipágina e, portanto, \topsepnão é adicionado. Em vez disso, o que você vê é o \multicolsepque é adicionado antes e depois do multicolambiente.

Na classe do artigo (10pt) \topseptem o valor 8pt mais 2pt menos 4pt enquanto \multicolsepé algo como 12pt o que explica (a maior parte) das diferenças experimentadas. Por isso

\setlength\multicolsep{\topsep}

deveria, em teoria, resolver seu problema.

No entanto, seu exemplo também mostrou uma falha no tratamento de multicols, \prevdepthque é responsável pelo desalinhamento de 1.9994pt após o ambiente (acontece apenas no modo "caixa", ou seja, se o ambiente aparecer dentro de uma minipágina ou similar).

Além disso, você precisa corrigir um dos componentes internos do multicol por enquanto:

\usepackage{etoolbox}

\makeatletter

\patchcmd\page@sofar{\kern-\dimen\tw@ \ifdim\dimen\tw@}
  {\kern-\dimen\tw@  \prevdepth\z@ \ifdim\dimen\tw@}
  {\typeout{Success!}}{\ERRORpatching}

\makeatother

Com esses dois ajustes você deverá ver o seguinte:

insira a descrição da imagem aqui

Conforme solicitado aqui está o MWE completo, se isso não funcionar no seu final, você pode ter uma versão mais antiga multicol, talvez, esta foi executada com a versão 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} 

Atualizar

Uma correção para esse problema foi adicionada ao multicol1.8g. A nova versão está agora no CTAN e deve aparecer em distribuições com recursos de atualização em alguns dias (assim que Heiko fornecer o pacote tls).

Observe que uma configuração adequada \multicolsepainda é necessária (e sempre será).

informação relacionada