Uma abordagem dinâmica (tamanho de fonte relativo)

Uma abordagem dinâmica (tamanho de fonte relativo)

Como corrigir o espaçamento vertical entre o texto e as linhas? No MWE seguinte o espaço vertical entre o texto e a linha abaixo dele é muito maior que o espaço vertical entre o texto e a linha acima dele. Quero que esses dois espaços verticais sejam iguais e quero poder dar um valor a esse espaço vertical.

\documentclass[12pt]{report}

\begin{document}

\rule{6cm}{0.4pt}\par
\textbf{\large TITLE}\par
\rule{8cm}{0.4pt}

\end{document}

Responder1

A regra é desenhada na linha de base do texto. Portanto, a linha inferior está na linha de base da próxima linha de texto.

insira a descrição da imagem aqui

Então você tem que levantar a linha inferior em uma quantidade adequada. Isso pode ser feito \vspaceadicionando a profundidade ao arquivo \rule.

\documentclass[12pt]{report}

\begin{document}

\rule{6cm}{0.4pt}Some\par
\textbf{\large TITLE}\par%\vspace{-0.66\baselineskip}
\rule[0.66\baselineskip]{8cm}{0.4pt}Some

\end{document}

insira a descrição da imagem aqui

Responder2

Eu me familiarizei com esse conceito e tenho uma solução que ilustra isso muito bem:

Uma abordagem dinâmica (tamanho de fonte relativo)

Percebendo que após cada nova linha o desenho de uma linha começa na base de onde estaria uma letra (a linha de base de um glifo), você eleva a linha abaixo do texto. Quanto? user11232 usa 60% do salto da linha de base. Outra maneira seria usar diretamente a altura de alguma letra maiúscula, por exemplo, \fontcharht\font"004Dresultará na altura de um M em pontos. O \baselineskipé definido pela classe thru \@setfontsize, vejaO \baselineskip é definido automaticamente?.

Se você não estiver satisfeito com os resultados ópticos devido à profundidade da largura das letras, por exemplo, você pode até aumentar 70% da altura de uma letra maiúscula (basta adicionar .7na frente de \fontcharht).

insira a descrição da imagem aqui

Abordagem Inicial

Desenhe uma linha acima e abaixo do texto e veja o que acontece. O resultado não é opticamente agradável.

insira a descrição da imagem aqui

Código Completo

\documentclass{article}
\usepackage{fontspec}% xelatex

% Note that you can remove all the \noindent occurrences
% with \setlength\parindent{0pt} which sets empty indent box
% to 0pt globally

\newcommand\linedatWRONG[1]{% comment out this line-ending
  \leavevmode\par\noindent\rule{4cm}{0.4pt}gello\par\noindent%
  #1\rule{1cm}{0.4pt}\par\noindent%
  \rule{4cm}{0.4pt}gello\par%
}

\newcommand\linedatRIGHT[1]{% comment out this line-ending
  \leavevmode\par\noindent\rule{4cm}{0.4pt}gello\par\noindent%
  #1\rule{1cm}{0.4pt}\par\noindent%
  \rule[\fontcharht\font`M]{4cm}{0.4pt}gello\par% raise line up by the height of M in the current font
}

\newdimen\Mheight % for demo only
\Mheight=\fontcharht\font`M% for demo only

\begin{document}
\noindent The \texttt{\textbackslash linedatWRONG} version does indeed have the correct
alignment according to TeX's rules of baseline skips. I used the word
{\char"201C}gello{\char"201D} to demonstrate that the lines are at the baselines.
\linedatWRONG{Hello gello}% purposely used glyph with depth "g"
\vspace{2\baselineskip}
\noindent In the \texttt{\textbackslash linedatRIGHT}, we raise the bottom line up by the height of an upper case {\char"201C}M{\char"201D}
in the current font, which happens to be \the\Mheight. Programming this dynamically ensures
that the value of M will be ajusted to the current scope's font.
\linedatRIGHT{Hello gello}% purposely used glyph with depth "g"
\end{document}

Notas

  • EmbargoIsso funciona quando o salto da linha de base é ligeiramente maior que a profundidade+altura de um caractere. Se você tiver um salto de linha de base especialmente grande, aumentar a linha inferior pela profundidade + altura de um caractere pode parecer insignificante em comparação com o salto de linha de base.
  • A classe de artigo especifica que o tamanho da fonte 10pt ( \@xpt) tem um salto de linha de base associado de 12pt ( \@xiipt).
  • outra opção é usar a profundidade da linha

informação relacionada