将文本对齐到小页面的顶部并控制规则与其上方文本之间的垂直空间

将文本对齐到小页面的顶部并控制规则与其上方文本之间的垂直空间

我有以下 MWE,其中有两个问题。

第一个问题是我无法将小页面的文本对齐到彼此的顶部。我使用了标识符,[t]但它不起作用。我读过这里的其他类似问题,它们都表明它应该有效。

第二个问题是,我想找到一种方法来完全控制标尺和其上方标题之间的垂直空间。我想将其放置在文本下方一点,但\hrule放置得太近了。

在此处输入图片描述

平均能量损失

\documentclass{article}

\usepackage{fontspec}

\usepackage[english]{babel}

\begin{document}

\begin{center}

{\LARGE \textbf{Text Here}}

\end{center}

\vspace{1cm}

{\large Text here}

\rule{\textwidth}{1pt}

\vspace{0.5cm}

\begin{minipage}[t]{0.1\textwidth}
\begin{flushright}
Hello
\end{flushright}
\end{minipage}%
%
\hspace{1pt}
%
\begin{minipage}[t]{0.05\textwidth}
\rule{1pt}{2cm}
\end{minipage}%
%
\begin{minipage}[t]{0.80\textwidth}
Hello
\end{minipage}

\end{document}

答案1

minipage的选择t并不意味着顶部边缘minipage顶部基线minipage。默认情况下,a 的基线\rule位于规则下方。但您可以使用可选的增加争论。

水平线和上方文本之间的距离的原因是一样的,你可以再次使用可选的增加争论。

在下面的例子中,我\ht\strutbox使用增加参数。\ht\strutbox类似于标准文本行的高度。

\documentclass{article}

\usepackage{fontspec}

\usepackage[english]{babel}

\begin{document}

\begin{center}

{\LARGE \textbf{Text Here}\par}

\end{center}

\vspace{1cm}

{\large Text here\par}

\rule[\ht\strutbox]{\textwidth}{1pt}

\vspace{0.5cm}

\begin{minipage}[t]{0.1\textwidth}
\begin{flushright}
Hello
\end{flushright}
\end{minipage}%
%
\hspace{1pt}
%
\begin{minipage}[t]{0.05\textwidth}
\rule[\dimexpr \ht\strutbox-2cm]{1pt}{2cm}
\end{minipage}%
%
\begin{minipage}[t]{0.80\textwidth}
Hello
\end{minipage}

\end{document}

使用 \rule 的可选 raise 参数

顺便说一句:我在字体大小更改组结束之前添加了\par,因为段落设置是通过在段落末尾有效的字体大小设置完成的。

另一种方法是降低minipages 以使其与顶部边缘对齐,而不是与顶部基线对齐。这可以使用以下方法完成\raisebox

\documentclass{article}

\usepackage{fontspec}

\usepackage[english]{babel}

\begin{document}

\begin{center}

{\LARGE \textbf{Text Here}\par}

\end{center}

\vspace{1cm}

{\large Text here\par}

\rule[\ht\strutbox]{\textwidth}{1pt}

\vspace{0.5cm}

\raisebox{\dimexpr\ht\strutbox-\height}{\begin{minipage}[t]{0.1\textwidth}
\raggedright
Hello
\end{minipage}}%
%
\hspace{1pt}
%
\raisebox{\dimexpr\ht\strutbox-\height}{\begin{minipage}[t]{0.05\textwidth}
\raggedright
\rule{1pt}{2cm}
\end{minipage}}%
%
\raisebox{\dimexpr\ht\strutbox-\height}{\begin{minipage}[t]{0.80\textwidth}
Hello
\end{minipage}}

\end{document}

在这种情况下\height是框内容的高度。结果是:

使用 \raisebox

第二种选择是赋予所有minipages 相同的顶部基线:

\documentclass{article}

\usepackage{fontspec}

\usepackage[english]{babel}

\begin{document}

\begin{center}

{\LARGE \textbf{Text Here}\par}

\end{center}

\vspace{1cm}

{\large Text here\par}

\rule[\ht\strutbox]{\textwidth}{1pt}

\vspace{0.5cm}

\begin{minipage}[t]{0.1\textwidth}
\vskip -\baselineskip
\raggedright
Hello
\end{minipage}%
%
\hspace{1pt}
%
\begin{minipage}[t]{0.05\textwidth}
\vskip -\baselineskip
\raggedright
\rule{1pt}{2cm}
\end{minipage}%
%
\begin{minipage}[t]{0.80\textwidth}
\vskip -\baselineskip
Hello
\end{minipage}%

\end{document}

使用 \vskip

答案2

迷你页面相对于每行的第一行顶部对齐。看起来不对劲的是,行的下端位于基线上。因此,您必须将行降低到基线以下。

\begin{minipage}[t]{0.05\textwidth}
\raisebox{\dimexpr-\height+1.5ex}{\rule{1pt}{2cm}}
\end{minipage}%

关于第二个问题,我不确定我是否理解了这个问题。但你可以使用以下方法控制文本和水平线之间的距离

{\large Text here}\\[-2ex]
\rule{\textwidth}{1pt}

替换-2ex您需要的任何距离。

相关内容