我怎样才能按绝对顶部而不是最上面的基线对齐小页面?

我怎样才能按绝对顶部而不是最上面的基线对齐小页面?

我有两个minipage并排的页面,其中一个的字体大小比另一个大——这是为了制作标题。但是,小页面的基线是对齐的,而不是顶部。我希望两个小页面中的文本都对齐顶部,而不是基线。

这是一个最小的工作示例及其输出:

\documentclass{article}

% Show the frame to see the line I would like to align at.
\usepackage[showframe]{geometry} 

\begin{document}
\noindent
\begin{minipage}[t]{80pt}\huge Baseline\end{minipage}
\begin{minipage}[t]{100pt}Baseline baseline with lots and lots of text, consider this a paragraph\end{minipage}
\end{document}

生产输出

为了清楚起见,我希望右边的段落能够像\huge左边的文本一样触及顶行。

我尝试通过在\rule{0pt}{1em}\vspace{-1em}段落开始前添加一个来对齐顶部,但这种方法不起作用,大概是因为不同大小的行间距发生了变化,对齐效果变得更糟。我不会展示结果,但无论如何,这里是代码:

\documentclass{article}
\usepackage[showframe]{geometry} 
% This does NOT produce the desired result.
\begin{document}
\noindent
\begin{minipage}[t]{80pt}%
    \rule{0pt}{1em}\vspace{-1em}

    \huge Baseline
\end{minipage}
\begin{minipage}[t]{100pt}%
    \rule{0pt}{1em}\vspace{-1em}

    Baseline baseline with lots and lots of text, consider this a paragraph
\end{minipage}
\end{document}

那么:我怎样才能对齐这些小页面的顶部,而不是对齐它们的顶部基线?

答案1

正如 @Phelype Oleninik 所指出的,添加 会使\vspace{0pt}两个段落对齐,并增加一条较高的行\topskip。因此,添加行\vspace{0pt}\vspace{-\topskip},甚至只是\vspace{-\topskip},会使两个段落在它们的顶部对齐minipages。以下是工作代码:

\documentclass{article}
\usepackage[showframe]{geometry} 
\begin{document}
\noindent
\begin{minipage}[t]{80pt}%
    \vspace{-\topskip}
    \huge Baseline
\end{minipage}
\begin{minipage}[t]{100pt}%
    \vspace{-\topskip}
    Baseline baseline with lots and lots of text, consider this a paragraph
\end{minipage}
\end{document}

结果: 在此处输入图片描述

答案2

\belowbaseline[<depth>]{<content>}的宏。stackengine注意,有一个对应的\abovebaseline[<height>]{<content>}宏。

\documentclass{article}
\usepackage{stackengine}
% Show the frame to see the line I would like to align at.
\usepackage[showframe]{geometry} 

\begin{document}
\noindent
\belowbaseline[-\ht\strutbox]{\begin{minipage}[t]{80pt}\huge Baseline\end{minipage}}
\belowbaseline[-\ht\strutbox]{\begin{minipage}[t]{100pt}Baseline baseline with lots and 
  lots of text, consider this a paragraph\end{minipage}}
\end{document}

在此处输入图片描述

答案3

这似乎也有效:

在此处输入图片描述

\documentclass{article}

% Show the frame to see the line I would like to align at.
\usepackage[showframe]{geometry} 

\begin{document}
\noindent
\raisebox{\baselineskip}{\raisebox{-\height}{\begin{minipage}[t]{80pt}\huge Baseline\end{minipage}}
                         \raisebox{-\height}{\begin{minipage}[t]{100pt}Baseline baseline with lots and lots of text, consider this a paragraph\end{minipage}}}
\end{document}

答案4

可以使用\raisebox来移动框的基线(使用 TeX,一切都是框)。需要注意的是,页面的第一条基线位于\topskip实际顶部下方。否则,应该使用\ht\strutbox

\documentclass{article}

% Show the frame to see the line I would like to align at.
\usepackage[showframe]{geometry} 

\begin{document}
\noindent
\raisebox{\dimexpr \topskip-\height}{\begin{minipage}[t]{80pt}\huge Baseline\end{minipage}}
\raisebox{\dimexpr \topskip-\height}{\begin{minipage}[t]{100pt}Baseline baseline with lots and lots of text, consider this a paragraph\end{minipage}}
\end{document}

演示

相关内容