Da LaTeX reiner Text ist, passt es hervorragend zu Versionskontrolle und gemeinschaftlichem Schreiben. Dieses Kapitel entwickelt ein Muster, mit dem ein Manuskript von mehreren Personen vorangebracht werden kann, ohne es zu beschädigen: Nur Quelldateien in Git verwalten, Versionsunterschiede mit latexdiff als PDF darstellen und Notizen oder Review-Markup mit todonotes / changes handhaben.
Mit Git verwalten
Da die Quelle Text ist, greifen Gits zeilenbasierte Diffs, Branches, Merges und Historie direkt (ein großer Unterschied zu binären Dokumentdateien). Committen Sie nur die Quellen (.tex, .bib, Abbildungen, .latexmkrc, …) und schließen Sie alles, was durch Kompilierung neu erzeugt wird, per .gitignore aus. Ein Tipp für Zusammenarbeit: Schreiben Sie einen Satz pro Zeile; kurze Zeilen halten Diffs lesbar und Merges konfliktarm.
# .gitignore — 生成物を無視 / ignore generated files
*.aux
*.log
*.out
*.toc
*.fls
*.fdb_latexmk
*.synctex.gz
*.bbl
*.blg
*.bcf
*.run.xml
*.idx
*.ilg
*.indOb PDFs committed werden, hängt von der Verteilung ab. Wenn eine eingereichte oder veröffentlichte Fassung eingefroren werden soll, kann sie explizit etwa unter releases/ verwaltet werden. Ein bei jeder Änderung neu erzeugtes main.pdf ständig zu committen macht Diffs jedoch unlesbar und bläht die Historie auf. Praktisch ist es, erzeugte PDFs im Alltag zu ignorieren und Meilenstein-Builds an Tags oder Releases anzuhängen.
In der Zusammenarbeit hilft es, pro Kapitel oder Aufgabe zu branchen und jeden Commit auf eine sinnvolle Änderung zu beschränken. Wenn ein großer Abbildungsaustausch, Bibliografie-Aufräumen und Textüberarbeitung in einem Commit vermischt werden, sind sowohl Diff-PDFs als auch Git-Diffs schwerer zu prüfen. Der Vorteil von LaTeX ist, dass Prosa wie Code behandelt werden kann; halten Sie daher auch die Historie in codeähnlicher Granularität.
latexdiff — Unterschiede markieren
latexdiff (von F. Tilmann) vergleicht zwei Versionen und gibt eine neue .tex mit hervorgehobenen Änderungen aus. Beim Kompilieren entsteht ein PDF, in dem hinzugefügter Text unterstrichen (farbig) und gelöschter Text durchgestrichen ist, ähnlich der Änderungsverfolgung in einer Textverarbeitung. Alle eingefügten Markup-Befehle beginnen mit \DIF.
latexdiff --flatten old.tex new.tex > diff.tex # diff.tex をコンパイル / then compile diff.tex
latexdiff-vc --git -r HEAD~3 main.tex # Git の版と比較 / compare against a Git revisionBei Dokumenten, die mit \input/\include aufgeteilt sind, fügen Sie --flatten hinzu, damit sie vor dem Vergleich zusammengeführt werden. Mit latexdiff-vc und --git (oder --svn, --hg) können Sie direkt gegen eine bestimmte Revision in der Versionskontrolle diffen.
todonotes — Notizen und TODOs hinterlassen
Das Paket todonotes dient dazu, Arbeitsnotizen im Manuskript zu hinterlassen. \todo{...} setzt einen farbigen Hinweis an den Rand (\todo[inline]{...} platziert ihn im Text), \missingfigure{...} fügt einen Platzhalter für eine noch nicht gezeichnete Abbildung ein, und \listoftodos sammelt alle TODOs in einer Liste. Für die Endfassung blendet \usepackage[disable]{todonotes} alles aus.
\usepackage{todonotes}
...
\todo{ここは要出典}
\missingfigure{回路図を後で追加}
\listoftodoschanges — Änderungen mit Autorenzuordnung
Für Review- und Mitautor-Markup ist das Paket changes praktisch. Mit \added{...}, \deleted{...}, \replaced{new}{old} und \comment{...} markieren Sie Änderungen ausdrücklich, mit einer Farbe pro Autor. Die Option draft zeigt das Markup, der finale Modus blendet es aus, und \listofchanges fasst jede Änderung zusammen, ähnlich einer Änderungsverfolgung direkt in der Quelle.
\usepackage[draft]{changes}
...
\added[id=AB]{新しく加えた一文。}
\replaced[id=AB]{改訂後}{改訂前}Vor dem Umschalten auf die Endfassung
- Setzen Sie
todonotesaufdisableundchangesauffinal, und prüfen Sie, dass keine TODOs oder Markups im PDF verbleiben. - Bewahren Sie die von
latexdifferzeugte.texunter einem separaten Namen auf; mischen Sie sie nicht in die Hauptquelle des Manuskripts. - Bereinigen Sie vor dem Erzeugen des Abgabe-PDFs die erzeugten Dateien mit etwas wie
latexmk -Cund prüfen Sie einen Clean Rebuild. - Beim Senden an Mitautorinnen und Mitautoren trennen Sie Quellpaket, Diff-PDF und finales PDF und geben an, was geprüft werden soll.
Wie sie zusammenspielen
- Historie, Arbeitsteilung, Merging →
Git(erzeugte Dateien ignorieren; ein Satz pro Zeile). - Zeigen, was sich seit der letzten Version geändert hat →
latexdiff(--flattenfür geteilte Dokumente). - Eigene TODOs und unfertige Stellen →
todonotes(disablefür die Endfassung). - Markup von Mitautorinnen und Mitautoren sowie Annehmen/Ablehnen →
changes(draftvs final).