平衡多列与小页面之间的问题

平衡多列与小页面之间的问题

我有两个 minipage,一个在另一个之上,[b]并且[t]选项设置为右基线跳过。第二个 minipage/varwidth 处于多行环境中,如果它有两行以上,则会超出文本高度。该怎么办?

\documentclass{article}

\usepackage[paperwidth=10cm,paperheight=5cm,showframe]{geometry}

\usepackage{varwidth}

\usepackage{multicol}

\premulticols0pt
\postmulticols0pt
\columnsep0pt
\setlength{\multicolsep}{0pt}

\begin{document}

\noindent LABORE ET DOLORE

\vfill

\noindent\begin{minipage}[b]{\linewidth}
\raggedleft
LOREM IPSUM

LOREM IPSUM
\end{minipage}

\begin{multicols}{2}

\null
\vfill

\noindent DOLOR SIT

\columnbreak

\noindent\hfill\begin{varwidth}[t]{.5\textwidth}
\raggedleft
MAGNA ALIQUA

MAGNA ALIQUA

MAGNA ALIQUA

MAGNA ALIQUA
\end{varwidth}
\end{multicols}
\end{document}

其中一个多列超出了文本高度

更新

我稍微修改了@alephzero 代码,以便将表格文本的基线对齐到底部(降部超出文本高度)。我知道这不是一个完美的解决方案。但它确实有效。

\documentclass{article}

\renewcommand{\arraystretch}{0}

\usepackage[paperwidth=10cm,paperheight=5cm,showframe]{geometry}

\newlength{\myheight}

\begin{document}

\setlength{\myheight}{\fontchardp\font`p}

\noindent LABORE ET DOLORE

\vfill

\noindent\begin{minipage}[b]{\linewidth}
\raggedleft
LOREM IPSUM

LOREM IPSUM
\end{minipage}\strut

\noindent\begin{tabular}{@{}l@{}l@{}}
\parbox[t]{0.5\linewidth}
{DOLOR SIT}
&
\parbox[b]{0.5\linewidth}
{\raggedleft
MAGNA ALIQUA

MAGNA ALIQUA

MAGNA ALIQUA

MAGNA ALIQUA\vphantom{p}}
\end{tabular}

\enlargethispage{\myheight}

\end{document}

布局解决方案

答案1

这似乎可以做你想做的事,无需\multicol\varwidth

\documentclass{article}

\usepackage[paperwidth=10cm,paperheight=5cm,showframe]{geometry}

\begin{document}

\noindent LABORE ET DOLORE

\vfill

\noindent\begin{minipage}[b]{\linewidth}
\raggedleft
LOREM IPSUM

LOREM IPSUM
\end{minipage}\strut

\noindent\begin{tabular}{@{}l@{}l@{}}
\parbox[t]{0.5\linewidth}
{DOLOR SIT}
&
\parbox[b]{0.5\linewidth}
{\raggedleft
MAGNA ALIQUA

MAGNA ALIQUA

MAGNA ALIQUA

MAGNA ALIQUA}
\end{tabular}

\end{document}

小页面之后\strut是为了在 LOREM IPSUM 和 MAGNA ALIQUA 之间提供正确的基线跳跃,但在您的示例链接中,那里似乎有更大的垂直空间。

您可以使用 minipages 代替 parboxes,但parbox输入起来更简洁。

相关内容