在下面的例子中,您会注意到,在第一个框中,文本实际开始之前有一个轻微的虚假垂直空间,可能是由引入的multicols
。您知道如何摆脱它吗?
\documentclass[10pt]{article}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{calc}
\setlength{\fboxsep}{3mm}\setlength{\fboxrule}{1pt}%
\begin{document}
\noindent\fcolorbox{red}{red!20}{%
\begin{minipage}[t]{\textwidth-2\fboxrule-2\fboxsep}%
\begin{multicols}{3}%
text text text text text text text text text text text text text
text text text text text text text text text text text text text text
text text text text text text text text text text text
\end{multicols}%
\end{minipage}}%
\noindent\fcolorbox{red}{red!20}{%
\begin{minipage}[t]{\textwidth-2\fboxrule-2\fboxsep}%
text text text text text text text text text text text text text
text text text text text text
\end{minipage}}%
\end{document}
答案1
为了使第一行的高度与正常设置相同,multicol
请设置\splittopskip
为\topskip
。这意味着 TeX 将在\topskip-<height of first line>
每列上方添加等于 的粘连,以确保它们的高度相同,除非它大于\topskip
(在这种情况下将插入零粘连)。
在您的设置中,每列上方添加的粘贴量为 3.84921pt(10pt 减去一个“t”的高度,因为 的标准值\topskip
是 10pt,带有10pt
class 选项)。
您可以通过设置\topskip
为更合理的值(例如大写字母的高度)来将这个增加的空间归零。
\documentclass[10pt]{article}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{calc}
\setlength{\fboxsep}{3mm}
\setlength{\fboxrule}{1pt}
\begin{document}
\noindent\fcolorbox{red}{red!20}{%
\begin{minipage}[t]{\textwidth-2\fboxrule-2\fboxsep}
\setlength{\topskip}{\fontcharht\font`B }
\begin{multicols}{3}
text text text text text text text text text text text text text
text text text text text text text text text text text text text
text text text text text text text text text text text text
\end{multicols}
\end{minipage}}
\noindent\fcolorbox{red}{red!20}{%
\begin{minipage}[t]{\textwidth-2\fboxrule-2\fboxsep}
text text text text text text text text text text text text text
text text text text text text
\end{minipage}}
\end{document}
答案2
问题并不来自于 multicol 本身:
minipage 环境占用了 multicol 周围的所有空间,并且 fcolorbox 添加了一些虚假空间:
\documentclass[10pt]{article}
\usepackage{xcolor}
\usepackage{multicol}
\usepackage{lipsum}
\usepackage{calc}
\setlength{\fboxsep}{3mm}\setlength{\fboxrule}{1pt}%
\setlength{\multicolsep}{20pt}
\begin{document}
\hrule
\begin{multicols}{2}%
text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
\end{multicols}
\hrule
\begin{minipage}[t]{\textwidth-2\fboxrule-2\fboxsep}%
\setlength{\multicolsep}{0pt}
\begin{multicols}{2}%
text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
\end{multicols}
\end{minipage}
\noindent\fcolorbox{red}{red!20}{%
\begin{minipage}[t]{\textwidth-2\fboxrule-2\fboxsep}%
\setlength{\multicolsep}{0pt}
\begin{multicols}{2}%
text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text text
\end{multicols}
\end{minipage}}
\noindent\fcolorbox{red}{red!20}{%
\begin{minipage}[t]{\textwidth-2\fboxrule-2\fboxsep}%
text text text text text text text text text text text text text text text text text text text
\end{minipage}}%
\end{document}