Alinhe o texto na parte superior de uma minipágina e controle o espaço vertical entre uma regra e o texto acima dela

Alinhe o texto na parte superior de uma minipágina e controle o espaço vertical entre uma regra e o texto acima dela

Tenho o seguinte MWE no qual tenho dois problemas.

O primeiro problema é que não consigo alinhar o texto das minipáginas umas sobre as outras. Eu usei o [t]identificador, mas não funciona. Eu li outras perguntas semelhantes aqui e todas sugerem que deveria ter funcionado.

A segunda questão é que quero encontrar uma maneira de controlar completamente o espaço vertical entre a régua e o título acima dela. Quero colocá-lo um pouco abaixo do texto, mas \hrulecoloco-o muito perto.

insira a descrição da imagem aqui

MWE

\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}

Responder1

minipageA opção de tnão significaborda superior dominipagemaslinha de base superior dominipage. A linha de base de a \ruleestá abaixo da regra por padrão. Mas você pode mover a regra usando o opcionalelevaçãoargumento.

O motivo da distância entre a régua horizontal e o texto acima é o mesmo e novamente você pode usar o opcionalelevaçãoargumento.

No exemplo a seguir eu uso \ht\strutboxcomo (parte de) oelevaçãoargumento. \ht\strutboxé algo como a altura de uma linha de texto padrão.

\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}

usando o argumento opcional raise de \rule

BTW: adicionei \parantes do final dos grupos de alteração do tamanho da fonte, porque a configuração do parágrafo é feita com as configurações de tamanho da fonte válidas no final do parágrafo.

Uma alternativa seria diminuir os minipages para alinhá-los nas bordas superiores, em vez de na linha de base superior. Isso pode ser feito usando \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}

Neste caso \heighté a altura do conteúdo da caixa. O resultado é:

usando \raisebox

Uma segunda alternativa seria dar a todos minipagea mesma linha de base superior:

\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}

usando \vskip

Responder2

As minipáginassãoalinhados no topo em relação à primeira linha de cada um. O que faz com que pareça errado é que a extremidade inferior da linha fica na linha de base. Então você tem que abaixar a linha abaixo da linha de base.

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

Em relação à segunda pergunta, não tenho certeza se entendi o problema. Mas você pode, por exemplo, controlar a distância entre o texto e a regra horizontal usando

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

Substitua -2exa distância necessária.

informação relacionada