Unechter vertikaler Abstand, eingeführt durch Multicols (Zusatzfall)

Unechter vertikaler Abstand, eingeführt durch Multicols (Zusatzfall)

Dies scheint ein Duplikat von zu seinUnechter [?] vertikaler Abstand durch Mehrfachspalten, aber die Lösung von dort scheint für mich nicht zu funktionieren. Grundsätzlich möchte ich den Fall der Verwendung multicolsvonnichtÄndern Sie den vertikalen Abstand zwischen dem Einführungstext und der Liste. Die Ausgabe rechts verwendet multicols:

Bildbeschreibung hier eingeben

Außerdem gibt es zusätzlichen Platz, der der multicolsUmgebung entspricht.

Anmerkungen:

  • Die minipageUmgebung wurde verwendet, um das Problem zu veranschaulichen. Ich glaube nicht,nichtglaube, dass dies das Problem des zusätzlichen vertikalen Platzes beeinflusst.
  • Das tikzPaket wird verwendetnurum das Abstandsproblem hervorzuheben.

Code:

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

Ergebnisse (25.08.2014)

Hier ist die Ausgabe, die ich von Frank Mittelbachs MWE erhalte (beachten Sie, dass die Abstände im folgenden Text nicht korrekt sind):

Bildbeschreibung hier eingeben

Ausgabe von \listfiles:

Ich habe gerade aktualisiertallePakete von TeXLive2014 vor dem Ausführen des Tests. Ist also eines meiner Pakete veraltet oder gibt es ein Problem mit der TeXLive2014-Version:

 *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

Antwort1

Wenn eine Liste wie diese itemizeam Anfang einer Miniseite platziert wird, wird der übliche vertikale Abstand vor der Liste weggelassen.

multicolsWenn Sie es so hinzufügen , wie Sie es getan haben, wird ein Feld um die itemizeListe herum erstellt, genau wie bei einer Miniseite, und daher \topsepwird das nicht hinzugefügt. Stattdessen sehen Sie das, \multicolsepdas vor und nach der multicolUmgebung hinzugefügt wird.

In der Artikelklasse (10pt) \topsephat der Wert 8pt plus 2pt minus 4pt, während \multicolseper etwa 12pt beträgt, was (die meisten) der festgestellten Unterschiede erklärt. Somit

\setlength\multicolsep{\topsep}

sollte Ihr Problem theoretisch beheben.

Ihr Beispiel zeigte jedoch auch einen Fehler bei der Verarbeitung mehrerer Spalten, \prevdepthder für eine Fehlausrichtung von 1,9994 pt nach der Umgebung verantwortlich ist (passiert nur im „Box“-Modus, d. h. wenn die Umgebung innerhalb einer Miniseite o. Ä. erscheint).

Daher müssen Sie jetzt zusätzlich einen der Multicol-Interna patchen:

\usepackage{etoolbox}

\makeatletter

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

\makeatother

Mit diesen beiden Anpassungen sollten Sie Folgendes sehen:

Bildbeschreibung hier eingeben

Wie gewünscht finden Sie hier das vollständige MWE. Wenn das bei Ihnen nicht funktioniert, verwenden Sie möglicherweise eine ältere Version multicol. Dies wurde möglicherweise mit der Version 1.8f vom 19.06.2014 ausgeführt.

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

Aktualisieren

Ein Fix für dieses Problem wurde zu multicol1.8g hinzugefügt. Die neue Version ist jetzt auf CTAN und sollte in ein paar Tagen auf Distributionen mit Update-Funktionen verfügbar sein (sobald Heiko dazu kommt, das TLS-Paket bereitzustellen).

Beachten Sie, dass eine geeignete Einstellung \multicolsepweiterhin erforderlich ist (und immer sein wird).

verwandte Informationen