Re:VIEW se vend sur la promesse de ne pas avoir à écrire de LaTeX. Ouvrez pourtant son config.yml : on y trouve une clé dvicommand dont la valeur est dvipdfmx ; ouvrez la classe qu'il emploie pour le PDF, elle déclare \DeclareOptionX{bleed_margin}[3mm] et une option tombopaper pour les traits de coupe. LaTeX n'a pas disparu. Il a été muté au service qui parle à l'imprimeur. Cette page examine ce système de publication — un balisage léger .re, du PDF et de l'EPUB issus de la même source — depuis son moteur LaTeX.
Ce qu'est Re:VIEW et ce qu'il sait produire
Re:VIEW est un système de conversion orienté livre écrit en Ruby ; le manuscrit s'écrit dans un balisage léger, en fichiers d'extension .re. À partir de ce seul manuscrit, il convertit vers EPUB, LaTeX, InDesign (IDGXML), Markdown, texte brut et HTML web. Il a été créé par Minero Aoki et est maintenu par Kenshi Muto (kmuto) ; la ligne de copyright porte aussi Masayoshi Takahashi et Masanori Kado (2006–2024). La licence est la LGPL. S'il est devenu le choix de fait de l'autoédition technique japonaise, c'est pour une seule raison : tirer d'un unique manuscrit un PDF prêt pour l'impression et un livre électronique est précisément ce dont ce milieu a besoin.
= Getting started
Ordinary body text. Inline emphasis is written @<b>{like this},
and a cross-reference to a listing is @<list>{hello}.
//list[hello][A first program]{
puts "hello"
//}
//image[diagram][The system, in outline]{
//}Un projet, ce sont les fichiers .re, un par chapitre, plus deux fichiers YAML. config.yml porte les métadonnées — titre, auteur, format, réglages LaTeX — et catalog.yml porte l'ordre des chapitres entre pièces liminaires, corps et annexes. Les fichiers de manuscrit ne contiennent aucune information d'ordre : réorganiser les chapitres revient donc à déplacer des lignes dans catalog.yml. L'idée est celle du réordonnancement d'une liste de \include en LaTeX, sauf que cette liste est un catalogue et non une instruction de composition : elle gouverne donc tout aussi directement la table des matières de l'EPUB.
Installation et construction : ce n'est pas dans TeX Live
Re:VIEW est une gem Ruby, pas un paquet TeX Live. Sur une machine dotée d'une installation complète de TeX Live 2024, il n'y a toujours aucun review-pdfmaker : on l'installe à part, par gem install review. L'exigence joue aussi dans l'autre sens : la documentation indique « To generate PDF, you should install TeXLive 2012 or later. », il faut donc en outre une installation de TeX Live. Le système ne fonctionne qu'une fois deux chaînes d'outils indépendantes en place ; lancer rake pdf sans l'avoir remarqué, c'est rester devant une erreur sans savoir laquelle des deux moitiés manque.
gem install review # the Ruby side
# TeX Live is a separate prerequisite for the PDF route
review-init hello # create a project skeleton
cd hello
rake pdf # PDF, through LaTeX
rake epub # EPUB
rake web # HTML
rake text # plain text
rake idgxml # InDesign
# the same jobs without rake:
review-pdfmaker config.yml
review-epubmaker config.ymlreview-jsbook.cls n'est pas dans TeX Live : d'où vient File not found
Sortez du répertoire du projet le .tex engendré par Re:VIEW, compilez-le, et TeX Live 2024 s'arrête sur ! LaTeX Error: File ‘review-jsbook.cls’ not found., suivi de ! Emergency stop. La raison est simple : cette classe est livrée dans la gem et ne fait pas partie de TeX Live. kpsewhich jsbook.cls et kpsewhich jlreq.cls renvoient un chemin réel ; review-jsbook.cls et review-jlreq.cls ne renvoient rien. Les parents sont dans TeX Live, les enfants non. Ces deux classes sont arrivées avec Re:VIEW 3.0 ; auparavant le système utilisait jsbook.cls tel quel.
$ uplatex rv.tex
! LaTeX Error: File `review-jsbook.cls' not found.
! Emergency stop.
$ kpsewhich jsbook.cls
/usr/local/texlive/2024/texmf-dist/tex/platex/jsclasses/jsbook.cls
$ kpsewhich jlreq.cls
/usr/local/texlive/2024/texmf-dist/tex/latex/jlreq/jlreq.cls
$ kpsewhich review-jsbook.cls
$ # nothing: it lives in the gemUn coup d'œil dans la classe et l'orientation de cette famille saute aux yeux. La ligne d'identification de \ProvidesClass dit « Re:VIEW pLaTeX class modified for jsbook.cls » — donc une classe pLaTeX, ce qui, joint à un dvicommand valant dvipdfmx, fait du chemin d'impression (u)pLaTeX → DVI → dvipdfmx. Et les options déclarées sont tout bonnement le vocabulaire d'un imprimeur : \DeclareOptionX{tombopaper} pour un papier au format portant les traits de coupe, \DeclareOptionX{bleed_margin}[3mm] pour le fond perdu, par défaut 3 mm, \DeclareOptionX{hiddenfolio} pour un folio que le livre fini dissimule, et \DeclareOptionX{media}[print] — dont la valeur par défaut print en dit plus long sur la position de cette famille que n'importe quelle documentation. Pour l'édition électronique, on bascule sur media=ebook.
Une seconde route vers le PDF sans LaTeX : Vivliostyle, ajouté en 5.1
La version 5.1.0 a ouvert une seconde route, pavée celle-là de composition CSS. rake vivliostyle:build appelle le CLI de Vivliostyle et fabrique un PDF directement à partir de HTML et de CSS, rake vivliostyle:preview permettant de le vérifier dans un navigateur. Le même manuscrit peut désormais sortir par l'une ou l'autre porte. Ce que cela illustre vraiment, c'est la position architecturale de Re:VIEW : LaTeX y est un format de sortie parmi d'autres. Comme le manuscrit réside dans .re et l'apparence dans une classe ou une feuille de style, toute la moitié aval peut être remplacée. Le choix dépend des exigences de composition ; pour un contrôle fin de la composition japonaise et une remise avec traits de coupe, la route LaTeX dispose pour l'instant de l'outillage le plus complet.
Re:VIEW ou LaTeX simple : dans quoi écrire le livre
Re:VIEW si l'EPUB est nécessaire, LaTeX simple sinon — la décision tient à peu près là. Commencer en LaTeX tout en devant un EPUB à quelqu'un, c'est finir par écrire soi-même l'étape de conversion HTML, qui devient la partie la plus lourde du projet. À l'inverse, prendre Re:VIEW sans EPUB en vue revient à s'offrir une couche d'abstraction de plus : chaque retouche de composition commencera par la question de savoir si le correctif va dans le .re, dans le LaTeX, ou entre les deux. L'autre critère, ce sont les coauteurs : qui connaît Markdown lit le balisage .re en quelques minutes ; un préambule LaTeX est moins accueillant.
| Ce que vous faites | L'outil qui convient |
|---|---|
PDF + EPUB | Re:VIEW : rake pdf et rake epub lisent le même manuscrit |
PDF only | LaTeX simple : une couche de moins, on sait où corriger |
tombopaper, bleed_margin | remise à l’imprimeur : la route LaTeX de Re:VIEW (media=print) |
rake vivliostyle | PDF par composition CSS ; une route sans LaTeX (depuis 5.1) |
.docx, .md | Re:VIEW produit aussi du Markdown, mais l’échange général est un autre sujet |
Un dernier point à retenir : utiliser Re:VIEW ne dispense pas de connaître LaTeX. Une figure qui glisse, un interlignage japonais devenu trop serré, un \usepackage à ajouter — tout cela se règle en définitive dans la classe et dans le .sty, et ce qu'on consulte à ce moment-là n'est pas la documentation de Re:VIEW mais sa propre connaissance de LaTeX. Les trois clés texdocumentclass, texcommand et dvicommand de config.yml existent précisément comme porte d'accès à ce niveau.