Wenn eine LaTeX-Einreichung scheitert, hat die Ursache meist nichts mit Satz zu tun. Auf dem eigenen Rechner läuft alles durch, der Build bei arXiv fällt um. Die Redaktion schreibt zurück, die Schriften seien nicht eingebettet. Die Druckerei schickt die Datei mangels Schnittmarken und Beschnitt postwendend zurück. Nichts davon betrifft die Qualität des Textes; man ist schlicht an die Regeln geraten, die die Gegenseite für die automatische Verarbeitung braucht. Diese Seite geht der Reihe nach durch, was sich vor dem Absenden selbst prüfen lässt: die schriftlich festgehaltenen Anforderungen von arXiv, das Paketverzeichnis aus \listfiles, die Kontrolle der Schrifteinbettung mit pdffonts, das Zusammenfassen eines Manuskripts mit latexpand, arlatex und bundledoc, die Anonymisierung für die doppelblinde Begutachtung und PDF/X für die Druckerei.
Was bei einer LaTeX-Einreichung an arXiv mitgeschickt wird
Eingereicht wird der Quelltext, nicht ein PDF. arXiv übersetzt die empfangene .tex auf der eigenen TeX-Live-Installation neu; hochgeladen wird also „ein Satz Dateien, der dort durchläuft“. Die Einreichungshilfe von arXiv ist in mehreren Punkten eindeutig. Zu einer Datei foo.tex gehören die Hilfsdateien foo.aux, foo.log, foo.toc, foo.lot, foo.lof, foo.dvi, foo.pdf nicht ins Paket. Index-Dateien (.ind) und verarbeitete BibTeX-Dateien (.bbl) bilden die Ausnahme und sollen mit; überdies muss der Name der .bbl dem der Haupt-.tex entsprechen, sonst werden die Literaturangaben nicht verarbeitet. Und: Es werden keine Pakete jenseits dessen bereitgestellt, was das TeX-Live-System mitbringt – die hauseigene Klassendatei einer Fachgesellschaft oder eine von Ihnen veränderte Stildatei muss also mitreisen.
| Datei | Mitschicken? | Grund |
|---|---|---|
.tex | ja | der Quelltext selbst; der Build läuft stets aus dem Wurzelverzeichnis der Einreichung |
.bbl | ja | ausdrückliche Ausnahme; der Name muss zur Haupt-.tex passen |
.ind | ja | die Indexdatei ist dieselbe Art Ausnahme wie .bbl |
.sty / .cls | nur wenn selbst gemacht oder verändert | was nicht in TeX Live steckt, wird dort nicht gefunden |
.aux / .log / .toc | nein | werden beim Neubau erzeugt und dürfen nicht mit |
.pdf / .dvi | nein | die Ausgabe selbst – nicht zu verwechseln mit einem PDF als Abbildung |
Auch die Abbildungsformate hängen an der Engine. Die arXiv-Hilfe trennt das klar: plain TeX und LaTeX im DVI-Modus nehmen ausschließlich PostScript (.ps oder .eps), LaTeX im PDF-Modus nimmt .pdf, .png und .jpg – und sie sagt ausdrücklich, dass arXiv während der TeX-Verarbeitung keine Konvertierung von Abbildungsdateien „on the fly“ vornimmt. Wer .eps und .pdf mischt, dessen Build fällt um. Und noch etwas: Die Übersetzung läuft immer aus dem Wurzelverzeichnis der Einreichung; liegt die Hauptdatei in einem Unterverzeichnis, muss ein relativer Pfad wie \includegraphics{figs/plot} von der Wurzel aus stimmen. Absolute Pfade funktionieren nicht.
Die üblichen Gründe, warum die automatische Verarbeitung scheitert
Die meisten Fehlschläge lassen sich auf Dateinamen, Pfade und etwas Vergessenes zurückführen. arXiv veröffentlicht eine Liste häufiger Fehler, die die automatische Verarbeitung scheitern lassen, und was dort steht, sind fast durchweg Einzeiler. Man hat eine eigene Stil- oder Makrodatei geschrieben (oder eine Standarddatei verändert) und vergessen, sie beizulegen. Man hat einen absoluten Pfad verwendet, wo ein relativer nötig war. Man hat ein Leerzeichen oder Sonderzeichen im Dateinamen – beim Hochladen wird es in einen Unterstrich verwandelt, sodass \includegraphics{my figure} im Moment der Einreichung sein Ziel verliert. Die .bbl stammt von einer BibLaTeX-Version, die nicht zum TeX Live von arXiv passt. Es wird noch eine alte dvips-Stildatei wie epsbox.sty geladen. Die Abbildungsformate sind gemischt. Und in einer Bildunterschrift steht ein ungeschütztes Makro – dort gehört \protect\cite{} hin.
Allen diesen Fällen ist gemeinsam, dass irgendwo eine Annahme überlebt hat, die nur auf dem eigenen Rechner gilt. Die wirksamste Gegenmaßnahme ist deshalb kein Werkzeug, sondern ein Vorgehen: ein frisches Verzeichnis anlegen, ausschließlich die Dateien hineinkopieren, die tatsächlich weggehen sollen, und prüfen, ob der Build ohne jede Zwischendatei von Grund auf durchläuft. Dieser eine Schritt legt die meisten absoluten Pfade, die meisten vergessenen Beilagen und die meisten Builds offen, die nur dank einer alten .aux funktionierten. Eine kurz vor Abgabe eingefügte Änderung ungetestet zu verschicken, ist übrigens ein weiterer Fehler, den arXiv ausdrücklich benennt.
# 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.pdfFesthalten, womit gesetzt wurde: \listfiles
Eine einzige Zeile \listfiles vor \documentclass genügt, und am Ende des .log steht jede geladene Datei mit ihrer Version. Der Anfang eines tatsächlichen Laufs lautet: 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. Die Liste umfasst Dutzende Zeilen und macht „bricht nur auf deren Rechner“ ungleich leichter eingrenzbar. Wenn ein halbes Jahr später die Redaktion schreibt, sie könne nichts nachvollziehen, ist eine solche Versionstabelle im Protokoll der entscheidende Unterschied.
*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
***********Wer es strenger will, nimmt das Paket snapshot. \usepackage{snapshot} ergänzen, übersetzen – und neben der .tex liegt eine .dep-Datei, deren Inhalt eine Erklärung zur Reproduktion des Builds ist: \RequireVersions{ ... } mit Einträgen wie *{application}{pdfTeX} {0000/00/00 v1.40.26}, *{format} {LaTeX2e} {2023-11-01 v2.e} und *{class} {article} {2023/05/17 v1.4n} – Engine, Format, Klasse und sämtliche Pakete in maschinenlesbarer Form. Dieselbe .dep-Datei ist im nächsten Abschnitt die Eingabe für bundledoc.
Schrifteinbettung mit pdffonts prüfen – warum Type 3 abgelehnt wird
Ein Befehl genügt: pdffonts paper.pdf. Dieses Werkzeug aus poppler listet jede vom PDF verwendete Schrift in einer eigenen Zeile auf, mit ihrem type (Type 1, Type 3, TrueType und so fort), ob sie eingebettet ist (emb), ob sie als Teilmenge vorliegt (sub) und ob sie eine Unicode-Zuordnung trägt (uni). Für die direkte PDF-Einreichung hält arXiv fest, man könne „PDF-Einreichungen wegen nicht standardisierter, nicht eingebetteter Schriften ablehnen“, und verlangt, dass „Outline-Schriften (TrueType/Type1) statt Bitmap-Schriften (Type3)“ verwendet werden. Die Produktionsvorgaben der Zeitschriften lauten kaum anders. Die Bestehensbedingung ist damit schlicht: In der Spalte emb muss überall yes stehen, und in der Spalte type nirgends Type 3.
$ 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 0Die zweite Auflistung oben zeigt das Tückischste an der Sache: Auch eine Type-3-Schrift steht auf emb yes. Die Bitmaps sind tatsächlich im PDF eingebettet, die Frage „Sind alle Schriften eingebettet?“ lässt sich also mit gutem Gewissen bejahen. Der Unterschied steht rechts, in der Spalte uni, und lautet no: Ohne Unicode-Zuordnung lässt sich in diesem PDF weder suchen noch etwas herauskopieren. Das erste Symptom ist meist ein Gutachter, der ein Wort im Text nicht finden kann. In pdfTeX lässt sich dieser Zustand absichtlich herbeiführen, indem man die Schriftzuordnung mit \pdfmapfile{} leert – anders gesagt: Eine kaputte Font-Map-Konfiguration oder eine eingeklebte Abbildung aus einem alten Zeichenprogramm, das Type 3 ausgibt, erledigt das kommentarlos für Sie.
Auch die PDF-Version kann Teil der Anforderungen sein. pdfTeX in TeX Live 2024 schreibt standardmäßig PDF 1.5, nachzulesen im Feld PDF version: von pdfinfo. Um eine vorgegebene Version zu treffen, setzt man das pdfTeX-Primitiv \pdfminorversion=7 ganz an den Anfang der Präambel oder schreibt mit aktuellem LaTeX \DocumentMetadata{pdfversion=1.7} vor \documentclass. Gemessen ergeben beide PDF version: 1.7. Die Erzeugung von PDF/A selbst gehört auf eine andere Seite; siehe den Verweis unten.
Ein aufgeteiltes Manuskript zusammenführen: latexpand, arlatex, bundledoc
Ein Manuskript mit einem \input je Kapitel schreibt sich angenehm, doch Einreichungssysteme wollen häufig eine einzige .tex. TeX Live bringt drei Werkzeuge mit drei verschiedenen Zielen mit. latexpand main.tex > flat.tex expandiert \input und \include zu einer flachen .tex. arlatex --document=paper.tex intro.tex --outfile=selfcontained.tex legt die Hilfsdateien in eine einzige .tex, indem es jede in eine filecontents*-Umgebung packt – im tatsächlichen Lauf ließ sich diese Ausgabe unverändert mit pdflatex übersetzen. Und bundledoc liest die von snapshot erzeugte .dep-Datei und schnürt den gesamten benötigten Dateisatz zu einem tar.gz.
# 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.texEin Verhalten ist hier auch für die Anonymität wichtig. latexpand entfernt Kommentare standardmäßig. Das Handbuch hält fest, dass standardmäßig eine einzelne LaTeX-Datei ohne Kommentare ausgegeben wird; wer sie behalten will, muss --keep-comments ausdrücklich angeben. Umgedreht sagt das etwas Unangenehmes: Wer eine rohe .tex verschickt, verschickt auch jede private Notiz hinter einem %. Vermerke der Art „dieser Absatz zielt auf Gutachter 2“ landen tatsächlich in eingereichten Dateien. bundledoc folgt mit --localonly demselben Instinkt: Es schließt alles aus, was aus TeX Live stammt, und packt nur, was Sie selbst geschrieben haben – genau der Zuschnitt der arXiv-Regel, wonach Standardpakete nicht beigelegt werden müssen, eigene Dateien aber sehr wohl.
Anonymisieren für die doppelblinde Begutachtung: Metadaten und Kommentare
Den Autornamen aus dem Text zu löschen genügt nicht. PDF-Metadaten und Quelltextkommentare sind zwei getrennte Prüfungen. Gemessen: \title und \author sickern von sich aus nicht in die PDF-Metadaten – pdfinfo meldete Title: und Author: als leer, eingetragen waren nur Creator: LaTeX with hyperref, Producer: pdfTeX-1.40.26 und die Zeitstempel. Das Leck entsteht, wenn man (oder eine Vorlage) \hypersetup{pdfauthor={...}, pdftitle={...}} schreibt; dann steht der Klarname wörtlich in pdfinfo. Ein pdfinfo anon.pdf und ein Blick auf das Feld Author: vor der Einreichung verhindern das.
$ 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 defaultKlassendateien von Fachgesellschaften bringen oft einen eigenen anonymen Modus mit – acmart der ACM etwa deklariert anonymous als Klassenoption (im Klassenfile als boolescher Schlüssel definiert; eingeschaltet meldet es Using anonymous mode). Wo es einen gibt, sollte man ihn nutzen: Die Klasse kümmert sich nicht nur um den Autorenblock, sondern auch um Danksagungen, Fördernummern und den Umgang mit \thanks. Wer von Hand anonymisieren muss, vergesse Danksagungen, Fördernummern, Selbstzitate („in unserer früheren Arbeit [12]“) und das in eine Abbildung eingebrannte Institutslogo nicht. Was pdffonts und pdfinfo nicht finden, findet am Ende nur das eigene erneute Lesen.
Abgabe an eine Druckerei: Schnittmarken, Beschnitt, PDF/X
Eine Druckerei will drei Dinge, die eine Zeitschrift nicht verlangt: Schnittmarken, die zeigen, wo der Bogen beschnitten wird, Beschnitt (Bleed), damit Farbe sauber bis an den Rand reicht, und meist eine PDF/X-Datei in CMYK mit vollständig eingebetteten Schriften. Im westlichen Satz fügt das Paket crop die Marken hinzu (\usepackage[cam,center]{crop}). Die korrekten digitalen Tombow des japanischen Selbstverlags zeichnet gentombow von texjporg; es nimmt standardmäßig 3 mm Beschnitt und setzt im PDF /TrimBox (Endformat) und /BleedBox (inklusive Beschnitt). Die Klassenoption tombow der jsclasses zeichnet nur tombow-ähnliche Marken; für eine echte Abgabe gehört gentombow dazu. Beschnitt heißt, randabfallende Gestaltung rund 3 mm über die Schnittlinie hinaus zu verlängern, damit kleine Schneidetoleranzen keine weißen Blitzer hinterlassen.
PDF/X (X-1a, X-3, X-4) ist das Druck-Gegenstück zu PDF/A: Verlangt werden CMYK- und Schmuckfarben, vollständig eingebettete Schriften, ein Output Intent (ICC-Profil) für die Druckmaschine und korrekte TrimBox/BleedBox (CropBox nicht gesetzt, ArtBox verboten). Aus LaTeX heraus erzeugt das Paket pdfx solche Dateien; \usepackage[x-1a]{pdfx} liefert X-1a, das nur CMYK und Schmuckfarben zulässt. Bildauflösungen zielen im Allgemeinen auf 300–350 dpi, der Farbraum richtet sich nach der Vorgabe der Druckerei. Zum Abschluss die Konformität mit einem Werkzeug wie veraPDF prüfen und am Ende die Abgabespezifikation eben dieser Druckerei befolgen – die Norm zu erfüllen deckt die zusätzlichen Anforderungen jedes Betriebs nicht ab.
% 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}Die Checkliste vor dem Absenden
- Die Zwischendateien löschen und in einem sauberen Verzeichnis von Grund auf neu übersetzen. Eine alte
.auxkann einen Fehler verdecken. - Einmal mit aktiviertem
\listfilesübersetzen und die Dateiliste vom Ende des.logaufbewahren. Eine.dep-Datei aussnapshotist noch besser. pdffonts paper.pdfausführen und prüfen, dass inembüberallyessteht und intypenirgendsType 3.Author:undTitle:auspdfinfo paper.pdflesen. Bei doppelblinder Begutachtung müssen sie leer sein; auch die geforderte PDF-Version prüfen.- Eigene
.sty- und.cls-Dateien beilegen,.aux,.logund.pdfweglassen. Die.bblbeilegen und ihren Namen an die Haupt-.texangleichen. - Die Abbildungsformate der Engine anpassen (
.pdf/.png/.jpgauf dem PDF-Weg,.epsauf dem DVI-Weg) und prüfen, ob relative Pfade von der Wurzel aus aufgehen. - Ist eine einzelne Datei gefordert:
latexpand(Kommentare werden standardmäßig entfernt); für den ganzen Satz:bundledoc --localonly. - Für die Druckerei Schnittmarken und rund 3 mm Beschnitt, korrekte TrimBox/BleedBox und PDF/X-Ausgabe über
pdfxsicherstellen.