我有两个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}