Colaboración y seguimiento de cambios

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.

terminal
# .gitignore — 生成物を無視 / ignore generated files
*.aux
*.log
*.out
*.toc
*.fls
*.fdb_latexmk
*.synctex.gz
*.bbl
*.blg
*.bcf
*.run.xml
*.idx
*.ilg
*.ind

Confirmar 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.

terminal
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 revision

Para 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.

latex
\usepackage{todonotes}
...
\todo{ここは要出典}
\missingfigure{回路図を後で追加}
\listoftodos

changes — 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.

latex
\usepackage[draft]{changes}
...
\added[id=AB]{新しく加えた一文。}
\replaced[id=AB]{改訂後}{改訂前}

Antes de cambiar a la versión final

  • Configura todonotes como disable y changes como final, y confirma que no queden TODOs ni marcado en el PDF.
  • Mantén el .tex generado por latexdiff con 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 -C y 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 mergesGit (ignora archivos generados; una frase por línea).
  • Mostrar qué cambió desde la versión anteriorlatexdiff (--flatten para documentos divididos).
  • Tus TODOs y partes inacabadastodonotes (disable para la versión final).
  • Marcado de coautores y aceptar/rechazarchanges (draft frente a final).