Remise à l’impression (traits de coupe, PDF)

Quand une soumission LaTeX déraille, la cause n'a en général rien à voir avec la composition. Tout compile parfaitement chez vous et la fabrication d'arXiv échoue. La rédaction répond que les polices ne sont pas incorporées. L'imprimeur renvoie le fichier faute de traits de coupe et de fond perdu. Rien de tout cela ne concerne la qualité du texte : vous vous êtes simplement heurté aux règles dont le destinataire a besoin pour traiter les fichiers automatiquement. Cette page passe en revue ce que l'on peut vérifier soi-même avant d'envoyer : les exigences qu'arXiv énonce noir sur blanc, l'inventaire de packages produit par \listfiles, le contrôle de l'incorporation des polices avec pdffonts, l'aplatissement d'un manuscrit avec latexpand, arlatex et bundledoc, l'anonymisation pour une évaluation en double aveugle, et le PDF/X pour un imprimeur.

Que soumettre quand on envoie du LaTeX à arXiv

On soumet la source, pas un PDF. arXiv recompile le .tex reçu sur sa propre installation TeX Live : ce que vous téléversez, c'est « un jeu de fichiers qui se construit chez eux ». L'aide à la soumission d'arXiv est explicite sur plusieurs points. Pour un fichier nommé foo.tex, n'incluez pas les fichiers auxiliaires associés — foo.aux, foo.log, foo.toc, foo.lot, foo.lof, foo.dvi, foo.pdf. Les fichiers d'index (.ind) et les .bbl produits par BibTeX font exception et doivent être inclus ; de plus, le nom du .bbl doit correspondre à celui du .tex principal, faute de quoi les références ne seront pas traitées. Et : aucun package n'est fourni au-delà de ce que propose le système TeX Live — la classe maison d'une société savante, ou un fichier de style que vous avez modifié, doit donc voyager avec votre envoi.

FichierÀ inclure ?Raison
.texouila source elle-même ; la compilation part toujours de la racine de l'envoi
.bblouiexception explicite ; son nom doit correspondre au .tex principal
.indouile fichier d'index relève de la même exception que le .bbl
.sty / .clsseulement si maison ou modifiéce qui n'est pas dans TeX Live restera introuvable là-bas
.aux / .log / .tocnonrégénérés à la recompilation, ils ne doivent pas être joints
.pdf / .dvinonc'est la sortie elle-même — à ne pas confondre avec un PDF servant de figure

Les formats d'images dépendent eux aussi du moteur. L'aide d'arXiv le sépare nettement : plain TeX et LaTeX en mode DVI n'acceptent que du PostScript (.ps ou .eps), tandis que LaTeX en mode PDF accepte .pdf, .png et .jpg — et elle affirme sans détour qu'arXiv ne convertit pas les fichiers d'images « à la volée » pendant le traitement TeX. Envoyez un mélange de .eps et de .pdf et la fabrication échoue. Autre point : la compilation part toujours de la racine du répertoire de soumission ; même si le fichier principal se trouve dans un sous-dossier, vérifiez qu'un chemin relatif comme \includegraphics{figs/plot} se résout depuis la racine. Les chemins absolus ne fonctionnent pas.

Les raisons habituelles d'un échec du traitement automatique

La plupart des échecs se ramènent aux noms de fichiers, aux chemins et à un oubli. arXiv publie une liste des erreurs courantes qui font échouer le traitement automatique, et ce qui s'y trouve relève presque toujours d'une correction d'une ligne. Vous avez écrit votre propre fichier de style ou de macros (ou modifié un fichier standard) et oublié de le joindre. Vous avez utilisé un chemin absolu là où il fallait un chemin relatif. Vous avez mis une espace ou un caractère spécial dans un nom de fichier — ils sont convertis en tirets bas au téléversement, si bien que \includegraphics{my figure} perd sa cible au moment même de l'envoi. Votre .bbl provient d'une version de BibLaTeX qui ne correspond pas au TeX Live d'arXiv. Vous chargez encore un vieux fichier de style de l'ère dvips comme epsbox.sty. Vous avez mélangé les formats d'images. Et vous avez employé une macro non protégée dans une légende — il faut écrire \protect\cite{}.

Le point commun de tous ces cas est qu'une hypothèse valable uniquement sur votre machine a survécu quelque part. La parade la plus efficace n'est donc pas un outil mais une procédure : créer un répertoire neuf, n'y copier que les fichiers destinés à partir, et vérifier que la compilation aboutit depuis zéro sans aucun fichier intermédiaire. Ce seul geste révèle la plupart des chemins absolus, des pièces oubliées et des compilations qui ne tenaient que grâce à un .aux périmé. Envoyer sans l'avoir testée une modification faite à la dernière minute est d'ailleurs un autre échec qu'arXiv nomme explicitement.

terminal
# build the submission the way the other end will
mkdir -p /tmp/submit && cp paper.tex refs.bbl mystyle.sty figs/*.pdf /tmp/submit/
cd /tmp/submit && pdflatex paper.tex   # must succeed with no .aux present

# a caption calling a macro needs \protect:
%   \caption{Following the method of \protect\cite{knuth1984}}
# and a file name with a space will be renamed on upload:
%   my figure.pdf  ->  my_figure.pdf

Consigner avec quoi vous avez composé : \listfiles

Ajoutez la seule ligne \listfiles avant \documentclass et la fin du .log portera chaque fichier chargé, avec sa version. Le début d'une exécution réelle donne : article.cls 2023/05/17 v1.4n Standard LaTeX document class, amsmath.sty 2023/05/13 v2.17o AMS math features, hyperref.sty 2024-01-20 v7.01h Hypertext links for LaTeX. La liste s'étend sur des dizaines de lignes, et elle rend « ça ne casse que chez eux » bien plus facile à cerner. Six mois plus tard, quand la rédaction écrit qu'elle n'arrive pas à reproduire votre compilation, avoir cette table de versions dans le journal fait toute la différence.

log
*File List*
 article.cls    2023/05/17 v1.4n Standard LaTeX document class
  size11.clo    2023/05/17 v1.4n Standard LaTeX file (size option)
 fontenc.sty    2021/04/29 v2.0v Standard LaTeX package
 amsmath.sty    2023/05/13 v2.17o AMS math features
graphicx.sty    2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
hyperref.sty    2024-01-20 v7.01h Hypertext links for LaTeX
 ***********

Pour une version plus rigoureuse de la même idée, utilisez le package snapshot. Ajoutez \usepackage{snapshot}, compilez, et vous obtenez à côté du .tex un fichier .dep dont le contenu est une déclaration permettant de reproduire la compilation : \RequireVersions{ ... } avec des entrées comme *{application}{pdfTeX} {0000/00/00 v1.40.26}, *{format} {LaTeX2e} {2023-11-01 v2.e} et *{class} {article} {2023/05/17 v1.4n} — moteur, format, classe et tous les packages, sous forme lisible par machine. Ce même fichier .dep sert d'entrée à bundledoc à la section suivante.

Vérifier l'incorporation des polices avec pdffonts, et pourquoi Type 3 est refusé

Une seule commande suffit : pdffonts paper.pdf. Cet outil, livré avec poppler, énumère chaque police employée par le PDF sur sa propre ligne, avec son type (Type 1, Type 3, TrueType, etc.), son incorporation (emb), son sous-ensemble (sub) et la présence d'une table Unicode (uni). Pour les soumissions en PDF direct, arXiv déclare qu'il « peut refuser des soumissions PDF en raison de polices non standard et non incorporées » et demande que « des polices vectorielles (TrueType/Type1) plutôt que bitmap (Type3) soient utilisées ». Les consignes de fabrication des revues disent à peu près la même chose. La condition de réussite est donc simple : la colonne emb doit afficher yes partout, et la colonne type ne doit jamais afficher Type 3.

terminal
$ pdffonts paper.pdf
name                                 type              encoding   emb sub uni object ID
------------------------------------ ----------------- ---------- --- --- --- ---------
NLRVKI+SFBX1440                      Type 1            Custom     yes yes yes      9  0
LLYCJX+CMMI10                        Type 1            Builtin    yes yes yes     11  0
JHYTSG+CMR10                         Type 1            Builtin    yes yes yes     12  0

$ pdffonts bitmap.pdf     # the same document forced onto bitmap fonts
F28                                  Type 3            Custom     yes no  no       4  0

La seconde sortie ci-dessus révèle le plus retors de l'affaire : une police Type 3 est elle aussi emb yes. Les bitmaps sont bel et bien incorporés au PDF ; à la question « toutes vos polices sont-elles incorporées ? », on peut donc répondre « oui » en toute honnêteté. La différence est à droite, dans la colonne uni, qui affiche no : sans table Unicode, ce PDF ne peut être ni cherché ni copié. Le premier symptôme est en général un relecteur qui n'arrive pas à rechercher un mot dans le texte. On peut provoquer cet état à dessein dans pdfTeX en vidant la table des polices avec \pdfmapfile{} — autrement dit, une configuration de font map cassée, ou une figure collée depuis un vieil outil de tracé qui produit du Type 3, vous y amènera sans crier gare.

La version du PDF fait elle aussi parfois partie des exigences. pdfTeX dans TeX Live 2024 écrit par défaut du PDF 1.5, ce que confirme le champ PDF version: de pdfinfo. Pour atteindre une version imposée, placez la primitive pdfTeX \pdfminorversion=7 tout en haut du préambule, ou, avec le LaTeX actuel, écrivez \DocumentMetadata{pdfversion=1.7} avant \documentclass. À la mesure, les deux donnent PDF version: 1.7. La production de PDF/A proprement dite relève d'une autre page ; voyez le lien ci-dessous.

Aplatir un manuscrit éclaté : latexpand, arlatex, bundledoc

Découper un manuscrit à raison d'un \input par chapitre est agréable à écrire, mais les systèmes de soumission réclament souvent un unique .tex. TeX Live embarque trois outils aux visées distinctes. latexpand main.tex > flat.tex développe \input et \include en un .tex unique. arlatex --document=paper.tex intro.tex --outfile=selfcontained.tex range les fichiers auxiliaires dans un seul .tex en enveloppant chacun dans un environnement filecontents* — lors d'une exécution réelle, cette sortie se compilait telle quelle avec pdflatex. Et bundledoc lit le fichier .dep produit par snapshot et empaquette l'ensemble des fichiers nécessaires dans un tar.gz.

terminal
# one flat .tex (latexpand 1.7.2); NOTE: comments are stripped by default
latexpand main.tex > flat.tex
latexpand --keep-comments main.tex > flat.tex   # keep them if you must

# one self-contained .tex carrying its own auxiliary files
arlatex --document=paper.tex intro.tex --outfile=selfcontained.tex

# a tar.gz of exactly what the document needs, excluding TeX Live itself
pdflatex paper.tex          # with \usepackage{snapshot} -> paper.dep
bundledoc --localonly --manifest=MANIFEST paper.dep
tar tzf paper.tar.gz
#   paper/
#   paper/intro.tex
#   paper/MANIFEST
#   paper/paper.tex

Un comportement, ici, touche aussi à l'anonymat. latexpand supprime les commentaires par défaut. Son propre manuel indique qu'il produit par défaut un fichier LaTeX unique ne contenant aucun commentaire ; pour les conserver, il faut passer explicitement --keep-comments. Retournez la phrase et elle devient inconfortable : envoyez un .tex brut et toutes les notes privées écrites après un % partent avec. Des mémos du genre « ce paragraphe vise le relecteur 2 » finissent bel et bien dans des fichiers soumis. Le --localonly de bundledoc obéit au même instinct : il exclut tout ce qui provient de TeX Live et n'empaquette que ce que vous avez écrit — exactement la forme de la règle d'arXiv selon laquelle les packages standard n'ont pas à être joints, mais vos propres fichiers si.

Anonymiser pour une évaluation en double aveugle : métadonnées et commentaires

Effacer le nom de l'auteur du corps du texte ne suffit pas. Les métadonnées du PDF et les commentaires de la source sont deux vérifications distinctes. À la mesure : \title et \author ne fuient pas d'eux-mêmes dans les métadonnées du PDF — pdfinfo a rapporté Title: et Author: vides, et seuls figuraient Creator: LaTeX with hyperref, Producer: pdfTeX-1.40.26 et les horodatages. La fuite survient quand vous (ou un modèle) écrivez \hypersetup{pdfauthor={...}, pdftitle={...}} : votre nom apparaît alors tel quel dans pdfinfo. Lancer pdfinfo anon.pdf et regarder le champ Author: avant de soumettre suffit à l'éviter.

terminal
$ pdfinfo anon.pdf | head -6
Title:
Subject:
Keywords:
Author:
Creator:         LaTeX with hyperref
Producer:        pdfTeX-1.40.26

# strip your own margin notes out of the source you upload
latexpand main.tex > anon.tex      # comments removed by default

Les fichiers de classe des sociétés savantes embarquent souvent leur propre mode anonyme — l'acmart de l'ACM, par exemple, déclare anonymous comme option de classe (définie comme clé booléenne dans le fichier de classe ; activée, elle journalise Using anonymous mode). Quand il en existe un, servez-vous-en : la classe s'occupe non seulement du bloc d'auteurs mais aussi des remerciements, des numéros de financement et du traitement de \thanks. S'il faut anonymiser à la main, n'oubliez ni les remerciements, ni les numéros de subvention, ni les auto-citations (« dans nos travaux antérieurs [12] »), ni le logo de l'institution incrusté dans une figure. Ce que pdffonts et pdfinfo ne trouvent pas ne se trouve, en définitive, qu'en relisant soi-même.

Remise à un imprimeur : traits de coupe, fond perdu, PDF/X

Un imprimeur réclame trois choses qu'une revue ne demande pas : des traits de coupe indiquant où la feuille est rognée, un fond perdu pour que la couleur atteigne proprement le bord, et le plus souvent un fichier PDF/X en CMYK avec polices entièrement incorporées. En composition occidentale, le package crop ajoute les traits (\usepackage[cam,center]{crop}). Les vrais tombow numériques de l'autoédition japonaise sont tracés par gentombow de texjporg, qui applique par défaut un fond perdu de 3 mm et règle les /TrimBox (format fini) et /BleedBox (avec fond perdu) du PDF. L'option de classe tombow des jsclasses ne dessine que des marques « façon tombow » ; pour une remise réelle, associez-la à gentombow. Le fond perdu consiste à prolonger d'environ 3 mm au-delà de la ligne de coupe tout élément touchant le bord, afin qu'un léger décalage de massicot ne laisse pas de filet blanc.

PDF/X (X-1a, X-3, X-4) est l'équivalent impression de PDF/A : il exige des couleurs CMYK (et tons directs), des polices entièrement incorporées, une intention de sortie (profil ICC) pour la presse et des TrimBox/BleedBox correctes (CropBox non définie, ArtBox interdite). Depuis LaTeX, le package pdfx le produit ; \usepackage[x-1a]{pdfx} donne du X-1a, qui n'autorise que le CMYK et les tons directs. La résolution des images vise en général 300 à 350 dpi, et l'espace colorimétrique est celui qu'impose l'imprimeur. Terminez en validant la conformité avec un outil comme veraPDF, et suivez en dernier ressort le cahier des charges de cet imprimeur — respecter la norme ne couvre pas les exigences supplémentaires propres à chaque atelier.

latex
% Western: crop marks from the crop package
\usepackage[cam,center]{crop}

% Japanese self-publishing: jsclasses option plus gentombow for real tombow
\documentclass[tombow]{jsarticle}

% PDF/X-1a output (CMYK and spot colours only)
\usepackage[x-1a]{pdfx}

La liste de contrôle avant envoi

  • Supprimer les fichiers intermédiaires et recompiler à neuf dans un répertoire propre. Un .aux périmé peut masquer un défaut.
  • Compiler une fois avec \listfiles activé et conserver la liste de fichiers en fin de .log. Un fichier .dep issu de snapshot vaut mieux encore.
  • Lancer pdffonts paper.pdf et vérifier que la colonne emb affiche yes partout et que la colonne type n'affiche jamais Type 3.
  • Lire Author: et Title: dans pdfinfo paper.pdf. En double aveugle ils doivent être vides ; vérifier aussi que la version du PDF correspond.
  • Joindre vos propres .sty et .cls ; écarter .aux, .log et .pdf. Joindre le .bbl en alignant son nom sur le .tex principal.
  • Accorder les formats d'images au moteur (.pdf / .png / .jpg pour la voie PDF, .eps pour la voie DVI) et vérifier que les chemins relatifs se résolvent depuis la racine.
  • Si un fichier unique est exigé : latexpand (les commentaires sont retirés par défaut) ; pour livrer l'ensemble : bundledoc --localonly.
  • Pour un imprimeur, confirmer les traits de coupe et environ 3 mm de fond perdu, des TrimBox/BleedBox correctes, et une sortie PDF/X via pdfx.