У меня есть следующий 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}
Кстати: я добавил \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
— высота содержимого коробки. Результат:
Второй альтернативой было бы присвоить всем буквам minipage
s одинаковую верхнюю базовую линию:
\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}
решение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
любое необходимое расстояние.