Longitudes y espaciado

Para decirle a LaTeX “deja 2cm aquí” o “añade el espacio de una línea”, escribes una longitud. Esta página empieza con las unidades de longitud y sus conversiones exactas; luego cubre las longitudes elásticas, los comandos que emiten espacio (\hspace, \vspace y otros) y, por último, cómo definir y reutilizar longitudes como variables.

Unidades de longitud

Una longitud se escribe como número más unidad (12pt, 2.5cm, -3mm; se permiten decimales y valores negativos). Las unidades se dividen en dos familias: unidades absolutas, fijas independientemente de la fuente (pt, mm, in, …), y unidades relativas a la fuente, que escalan con el tamaño actual (em, ex). Estas últimas son útiles cuando quieres que el espacio crezca naturalmente al crecer la fuente.

La unidad central es pt (punto TeX). TeX define 1 inch = 72.27pt, y todas las conversiones parten de ahí. La unidad confusa es bp (big point), el punto de PostScript/PDF donde 1 inch = 72bp. pt y bp difieren alrededor de un 0,4 %, así que cuidado al intercambiar gráficos con herramientas basadas en bp.

UnidadQué es / conversiónNotas
ptPunto TeX. 1in = 72.27ptReferencia para todas las longitudes
bpBig point. 1in = 72bpPunto PostScript/PDF
mmMilímetro. 1mm ≈ 2.845ptMétrico
cmCentímetro. 1cm = 10mmMétrico
inPulgada. 1in = 72.27ptImperial
pcPica. 1pc = 12ptUnidad tipográfica tradicional
spScaled point. 1pt = 65536spUnidad mínima de TeX (interna)
em≈ tamaño actual / ancho de MRelativo a la fuente; horizontal
exAltura x de la fuente actualRelativo a la fuente; vertical
ddPunto Didot. 1dd ≈ 1.07ptTradición europea; cc = 12dd

sp (scaled point) es la unidad interna mínima de TeX para representar longitudes: 1pt = 65536sp. Casi nunca la escribes a mano, pero marca la precisión más fina con la que trabaja TeX. También existen las unidades europeas dd (punto Didot) y cc (cícero, cc = 12dd), aunque rara vez aparecen en documentos modernos.

La unidad relativa em equivale aproximadamente al tamaño de fuente actual (tradicionalmente el ancho de una M mayúscula) y sirve para sangrías y espacios horizontales; ex es la altura x de la minúscula x y se usa para ajustes verticales finos. En una fuente de 10pt, 1em ≈ 10pt. El modo matemático añade una unidad propia, mu (math unit), igual a 1/18 de un em; espacios como \quad se definen con ella.

Longitudes elásticas

Una longitud fija como 12pt es una longitud rígida. Una longitud que puede estirarse y encogerse según haga falta es una longitud elástica. plus da margen para crecer y minus para encogerse. Por ejemplo, 1cm plus 2mm minus 1mm significa “normalmente 1cm, puede estirarse hasta 1,2cm y encogerse hasta 0,9cm”. LaTeX usa esa holgura para ajustar líneas y páginas de forma natural.

latex
% 通常 1cm、最大 1.2cm まで伸び、最小 0.9cm まで縮む縦アキ
\vspace{1cm plus 2mm minus 1mm}

La longitud elástica especial con estiramiento infinito es \fill. Su longitud natural es 0, pero crece tanto como haga falta; perfecta para “empujar todo lo demás y llenar el espacio restante”. Varios \fill en la misma línea o columna dividen el espacio por igual. Para proporciones ponderadas usa \stretch{n} (= n veces \fill): \hspace{\stretch{2}}…\hspace{\stretch{1}} reparte el hueco 2:1.

Espacio horizontal

El comando básico para espacio horizontal dentro de una línea es \hspace{longitud}: \hspace{2cm} inserta un hueco de 2cm. Pero un \hspace que cae al inicio o final de línea se descarta cuando LaTeX corta el párrafo, para que no quede espacio sobrante en el margen. Para conservarlo incluso en el borde de línea, usa la forma con estrella \hspace*{longitud}.

\hfill es la abreviatura de \hspace{\fill}; empuja lo que tiene a ambos lados lo más lejos posible, la forma típica de poner una palabra a la izquierda y otra a la derecha. (También se descarta en el borde de línea, así que usa \hspace*{\fill} si debe conservarse.) En lugar de espacio blanco puedes llenar el hueco con una regla mediante \hrulefill o con puntos mediante \dotfill, común entre una entrada y su número de página.

latex
Name:\hspace{2cm}Date:\par
\noindent 第1章 はじめに\dotfill 1\par
\noindent\hfill

Para huecos pequeños y fijos, los comandos relativos a la fuente son cómodos. \quad es 1em (= 18mu) y \qquad el doble, 2em. Para un espacio muy fino usa \, (thin space, 3mu). Como siguen a la fuente, el equilibrio visual se mantiene al cambiar el tamaño.

Espacio vertical

Para espacio vertical, por ejemplo entre párrafos, usa \vspace{longitud}. Como con \hspace, el espacio que cae en un límite de página se descarta, para que no aparezca un hueco sobrante al inicio de una página. Para conservarlo incluso en un salto de página, usa \vspace*{longitud}. \vfill equivale a \vspace{\fill} y empuja verticalmente el resto de la columna, útil para centrar una página de una sola línea.

Para espacios verticales cotidianos hay tres comandos ya preparados: \smallskip, \medskip, \bigskip. Sus valores predeterminados en las clases estándar son 3pt plus 1pt minus 1pt, 6pt plus 2pt minus 2pt y 12pt plus 4pt minus 4pt, respectivamente. Todos son elásticos, así que flexionan un poco para ajustarse a la página. Usarlos en vez de valores fijos mantiene coherente todo el documento.

Definir y usar longitudes

Si reutilizas la misma longitud en todo un documento, crear un registro de longitud, como una variable, facilita el mantenimiento. \newlength{\mylen} declara una nueva longitud \mylen, \setlength{\mylen}{2em} le asigna valor y \addtolength{\mylen}{1pt} la ajusta. Cambia el valor en un sitio y todas las referencias se actualizan.

También puedes calcular con longitudes existentes como \textwidth (ancho del cuerpo), \linewidth (ancho de línea actual) y \baselineskip (interlineado). Basta anteponer un factor para escalarlas: 0.8\textwidth es el 80 % del ancho del texto. Para aritmética más rica, carga el paquete calc, que permite expresiones con + - * /.

document.tex
\usepackage{calc}
% ...
\newlength{\halfcol}
\setlength{\halfcol}{(\textwidth - 2em) / 2}
\noindent\hspace*{0.8\textwidth}右寄せの見出し

Construir longitudes relativas a anchos existentes mantiene las proporciones incluso si cambias el papel o los márgenes. Una expresión basada en \textwidth hace que el documento sea mucho más resistente a cambios de diseño que un valor fijo como 8cm.