Como LaTeX es texto plano, encaja muy bien con el control de versiones y la escritura colaborativa. Este capítulo construye un patrón para avanzar un manuscrito entre varias personas sin romperlo: gestionar solo los archivos fuente en Git, convertir las diferencias entre versiones en un PDF con latexdiff y manejar notas o marcas de revisión con todonotes / changes.
Gestionarlo con Git
Como la fuente es texto, los diffs por línea, ramas, merges e historial de Git se aplican directamente (muy distinto de los archivos de documento binarios). Confirma solo la fuente (.tex, .bib, figuras, .latexmkrc, etc.) y excluye con .gitignore todo lo que se regenere al compilar. Consejo de colaboración: escribe una frase por línea; las líneas cortas mantienen los diffs legibles y reducen conflictos al fusionar.
# .gitignore — 生成物を無視 / ignore generated files
*.aux
*.log
*.out
*.toc
*.fls
*.fdb_latexmk
*.synctex.gz
*.bbl
*.blg
*.bcf
*.run.xml
*.idx
*.ilg
*.indConfirmar PDFs depende de cómo los distribuyas. Si necesitas fijar una copia entregada o publicada, está bien gestionarla explícitamente en algo como releases/. Pero confirmar un main.pdf regenerado en cada edición vuelve ilegibles los diffs y engorda el historial. Un flujo práctico es ignorar los PDFs generados en el día a día y adjuntar compilaciones de hitos a tags o Releases.
En colaboración, crea ramas por capítulo o tarea, y limita cada commit a un cambio con significado. Mezclar el reemplazo de una figura grande, limpieza de bibliografía y reescritura del texto en un mismo commit dificulta revisar tanto los PDFs de diff como los diffs de Git. La ventaja de LaTeX es que la prosa puede tratarse como código, así que conserva también el historial con granularidad de código.
latexdiff — marcar las diferencias
latexdiff (de F. Tilmann) compara dos versiones y produce un nuevo .tex con los cambios resaltados. Al compilarlo, el texto añadido aparece subrayado (en color) y el eliminado tachado, como la vista de control de cambios de un procesador de texto. Todos los comandos de marcado que inserta empiezan con \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 revisionPara documentos divididos con \input/\include, añade --flatten para fusionarlos antes de comparar. Con latexdiff-vc y --git (o --svn, --hg), puedes hacer el diff directamente contra una revisión específica del control de versiones.
todonotes — dejar notas y TODOs
El paquete todonotes sirve para dejar notas de trabajo en el manuscrito. \todo{...} coloca una llamada de color en el margen (\todo[inline]{...} la coloca en el texto), \missingfigure{...} inserta un marcador para una figura que aún no has dibujado y \listoftodos reúne todos los TODO en una lista. Para la versión final, \usepackage[disable]{todonotes} los oculta todos.
\usepackage{todonotes}
...
\todo{ここは要出典}
\missingfigure{回路図を後で追加}
\listoftodoschanges — ediciones atribuidas por autor
Para revisión y marcado de coautores, el paquete changes es práctico. Usa \added{...}, \deleted{...}, \replaced{new}{old} y \comment{...} para marcar ediciones explícitamente, con un color por autor. La opción draft muestra el marcado, el modo final lo oculta y \listofchanges resume cada edición, como un control de cambios incrustado directamente en la fuente.
\usepackage[draft]{changes}
...
\added[id=AB]{新しく加えた一文。}
\replaced[id=AB]{改訂後}{改訂前}Antes de cambiar a la versión final
- Configura
todonotescomodisableychangescomofinal, y confirma que no queden TODOs ni marcado en el PDF. - Mantén el
.texgenerado porlatexdiffcon un nombre separado; no lo mezcles con la fuente principal del manuscrito. - Antes de producir el PDF de entrega, limpia archivos generados con algo como
latexmk -Cy verifica una clean rebuild. - Al enviar archivos a coautores, separa el paquete fuente, el PDF de diff y el PDF final, e indica cuál necesita revisión.
Cómo encajan
- Historial, reparto del trabajo y merges →
Git(ignora archivos generados; una frase por línea). - Mostrar qué cambió desde la versión anterior →
latexdiff(--flattenpara documentos divididos). - Tus TODOs y partes inacabadas →
todonotes(disablepara la versión final). - Marcado de coautores y aceptar/rechazar →
changes(draftfrente a final).