Выравнивание текста по верху мини-страницы и управление вертикальным пространством между линейкой и текстом над ней

Выравнивание текста по верху мини-страницы и управление вертикальным пространством между линейкой и текстом над ней

У меня есть следующий 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}

используя необязательный аргумент raise \rule

Кстати: я добавил \parперед концом группы изменения размера шрифта, потому что настройка абзаца выполняется с помощью настроек размера шрифта, которые действительны в конце абзаца.

Альтернативой было бы опустить s, minipageчтобы выровнять их по верхним краям, а не по верхней базовой линии. Это можно сделать с помощью \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

Мини-страницыявляютсяtop-aligned относительно первой строки каждого. Что делает это неправильным, так это то, что нижний конец строки находится на базовой линии. Поэтому вам нужно опустить строку ниже базовой линии.

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

Что касается второго вопроса, я не уверен, что понимаю суть проблемы. Но вы можете, например, контролировать расстояние между текстом и горизонтальной линейкой с помощью

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

Замените -2exлюбое необходимое расстояние.

Связанный контент