我有两个 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
输入起来更简洁。