jlreq

jlreq ist eine japanische Dokumentklasse von Noriyuki Abe. Der Name kommt vom Ziel, nach der W3C Technical Note “Requirements for Japanese Text Layout” (JLReq / 日本語組版処理の要件) zu setzen. Ihre Stärke ist, dass du den *hanmen*, also den Textblock für den Haupttext, präzise mit Zahlen entwerfen kannst. Sie läuft identisch mit pLaTeX, upLaTeX und LuaLaTeX. Diese Seite erklärt, wofür jlreq gedacht ist, wie seine Optionen den Textblock entwerfen und wann man es den js-basierten Klassen vorzieht.

Was jlreq ist

jlreq ist eine Klasse, mit der ernsthafter japanischer Satz mit einer einzigen Zeile beginnen kann: \documentclass{jlreq}. Der namensgebende Standard JLReq, “Requirements for Japanese Text Layout”, ist eine W3C Technical Note darüber, was für korrekten japanischen Satz in Technologien wie CSS und E-Books nötig ist. Auf Basis des japanischen Industriestandards JIS X 4051 (Satzregeln für japanische Dokumente) reicht er bis zu Richtlinien für den hanmen, also den Textblock: Überschriften, Abbildungen und Tabellen, Anmerkungen und Referenzzeichen. Die Klasse jlreq versucht, diese Anforderungen in LaTeX umzusetzen.

Die zweite Säule ist Engine-Unabhängigkeit. jlreq läuft sowohl mit dem traditionellen pLaTeX / upLaTeX (DVI erzeugen und mit dvipdfmx in PDF umwandeln) als auch mit modernem LuaLaTeX (LuaTeX-ja), das PDF direkt ausgibt. Die Klasse erkennt automatisch, welche Engine sie verarbeitet, sodass du den Prozessor wechseln kannst, ohne das Manuskript zu ändern. Zur expliziten Wahl übergibst du platex, uplatex oder lualatex als Klassenoption; XeLaTeX wird nicht unterstützt.

Warum jlreq? (gegenüber den js-Klassen)

Haruhiko Okumuras jsclasses (jsarticle und Verwandte) sind um ein gut abgestimmtes Standardaussehen gebaut, das man übernimmt; in vielen Fällen setzen sie sofort schön. jlreq nimmt die Gegenposition ein: Es will dich den Textblock selbst entwerfen lassen. “Textkörper mit so vielen Punkten, so viele Zeichen pro Zeile, so viele Zeilen pro Seite, dieser Zeilenabstand, diese oberen/unteren/Bundränder” — jede dieser Seitendesign-Dimensionen gibst du selbst an, auf Grundlage des Standards.

jlreq spielt seine Stärke aus, wenn du vorgeschriebenes Format, Zeilenlänge und Zeilenzahl exakt einhalten musst: beim Satz eines Buchs oder Self-Publishing-Werks, eines vertikal gesetzten Textes oder einer Einreichung mit festgelegten Textblockmaßen. Wenn du dagegen nur schnell einen Aufsatz in einer ordentlichen Standardform fertigstellen willst, reichen jsclasses oder ihre LuaLaTeX-Ausgabe ltjsclasses oft aus. jlreq ist im aktuellen TeX Live standardmäßig enthalten; eine separate Installation ist nicht nötig.

Grundoptionen und Schriftgröße

Die Dokumentart wechselst du über Optionen in eckigen Klammern. Standardmäßig verhält sie sich wie article; mit report erhältst du einen Bericht mit Kapiteln (\chapter), mit book ein buchartiges Dokument. Anders als bei jsclasses gibt es also nicht je Typ einen eigenen Klassennamen; du schaltest ein einzelnes jlreq über Optionen um. Für vertikalen Satz füge tate hinzu. Das Papier setzt du mit paper=: paper=a4, paper=b5 (ISO B; für JIS B Formen wie b5j) oder eine explizite Größe wie paper={148mm,210mm}.

Betrachte lateinische und japanische Größen getrennt. fontsize= ist die lateinische Grundgröße (Standard 10pt), jafontsize= die japanische Größe. Außerdem gibt es jafontscale=, das das Verhältnis direkt angibt und standardmäßig 1 ist (Japanisch und Latein gleich groß). jlreq akzeptiert auch die Satzmaße Q und H (*kyū* und *ha*), sodass du z. B. fontsize=13Q schreiben kannst (1 Q = 1 H = 0,25 mm).

OptionBedeutungStandard
article / report / bookDokumentart wechseln (Kapitel, Layout)article-artig
tateVertikaler SatzHorizontal
platex / uplatex / lualatexEngine erzwingen (normalerweise automatisch erkannt)Automatisch erkannt
paper=Papierformat: a4, b5, {B,H} usw.
fontsize=Lateinische Grundschriftgröße (Q/H erlaubt)10pt
jafontsize= / jafontscale=Japanische Größe / Japanisch-zu-Latein-VerhältnisVerhältnis 1

Den Textblock entwerfen

Das Herz von jlreq ist der Entwurf des Textblocks. Den rechteckigen Bereich, in dem der Textkörper gesetzt wird (den *hanmen*), legst du auf eine von zwei Arten fest. Eine arbeitet von innen nach außen: Schriftgröße, Zeilenabstand, Zeilenlänge und Zeilenzahl pro Seite werden angegeben, und die Ränder ergeben sich daraus. Dafür dienen line_length= (Zeilenlänge), number_of_lines= (Zeilen pro Seite) und baselineskip= (Zeilenabstand). Die andere arbeitet von außen nach innen: obere (head_space=), untere (foot_space=), Bund- (gutter=) und Außenrand (fore-edge=) werden angegeben und bestimmen den Textblock.

Spezielle Einheiten sind hier hilfreich. zw ist die Breite eines Vollbreitenzeichens (zen-width), zh seine Höhe (zen-height), sodass du Zeilenlänge und Abstand natürlich als “so viele Zeichen” angeben kannst. line_length=40zw bedeutet etwa 40 Zeichen pro Zeile, baselineskip=1.75zw einen Zeilenabstand von 1,75 Vollbreitenzeichen. Standardmäßig ist line_length 0,75× der Papierausdehnung in Zeichenrichtung, number_of_lines die Anzahl, die in 0,75× der Papierausdehnung in Zeilenrichtung passt, und baselineskip 1,7× die japanische Schriftgröße. Ohne head_space und foot_space wird der Block vertikal zentriert. Bei zweispaltigem Satz setzt column_gap= den Spaltenabstand.

OptionBedeutungStandard
line_length=Zeilenlänge0,75× Papierbreite
number_of_lines=Zeilen pro Seitepasst in 0,75× der Höhe
baselineskip=Zeilenabstand (Pitch)1,7× japanische Größe
gutter= / fore-edge=Bund- / Außenrand
head_space= / foot_space=Oberer / unterer Randbei Auslassung vertikal zentriert
column_gap=Spaltenabstand bei zweispaltigem Satz

Ein Beispiel für vertikalen Satz

Hier ist ein A5-Dokument im vertikalen Satz, dessen Textblock von innen nach außen entworfen wird. tate macht es vertikal, paper=a5 legt das Format fest, und der Rest beschreibt den Block numerisch: Japanisch mit 13 Q, 40 Zeichen pro Zeile, 17 Zeilen pro Seite und Zeilenabstand von 1,75 Vollbreitenzeichen. Ohne etwas im Textkörper zu ergänzen, legt diese eine Zeile ein buchartiges Layout fest.

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}

Mit LuaLaTeX verarbeitet, erhältst du direkt ein PDF mit Systemschriften; mit upLaTeX verarbeitet, erhältst du ein PDF über DVI. Die \documentclass-Zeile kann in beiden Fällen gleich bleiben. Für horizontalen Satz entfernst du einfach tate.

\jlreqsetup und Feineinstellungen

Die Maße des Textblocks werden über Klassenoptionen festgelegt, aber Feinstil wie Anmerkungen, Zitate, Listen und Überschriften wird in der Präambel über key=value-Paare in \jlreqsetup{...} eingestellt. Dort kannst du die Darstellung von Fußnoten, Randnoten (\sidenote), Warichu (\warichu) und Endnoten (\endnote), den Einzug von Zitaten (quote_indent=), die Zeilenzuteilung von Überschriften und mehr festlegen. Befehle wie \NewBlockHeading und \ModifyHeading gestalten Überschriften selbst neu; auch japanisch-spezifische Befehle wie \tatechuyoko (vertikal-in-horizontal) und \jidori (feste Zeichenbreite) stehen bereit.

All das musst du nicht auf einmal lernen. Praktisch ist, zuerst Format, Zeilenlänge und Zeilenzahl in den Optionen von \documentclass festzulegen und \jlreqsetup nur bei Bedarf zu ergänzen. Die vollständige Liste findest du am verlässlichsten im mitgelieferten Handbuch, der japanischen Dokumentation von Noriyuki Abe, geöffnet mit texdoc jlreq.

Mit einer vorgegebenen Seitenspezifikation beginnen

jlreq ist am stärksten, wenn Verlag oder Kurs Maße wie “A5, vertikal, 38 Zeichen pro Zeile, 18 Zeilen pro Seite” vorgeben. Zerlege diese Vorgabe zuerst in Papier, Richtung, Schriftgröße, Zeilenlänge, Zeilenzahl und Zeilenabstand und übertrage die Werte in die \documentclass-Zeile. Bevor du das echte Manuskript schreibst, fülle eine Seite mit Blindtext, kompiliere ein PDF und miss Zeilenzahl und Ränder. So vermeidest du eine späte Neugestaltung des Textblocks.

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

Die Engine kann automatisch erkannt werden, aber in Zusammenarbeit oder CI ist eine explizite Angabe sicherer. Wurde das Manuskript mit upLaTeX geprüft, füge uplatex hinzu; wurde es mit LuaLaTeX inklusive Schrifteinrichtung geprüft, füge lualatex hinzu. Lege dann auch den Build-Befehl auf dieselbe Route fest.

Nach dem Festlegen des Textblocks eine Seite prüfen

jlreq ist so leistungsfähig, dass auch eine numerisch falsche Einstellung noch ein PDF erzeugen kann. Bevor du den echten Text schreibst, setze eine Seite Blindtext plus Überschrift, Fußnote, Zitat und eine kleine Abbildung oder Tabelle und prüfe Zeilenlänge, Zeilenzahl, Bund und Außenrand. Besonders beim vertikalen Satz sind Zeilenrichtung und Zeichenrichtung gegenüber horizontalem Satz vertauscht; prüfe zuerst, dass line_length und number_of_lines nicht verwechselt wurden.

  • Zeilenlänge — Zähle Vollbreitenzeichen im Textkörper, nicht nur die Position der Satzzeichen.
  • Zeilenzahl — Prüfe sowohl eine normale Seite als auch eine Seite mit Überschrift.
  • Ränder — Plane für Bindung mehr Platz am Bund ein; vermeide übermäßigen Bundsteg bei reiner PDF-Abgabe.
  • Engine — Wenn upLaTeX und LuaLaTeX unterschiedliche Schriften verwenden, gilt nur das PDF der gewählten Route als maßgeblich.