June 7, 2010

Совместная работа над документами LaTeX

Когда вы сидите и тихо работаете над своей задачей - всё хорошо и здорово. Ровно до тех пор, пока не возникнет необходимость в совместной работе над статьёй, отчётом или другим крупным документом в LaTeX. Особенно этот процесс становится захватывающим при использовании разных кодировок и операционных систем. Но обо всём по порядку.


Совместная работа над документами LaTeX
Для того, чтобы взять под контроль процесс правок при совместной работе, перво-наперво нужно выбрать систему контроля ревизий - пусть это будет Subversion, хотя может быть и Git, и Mercurial, и подставьте_сюда_вашу_любимую_VCS. На мой взгляд, централизованные системы здесь предпочтительнее (всегда знаешь, где последняя ревизия), но это лишь моё личное скромное мнение.

Как бы там ни было, без системы контроля версий обойтись в этом процессе будет невозможно. О том, как быстро и просто установить SVN, уже написано. Использовать Subversion тоже совсем несложно, но, как и ранее, работать можно с любой VCS - я лишь привожу это в качестве примера.

Более того, отследить ревизию документа при обсуждении печатных версий так же проще с использованием систем контроля версий: в LaTeX можно вставлять результаты выполнения скриптов. Например, для того, чтобы в печатный вариант документа вставлялась информация о ревизии документа, можно использовать несложный скрипт на Python.



Правки и комментарии в документах LaTeX
Приведу свои результаты проб и ошибок в деле коллективной работы над латеховскими документами. Вот тут, кстати, начинаешь немного тосковать по Word и OpenOffice.Writer, в которых есть встроенные средства для коллективной работы (правки, исправления, пометки, заметки на полях). Некое подобие этого я реализовал в LaTeX и с некоторым успехом применял для правок дипломов у своих студентов.

1. Дробление документов
С одним большим документом работать просто невозможно и жутко неудобно - так что главы дипломов, отчётов и крупных монографий лучше разделить на файлы и вставлять директивой \input. Это облегчит работу и системе контроля версий при обновлении рабочих копий - чтобы правки были неперекрывающиеся.

2. Зачёркивания и пометки цветом
Чтобы иметь возможность зачеркивать слова в LaTeX, включаем в преамбуле документа пакет ulem:

\usepackage{ulem}

И далее в тексте для зачёркивания используем команду \sout{чтобы зачёркивать текст}.

И далее в тексте для зачёркивания используем команду чтобы зачёркивать текст.

Альтернатива пакету ulem - пакет soul, где для зачёркивания используется команда \st{зачеркнуть это}.
Рядом обычно пишется вопрос или предложение фразы для соавтора - это лучше помечать цветом (при этом лучше сразу договориться, какой цвет выберет каждый соавтор, чтобы потом с ума не сойти). Для выделения цветом в LaTeX можно использовать пакет xcolor, который подключаем в преамбуле:

\usepackage{xcolor}

И далее помечаем в тексте слова \textcolor{red}{красным шрифтом}:

И далее помечаем в тексте слова красным шрифтом

Удобно, когда нужно обратить внимание соавтора на выдающийся ляп :-)


3. Заметки на полях и комментарии в LaTeX
Иногда хочется выразить своё мнение или особо обратить внимания соавтора на что-то - в этом случае стоит использовать заметки на полях. Для этого есть стандартная команда

\marginpar{Замечание соавтору сбоку на полях.}

и этот текст появится сбоку на полях, для лучшей видимости.

Но иногда комментарий длинный или хочется втянуть соавтора в письменную дискуссию - тогда нам придёт на помощь небольшой трюк. Можно определить команду комментирования, и тот текст, который будет в комментарии, не будет виден в откомпилированном документе, но в коде присутствовать будет. Для этого в преамбуле определяем новую команду так:

\newcommand{\comment}[1]{}

и в тексте можно дать волю своим полемическим способностям\comment{, потому как этот текст всё равно не будет виден в откомпилированном LaTeX-документе}.

и в тексте можно дать волю своим полемическим способностям.

Эти в общем-то нехитрые приёмы, часть из которых со временем выветривается из моей просторной головы, помогают поддерживать адекватный уровень совместной работы.

Буду рад, если многоуважаемые и ценимые мною товарищи комментаторы насыпят и отгрузят свои приёмы совместной правки LaTeX-документов в открытые на всю ширь комментарии.


Ссылки по теме
http://sovety.blogspot.com/2007/07/latex.html
http://en.wikibooks.org/wiki/LaTeX/Formatting#Emphasizing_Text
http://www.tex.raleigh.ru/doku.php/faq/typesetting
©