我尝试将 2 个盒子叠放在一起。我想定义下部盒子的高度以及盒子之间的潜在间隙,而上部盒子应使用剩余空间。
正如您在 reprex 中看到的,两者之间仍然有一条细小的线(我无法判断蓝色框是否确实跨越了整个空间)。反复试验告诉我,这条线大约很1pt
宽。
我的方法是:
- 按如下方式确定顶箱的高度:
- 使用全文高度
- 减去下方盒子的高度和预期的间隙(这里
0pt
是为了突出问题) - 最终减去 4 次
fboxsep
以解释两个框中的框和文本之间的额外距离。
- 创建一个间隙通孔
vspace
(再次强调,此处的间隙为0pt
) - 放置具有给定高度的下部盒子。
我很想知道LaTeX
要增加多少长度才能vspace
相应地调整我的命令。预期结果是下部框位于边缘,并计算上部框的高度,即所有可用空间减去间隙和下部框高度。
代表
\documentclass{article}
\usepackage{xcolor}
\usepackage[a4paper,margin=0pt]{geometry}
\newlength{\mytopboxheight}
\newlength{\mybottomboxheight}
\newlength{\myskip}
\newlength{\myboxwidth}
\setlength{\mybottomboxheight}{40pt}
\setlength{\myskip}{0pt}
\setlength{\mytopboxheight}{\dimexpr\textheight-\mybottomboxheight-4\fboxsep-\myskip\relax}
\setlength{\myboxwidth}{\dimexpr\textwidth-2\fboxsep\relax}
\begin{document}
\noindent%
\colorbox{orange}{%
\makebox(\myboxwidth,\mytopboxheight){%
\the\fboxsep%
}%
}%
\vspace{\myskip}%
\par\noindent%
\colorbox{blue}{%
\makebox(\myboxwidth,\mybottomboxheight){%
A%
}%
}%
\end{document}
答案1
这正在\lineskip
发挥作用。
\documentclass{article}
\usepackage{xcolor}
\usepackage[a4paper,margin=0pt]{geometry}
\newlength{\mytopboxheight}
\newlength{\mybottomboxheight}
\newlength{\myskip}
\newlength{\myboxwidth}
\setlength{\mybottomboxheight}{40pt}
\setlength{\myskip}{0pt}
\setlength{\mytopboxheight}{\dimexpr\textheight-\mybottomboxheight-4\fboxsep-\myskip\relax}
\setlength{\myboxwidth}{\dimexpr\textwidth-2\fboxsep\relax}
\begin{document}
\noindent
\colorbox{orange}{%
\makebox(\myboxwidth,\mytopboxheight){%
\the\fboxsep%
}%
}
\nointerlineskip
\noindent
\colorbox{blue}{%
\makebox(\myboxwidth,\mybottomboxheight){%
A%
}%
}
\end{document}
答案2
添加\offinterlineskip
到文档前言中以摆脱它。