jlreq es una clase de documento japonés de Noriyuki Abe. Su nombre viene de su objetivo: componer según la nota técnica del W3C “Requirements for Japanese Text Layout” (JLReq / 日本語組版処理の要件). Su rasgo definitorio es que permite diseñar con precisión numérica el *hanmen*, el bloque de texto donde se compone el cuerpo. Funciona igual en pLaTeX, upLaTeX o LuaLaTeX. Esta página explica para qué sirve jlreq, cómo sus opciones diseñan el bloque de texto y cuándo elegirlo en lugar de las clases basadas en js.
Qué es jlreq
jlreq es una clase que permite empezar composición japonesa seria con una sola línea, \documentclass{jlreq}. La norma de la que toma el nombre, JLReq, “Requirements for Japanese Text Layout”, es una nota técnica del W3C que describe qué se necesita para componer japonés correctamente en tecnologías como CSS y libros electrónicos. Basada principalmente en la norma industrial japonesa JIS X 4051 (reglas de formato para documentos japoneses), llega hasta directrices de diseño de hanmen, el bloque de texto: títulos, figuras y tablas, notas y marcas de referencia. La clase jlreq intenta realizar esos requisitos en LaTeX.
Su otro pilar es ser agnóstica respecto al motor. jlreq funciona tanto con el tradicional pLaTeX / upLaTeX (la ruta que crea DVI y lo convierte a PDF con dvipdfmx) como con el moderno LuaLaTeX (LuaTeX-ja), que produce PDF directamente. La clase detecta automáticamente qué motor la procesa, así que puedes cambiar de procesador sin tocar el manuscrito. Para forzar una elección, pasa platex, uplatex o lualatex como opción de clase (XeLaTeX no está soportado).
Por qué jlreq (frente a las clases js)
Las jsclasses de Haruhiko Okumura (jsarticle y afines) están diseñadas alrededor de un aspecto predeterminado bien afinado que se acepta tal cual, y en muchas situaciones componen muy bien desde el principio. jlreq toma la postura opuesta: se centra en permitirte diseñar el propio bloque de texto. “Texto del cuerpo a tantos puntos, tantos caracteres por línea, tantas líneas por página, tanto interlineado, estos márgenes superior/inferior/de lomo”: especificas tú mismo cada una de estas dimensiones de diseño de página, fundamentadas en la norma.
Por eso jlreq destaca cuando debes cumplir exactamente un tamaño de corte, longitud de línea y número de líneas prescritos: componer un libro o una publicación propia, una pieza vertical, o una entrega con dimensiones de bloque obligatorias. En cambio, si solo quieres terminar rápido un artículo con un estilo predeterminado limpio, jsclasses o su edición para LuaLaTeX, ltjsclasses, suelen bastar. jlreq viene de serie con TeX Live actual, así que no requiere instalación separada.
Opciones básicas y tamaño de letra
El tipo de documento se cambia con opciones entre corchetes. Por defecto se comporta como article; pasa report para un informe con capítulos (\chapter) o book para un documento tipo libro. A diferencia de jsclasses, el nombre de la clase no se divide por tipo: se cambia un único jlreq mediante opciones. Añade tate para escritura vertical. El papel se fija con paper=: paper=a4, paper=b5 (ISO B; para JIS B usa formas como b5j), o un tamaño explícito como paper={148mm,210mm}.
Piensa por separado los tamaños latino y japonés. fontsize= es el tamaño base latino (predeterminado 10pt) y jafontsize= es el tamaño japonés. También existe jafontscale=, que da directamente la razón entre ambos y por defecto vale 1 (japonés y latino del mismo tamaño). jlreq también acepta las unidades editoriales Q y H (*kyū* y *ha*), así que puedes escribir, por ejemplo, fontsize=13Q (1 Q = 1 H = 0,25 mm).
| Opción | Significado | Predeterminado |
|---|---|---|
article / report / book | Cambiar tipo de documento (capítulos, diseño) | tipo article |
tate | Escritura vertical | Horizontal |
platex / uplatex / lualatex | Forzar el motor (normalmente autodetectado) | Autodetectado |
paper= | Tamaño de papel: a4, b5, {ancho,alto}, etc. | — |
fontsize= | Tamaño base latino (Q/H permitidos) | 10pt |
jafontsize= / jafontscale= | Tamaño japonés / razón japonés-latino | razón 1 |
Diseñar el bloque de texto
El corazón de jlreq es el diseño del bloque de texto. La región rectangular donde se compone el cuerpo (el *hanmen*) se fija con una de dos aproximaciones. Una trabaja desde dentro hacia fuera: se dan el tamaño de letra, interlineado, longitud de línea y número de líneas por página, y los márgenes resultan de ello, usando line_length= (longitud de línea), number_of_lines= (líneas por página) y baselineskip= (interlineado). La otra trabaja desde fuera hacia dentro: se dan los márgenes superior (head_space=), inferior (foot_space=), de lomo (gutter=) y de corte (fore-edge=), y estos fijan el bloque.
Aquí ayudan las unidades dedicadas. zw es el ancho de un carácter de ancho completo (zen-width) y zh su altura (zen-height), así que puedes expresar la longitud de línea y el espaciado naturalmente como “tantos caracteres”. Por ejemplo, line_length=40zw son 40 caracteres por línea, y baselineskip=1.75zw es un interlineado de 1,75 caracteres de ancho completo. Por defecto, line_length es 0,75× la extensión del papel en la dirección de caracteres, number_of_lines es el número que cabe en 0,75× la extensión en la dirección de líneas, y baselineskip es 1,7× el tamaño japonés. Si omites head_space y foot_space, el bloque queda centrado verticalmente. En dos columnas, la separación se fija con column_gap=.
| Opción | Significado | Predeterminado |
|---|---|---|
line_length= | Longitud de una línea | 0,75× ancho del papel |
number_of_lines= | Líneas por página | cabe en 0,75× la altura |
baselineskip= | Interlineado (paso) | 1,7× tamaño japonés |
gutter= / fore-edge= | Margen de lomo / margen de corte | — |
head_space= / foot_space= | Margen superior / inferior | centrado vertical si se omite |
column_gap= | Separación entre columnas (dos columnas) | — |
Ejemplo de escritura vertical
Aquí tienes un documento A5 vertical cuyo bloque de texto se diseña desde dentro hacia fuera. tate lo hace vertical, paper=a5 fija el tamaño de corte, y el resto especifica el bloque en números: japonés a 13 Q, 40 caracteres por línea, 17 líneas por página e interlineado de 1,75 caracteres de ancho completo. Sin añadir nada al cuerpo, esta línea fija un diseño de tipo libro.
\documentclass[
tate, % 縦組み
paper=a5, % A5 判
fontsize=13Q, % 級で指定(1 級 = 0.25mm)
line_length=40zw, % 1 行 40 字
number_of_lines=17, % 1 ページ 17 行
baselineskip=1.75zw, % 行送り
]{jlreq}
\begin{document}
\title{雪国}
\author{川端康成}
\maketitle
国境の長いトンネルを抜けると雪国であった。
\end{document}Si lo procesas con LuaLaTeX obtienes un PDF directamente, usando las fuentes del sistema; si lo procesas con upLaTeX obtienes un PDF vía DVI. La línea \documentclass puede ser la misma en ambos casos. Para hacerlo horizontal, basta con quitar tate.
\jlreqsetup y ajustes finos
Las dimensiones del bloque se fijan con opciones de clase, pero el estilo fino — notas, citas, listas, encabezados — se ajusta en el preámbulo listando pares key=value en \jlreqsetup{...}. Ahí puedes definir cómo se muestran notas al pie, notas laterales (\sidenote), warichu (\warichu) y notas finales (\endnote), la sangría de citas (quote_indent=), la asignación de líneas de los encabezados, etc. Comandos como \NewBlockHeading y \ModifyHeading permiten rediseñar los encabezados, y también están disponibles comandos propios de la composición japonesa como \tatechuyoko (vertical en horizontal) y \jidori (asignación fija de caracteres).
No necesitas aprender todo esto de una vez. Lo práctico es fijar primero el tamaño, la longitud de línea y el número de líneas en las opciones de \documentclass, y añadir a \jlreqsetup solo lo que vaya haciendo falta. Para la lista completa, la referencia más autorizada es el manual incluido, la documentación japonesa de Noriyuki Abe, que se abre con texdoc jlreq.
Partir de una especificación de página dada
jlreq es más potente cuando la editorial o el curso da dimensiones como “A5, vertical, 38 caracteres por línea, 18 líneas por página”. Primero descompón esa especificación en papel, dirección, tamaño de letra, longitud de línea, número de líneas e interlineado, y copia esos valores en la línea \documentclass. Antes de escribir el manuscrito real, llena una página con texto ficticio, compila un PDF y mide el número de líneas y márgenes. Eso evita rediseñar tarde el bloque de texto.
\documentclass[
tate,
paper=a5,
fontsize=13Q,
line_length=38zw,
number_of_lines=18,
baselineskip=1.75zw,
]{jlreq}El motor puede autodetectarse, pero en colaboración o CI es más seguro hacerlo explícito. Si el manuscrito se verificó con upLaTeX, añade uplatex; si se verificó con LuaLaTeX incluyendo configuración de fuentes, añade lualatex. Después fija el comando de compilación a la misma ruta.
Tras fijar el bloque, inspecciona una página
jlreq es tan potente que una configuración numéricamente errónea aún puede producir un PDF. Antes de escribir el cuerpo real, coloca una página de texto ficticio con un encabezado, nota al pie, cita y una figura o tabla pequeña, y revisa longitud de línea, número de líneas, lomo y corte. En escritura vertical, la dirección de línea y la de caracteres se intercambian respecto a la horizontal, así que primero verifica que no hayas confundido line_length y number_of_lines.
- Longitud de línea — cuenta caracteres de ancho completo en el cuerpo, no solo la colocación de puntuación.
- Número de líneas — inspecciona tanto una página ordinaria como una página con encabezado.
- Márgenes — deja más espacio en el lomo si se encuaderna; evita un gutter excesivo si solo se entrega PDF.
- Motor — si upLaTeX y LuaLaTeX usan fuentes distintas, considera autoritativo solo el PDF de la ruta elegida.