jlreq

jlreq est une classe de document japonais créée par Noriyuki Abe. Son nom vient de son objectif : composer selon la note technique du W3C “Requirements for Japanese Text Layout” (JLReq / 日本語組版処理の要件). Sa force distinctive est de permettre de concevoir précisément, en chiffres, le *hanmen*, c’est-à-dire le bloc de texte où le corps est composé. Elle fonctionne de la même façon avec pLaTeX, upLaTeX ou LuaLaTeX. Cette page explique à quoi sert jlreq, comment ses options conçoivent le bloc de texte et quand le choisir plutôt que les classes basées sur js.

Ce qu’est jlreq

jlreq est une classe qui permet de commencer une composition japonaise sérieuse avec une seule ligne, \documentclass{jlreq}. La norme dont elle tire son nom, JLReq, “Requirements for Japanese Text Layout”, est une note technique du W3C décrivant ce qu’il faut pour composer correctement le japonais dans des technologies comme CSS et les livres numériques. Fondée principalement sur la norme industrielle japonaise JIS X 4051 (règles de mise en forme des documents japonais), elle va jusqu’aux recommandations de conception du hanmen, le bloc de texte : titres, figures et tableaux, notes et signes de référence. La classe jlreq est une tentative de réaliser ces exigences dans LaTeX.

Son autre pilier est d’être indépendante du moteur. jlreq fonctionne aussi bien avec le traditionnel pLaTeX / upLaTeX (production d’un DVI puis conversion en PDF avec dvipdfmx) qu’avec le moderne LuaLaTeX (LuaTeX-ja), qui produit directement le PDF. La classe détecte automatiquement le moteur utilisé ; vous pouvez donc changer de processeur sans toucher au manuscrit. Pour forcer un choix, passez platex, uplatex ou lualatex comme option de classe (XeLaTeX n’est pas pris en charge).

Pourquoi jlreq (face aux classes js)

Les jsclasses de Haruhiko Okumura (jsarticle et apparentées) reposent sur un aspect par défaut très bien réglé que l’on accepte tel quel ; dans la plupart des cas, elles composent très bien immédiatement. jlreq adopte l’attitude inverse : son objectif est de vous laisser concevoir le bloc de texte lui-même. “Corps à tant de points, tant de caractères par ligne, tant de lignes par page, tel interligne, telles marges haute, basse et côté reliure” : vous spécifiez vous-même chacune de ces dimensions de conception de page, sur la base de la norme.

jlreq brille donc lorsqu’il faut respecter exactement un format, une longueur de ligne et un nombre de lignes prescrits : composition d’un livre ou d’une publication indépendante, texte vertical, ou soumission avec dimensions de bloc imposées. À l’inverse, si vous voulez simplement finir rapidement un article dans un style par défaut propre, jsclasses ou son édition LuaLaTeX, ltjsclasses, suffisent souvent. jlreq est fourni en standard avec les TeX Live actuels ; aucune installation séparée n’est nécessaire.

Options de base et taille de police

Le type de document se change avec les options entre crochets. Par défaut, jlreq se comporte comme article ; passez report pour un rapport avec chapitres (\chapter), ou book pour un document de type livre. Contrairement à jsclasses, le nom de classe n’est pas séparé par type : on fait varier un seul jlreq par options. Ajoutez tate pour l’écriture verticale. Le papier se règle avec paper= : paper=a4, paper=b5 (ISO B ; pour JIS B, des formes comme b5j), ou une taille explicite comme paper={148mm,210mm}.

Il faut penser séparément les tailles latines et japonaises. fontsize= donne la taille latine de base (défaut 10pt) et jafontsize= la taille japonaise. jafontscale= permet aussi de donner directement le rapport entre les deux, avec 1 par défaut (japonais et latin de même taille). jlreq accepte également les unités d’édition Q et H (*kyū* et *ha*) : on peut écrire par exemple fontsize=13Q (1 Q = 1 H = 0,25 mm).

OptionSignificationDéfaut
article / report / bookChanger le type de document (chapitres, mise en page)type article
tateÉcriture verticaleHorizontale
platex / uplatex / lualatexForcer le moteur (normalement auto-détecté)Auto-détecté
paper=Format papier : a4, b5, {l,h}, etc.
fontsize=Taille latine de base (Q/H autorisés)10pt
jafontsize= / jafontscale=Taille japonaise / rapport japonais-latinrapport 1

Concevoir le bloc de texte

Le cœur de jlreq est la conception du bloc de texte. La région rectangulaire où le corps est composé, le *hanmen*, se fixe selon deux approches. L’une travaille de l’intérieur vers l’extérieur : on donne la taille de police, l’interligne, la longueur de ligne et le nombre de lignes par page, et les marges en découlent, avec line_length= (longueur d’une ligne), number_of_lines= (lignes par page) et baselineskip= (interligne). L’autre travaille de l’extérieur vers l’intérieur : on donne les marges haute (head_space=), basse (foot_space=), côté reliure (gutter=) et côté gouttière externe (fore-edge=), qui fixent le bloc.

Des unités dédiées sont utiles ici. zw est la largeur d’un caractère pleine chasse (zen-width) et zh sa hauteur (zen-height), ce qui permet d’exprimer naturellement la longueur de ligne et l’interligne en “nombre de caractères”. Par exemple, line_length=40zw donne 40 caractères par ligne, et baselineskip=1.75zw un interligne de 1,75 caractère pleine chasse. Par défaut, line_length vaut 0,75× l’étendue du papier dans la direction des caractères, number_of_lines est le nombre de lignes qui tient dans 0,75× l’étendue dans la direction des lignes, et baselineskip vaut 1,7× la taille japonaise. Si head_space et foot_space sont omis, le bloc est centré verticalement. En deux colonnes, l’écart se règle avec column_gap=.

OptionSignificationDéfaut
line_length=Longueur d’une ligne0,75× la largeur du papier
number_of_lines=Lignes par pagetient dans 0,75× la hauteur
baselineskip=Interligne (pas de ligne)1,7× la taille japonaise
gutter= / fore-edge=Marge côté reliure / bord extérieur
head_space= / foot_space=Marge haute / bassecentré verticalement si omis
column_gap=Écart entre colonnes (deux colonnes)

Exemple d’écriture verticale

Voici un document A5 vertical dont le bloc de texte est conçu de l’intérieur vers l’extérieur. tate le rend vertical, paper=a5 fixe le format, et le reste décrit le bloc en chiffres : japonais à 13 Q, 40 caractères par ligne, 17 lignes par page, interligne de 1,75 caractère pleine chasse. Sans rien ajouter au corps, cette ligne fixe une mise en page de type livre.

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

En le traitant avec LuaLaTeX, vous obtenez directement un PDF avec les polices du système ; avec upLaTeX, vous obtenez un PDF via DVI. La ligne \documentclass peut être identique dans les deux cas. Pour passer à l’horizontal, il suffit de retirer tate.

\jlreqsetup et réglages fins

Les dimensions du bloc de texte se fixent par options de classe, mais le style fin — notes, citations, listes, titres — se règle dans le préambule en listant des paires key=value dans \jlreqsetup{...}. On y définit le rendu des notes de bas de page, notes latérales (\sidenote), notes interlinéaires (\warichu) et notes finales (\endnote), l’indentation des citations (quote_indent=), l’allocation de lignes pour les titres, etc. Des commandes comme \NewBlockHeading et \ModifyHeading permettent de redessiner les titres eux-mêmes, et des commandes propres au japonais comme \tatechuyoko (vertical dans horizontal) et \jidori (calage par nombre de caractères) sont aussi disponibles.

Il n’est pas nécessaire de tout apprendre d’un coup. La voie pratique consiste à fixer d’abord le format, la longueur de ligne et le nombre de lignes dans les options de \documentclass, puis à n’ajouter à \jlreqsetup que ce qui devient nécessaire. Pour la liste complète, le manuel fourni, la documentation japonaise de Noriyuki Abe ouverte avec texdoc jlreq, est la référence la plus fiable.

Partir d’une spécification de page fournie

jlreq est le plus utile quand l’éditeur ou le cours donne des dimensions comme “A5, vertical, 38 caractères par ligne, 18 lignes par page”. Décomposez d’abord cette spécification en papier, direction, taille de police, longueur de ligne, nombre de lignes et interligne, puis copiez ces valeurs dans la ligne \documentclass. Avant d’écrire le vrai manuscrit, remplissez une page de faux texte, compilez un PDF et mesurez le nombre de lignes et les marges. Cela évite une refonte tardive du bloc de texte.

latex
\documentclass[
  tate,
  paper=a5,
  fontsize=13Q,
  line_length=38zw,
  number_of_lines=18,
  baselineskip=1.75zw,
]{jlreq}

Le moteur peut être auto-détecté, mais en collaboration ou en CI, il est plus sûr de le rendre explicite. Si le manuscrit a été vérifié avec upLaTeX, ajoutez uplatex ; s’il a été vérifié avec LuaLaTeX, configuration de polices incluse, ajoutez lualatex. Fixez ensuite la commande de build sur la même route.

Après avoir fixé le bloc, inspecter une page

jlreq est assez puissant pour produire un PDF même avec une configuration numériquement fausse. Avant d’écrire le vrai corps, placez une page de faux texte avec un titre, une note, une citation et une petite figure ou un tableau, puis vérifiez longueur de ligne, nombre de lignes, côté reliure et bord extérieur. En écriture verticale, la direction des lignes et celle des caractères sont inversées par rapport à l’horizontal ; vérifiez d’abord que vous n’avez pas confondu line_length et number_of_lines.

  • Longueur de ligne — comptez les caractères pleine chasse dans le corps, pas seulement le placement de la ponctuation.
  • Nombre de lignes — inspectez à la fois une page ordinaire et une page avec titre.
  • Marges — prévoyez plus d’espace côté reliure pour un manuscrit relié ; évitez un gutter excessif pour une soumission PDF seule.
  • Moteur — si upLaTeX et LuaLaTeX utilisent des polices différentes, seul le PDF de la route choisie doit faire autorité.