.png)
¿Cómo arreglar el espacio vertical entre el texto y las líneas? En el siguiente MWE, el espacio vertical entre el texto y la línea debajo es mucho mayor que el espacio vertical entre el texto y la línea sobre él. Quiero que esos dos espacios verticales sean iguales y quiero poder darle un valor a este espacio vertical.
\documentclass[12pt]{report}
\begin{document}
\rule{6cm}{0.4pt}\par
\textbf{\large TITLE}\par
\rule{8cm}{0.4pt}
\end{document}
Respuesta1
La regla se dibuja en la línea base del texto. Por lo tanto, la línea inferior está en la línea base de la siguiente línea de texto.
Entonces tienes que levantar la línea inferior en una cantidad adecuada. Esto se puede hacer \vspace
agregando profundidad al archivo \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}
Respuesta2
He entendido este concepto y tengo una solución que lo ilustra bastante bien:
Un enfoque dinámico (tamaño de fuente relativo)
Al darte cuenta de que después de cada nueva línea, el dibujo de una línea comienza en la base de donde estaría una letra (la línea base de un glifo), levantas la línea debajo del texto. ¿Cuánto cuesta? user11232 utiliza el 60 % del salto de referencia. Otra forma sería utilizar la altura de alguna letra mayúscula directamente, por ejemplo, \fontcharht\font"004D
dará como resultado la altura de una M en puntos. Lo \baselineskip
establece la clase a través de \@setfontsize
, consulte¿Se define \baselineskip automáticamente?.
Si no está satisfecho con los resultados ópticos debido a la profundidad del ancho de las letras, por ejemplo, podría incluso hacerlo el 70% de la altura de una letra mayúscula (simplemente agréguela .7
delante de \fontcharht
).
Acercamiento inicial
Dibuja una línea encima y debajo del texto y observa qué sucede. El resultado no es visualmente agradable.
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
- AdvertenciaEsto funciona cuando el salto de línea base es marginalmente mayor que la profundidad+altura de un carácter. Si tiene un salto de línea de base especialmente grande, entonces elevar la línea de fondo en la profundidad + altura de un carácter puede parecer insignificante en comparación con el salto de línea de base.
- La clase de artículo especifica que el tamaño de fuente de 10 puntos (
\@xpt
) tiene un\@xiipt
salto de línea base asociado de 12 puntos ( ). - Otra opción es usar la profundidad de la línea.