Совместная работа над документами 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

28 комментариев: |высказаться!| RSS-лента дискуссии.|
Unknown комментирует...

Собственно так и осуществляю контроль всех текстов (программы и диплом) на своих компьютерах после одного случая неудачной синхронизации с ноута который угробил неделю работы :(

Жаль ваша статья раньше не вышла :D

Федір Гонца комментирует...

я хоть и работаю в "одиночестве" но использую Bazaar для контроля версий проекта (группы документов) и в целом удобно. :) для подстраховки еще Dropbox. А за остальное спасибо за подсказки по комментариям.

Анонимный комментирует...

Всё-таки "системы управления версиями", а не "контроля" их. Не надо закреплять ошибку двоечника-переводчика, который перевёл слово "control" "как слышится". Хватит с нас такого же типа выражения "национальная идентичность" :-)

Федір Гонца комментирует...

kostix я прошу прощения за "управление" и "контроль", так же я не "троль", на всякий случай.:)

Portnov комментирует...

Про использование цвета, зачёркивания, заметок на полях итп. для общения соавторов. Я упорно не понимаю, зачем это нужно. Во всех актуальных VCS есть команды diff и blame. Первая показывает, что изменилось, вторая - кто какую строку написал. Если не хочется править собственно текст, всегда можно добавить комментарий (% Перепиши это!).

Анонимный комментирует...

а еще есть \usepackage{rcs}
и программа latexdiff (включающая latexdiff-cvs, latexdiff-rcs, latexdiff-svn)

Анонимный комментирует...

Странно, что про распределённые vcs не написал. Mercurial - наше всё, ящитаю.

virens комментирует...

@Михаил
Собственно так и осуществляю контроль всех текстов (программы и диплом)
Здесь немного не об этом - я просто обобщил здесь свои находки по совместной правке документов. А я сейчас с SVN переполз на Mercurial. К новому году выдам пост, сейчас работы много.

@Федір Гонца
я хоть и работаю в "одиночестве" но использую Bazaar для контроля версий
Всё равно, что использовать. Главное, чтобы была хотя бы одна копия где-то ещё. Google code хорошо для этого подходит.

для подстраховки еще Dropbox.
А это для чего? Можно поподробнее?

@kostix, 07.06.2010 1:55:00
Всё-таки "системы управления версиями", а не "контроля" их.
На мой вкус, так как раз контроля.
В следующий раз напишу управления :-)

@Portnov
Про использование цвета, зачёркивания, заметок на полях итп. для общения соавторов. Я упорно не понимаю, зачем это нужно.
Потому, что часто соавторы в компьютерах откровенные дятлы. :-)
Ну и например где-то в тексте хочется соавтору обратить внимание на что-то и попросить переделать фразу.

Во всех актуальных VCS есть команды diff и blame.
Это не вариант вообще. Вы будете долго искать в абзаце (а у меня динамический перенос строк), где и что изменилось. Выделить цветом - самое оно.

вторая - кто какую строку написал.
Ситуация ещё хуже: например, я использую VCS, а кто-то нет и не хочет.

всегда можно добавить комментарий (% Перепиши это!).
Проходили мы это. Не работает - на комментарии часто не обращаешь внимания и работаешь с текстом в DVI. Надо чтоб было видно, отсюда и заморочки с цветом.


@syslog
а еще есть \usepackage{rcs}
О, надо будет посмотреть. Спасибо!

@Анонимный
Странно, что про распределённые vcs не написал. Mercurial - наше всё, ящитаю.
Пост не о том, но про меркуриал это да, оно моё всё теперь (почти переполз на него). Про меркуриал пост будет не раньше декабря, так что потерпите, товарищи :-)

Федір Гонца комментирует...

(ответ носит шуточный тон)
@virens - вобщем-то любой из "облачных" сервисов (Dropbox, UbuntuOne, SpiderOak, самокупленый у "облака") спасает от преждевременных летальных исходов :)... Был случай, записал файлы на диск (usb-backup) и неблагополучно уронил его на бетонный пол, после чего он уже не читался. Если бы не символьная ссылка из рабочего каталога в каталог любого вышеозначенного сервиса, то 5 лет напряженной научной работы испарились вместе с диском. После этого я как "религиозный параноик" начал делать бекапы во все возможные места (не забывая о класике "hard copy", если позволяет сам характер материала). Так же один раз спасла система контроля версий в самом Dropbox. Самое замечательное в этих сервисах или в настроенных бекапах где угодно - это то, что оно само, делает за тебя твою работу, честно и постоянно, даже если ты забыл сделать commit.
К сожалению сервера личного не имею, да и привязка к одной location не спасает Вас от наводнения или "опа, соседи затопили" :)

p.s.... странно, я не считал себя параноиком, перечитал и понял, надо завести бекап основных органов. Так же никто случайно не знает как "забекапить" деньги? :)

Сергей Любимов комментирует...

Для вставки номера ревизий в svn учть такая вещь как keyword. Для mercurial есть одноименное расширение.

Для всяких todo вставляю в код такую вещь: @todo: Исправь это. Затем скриптом с коммнадой "grep -ni "@todo" `find . -name "*.tex"`" Ищу все todo.

P.S. использую git.

Roman Cheplyaka комментирует...

Когда-то написал такое: http://ro-che.info/docs/dvcs-for-math.html

Тема мне уже давно не интересна, статья сейчас представляет разве что историческую ценность :) но в конце есть дельные ссылки по теме. (Добавил ссылку и на эту статью.)

virens комментирует...

@Федір Гонца
@virens - вобщем-то любой из "облачных" сервисов (Dropbox, UbuntuOne, SpiderOak, самокупленый у "облака") спасает от преждевременных летальных исходов
Аааа, понял. А то сижу в своей глухой деревне и ничего про такое не слышал. Спасибо!

К сожалению сервера личного не имею, да и привязка к одной location не спасает Вас от наводнения
Поэтому я многое стараюсь загрузить в Интернет. И записки в блог в том числе - уж гугловцы-то бекапы делают, правда? :-)

@Сергей Любимов
Для вставки номера ревизий в svn учть такая вещь как keyword. Для mercurial есть одноименное расширение.
Глянем, спасибо.

Для всяких todo вставляю в код такую вещь: @todo:
Не, не айс. Надо соавтору написать, что он где-то неправ и чтоб он это увидел. У меня соавторы такие, что на клавиатуре одним пальцем тексты набирают, а вы им про греп :-)

Roman Cheplyaka, 08.06.2010 0:25:00
Когда-то написал такое
Некоторыми ссылками я оттуда пользовался, кстати.

Тема мне уже давно не интересна
Знания лишними не бывают - никогда не знаешь, когда пригодятся.

Добавил ссылку и на эту статью.
Спасибо.

Minoru комментирует...

>> Во всех актуальных VCS есть команды diff и blame.
> Это не вариант вообще. Вы будете долго искать в абзаце (а у меня динамический перенос строк), где и что изменилось. Выделить цветом - самое оно.

git diff --color-words :) (скриншотик)

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

Слушай, а может, ну их, все эти копирайты и ссылки на автора? Ты же и так бессознательно каждую статью метишь не очень заметным знаком :)

virens комментирует...

@Blogger Minoru

О, редактора в тред! :-)

git diff --color-words :) (скриншотик)
Гит не пройдёт. А скриншотик зачётный.

А ты, virens, не смог-таки избежать традиционного авторского ляпа
Таки настаиваю на авторской орфографии.:-)

Слушай, а может, ну их, все эти копирайты и ссылки на автора?
Нифига. Буду идти до конца и таки анально карать :-)

Хотя я уже устал бороться со всякой школотой, которая тупо копипастит мои статьи и фигачит по умолчанию "автор - Пупкин".

Ты же и так бессознательно каждую статью метишь не очень заметным знаком
Про ссылку на автора? А ты думаешь, её многие видят!? Кстати, Minoru, набери в гугле "Записки дебианщика" и погугли в районе 5-6 ссылки. У меня тут ещё один двойник объявился - я даже потроллил немного в комментариях. А ты говоришь, лицензию сними...

Minoru комментирует...

Последний абзац моего комментария — это шутка по поводу «так же». Типа, зачем ставить копирайты, если эта ошибочка и так явно указывает, что автор статьи — ты? :)

А касательно блога-двойника — что-то я ничего выдающегося не нашёл. Может, ты мне ссылочку скинешь, а?

Minoru комментирует...

Сейчас ещё раз поглядел на скриншот, который запостил ранее — да-а-а, omploader очень красиво прикололся. Короче, розовенькая надпись — это не мой прикол, это таки хостинг веселится. Вот по этой ссылке должно отображаться нормально (на крайняк есть инфо-страничка)

h4tr3d комментирует...

Пакет pdfcomment не пробовал? в TeXLive есть 2009 (за другие не знаю)

h4tr3d комментирует...

(матерясь на отправку комментов в блогпосте)

пакет pdfcomment не пробовал?

Ну и... АдобеАкробатРиадер в своей платной иеркорнации умеет вставлять аннотации в документ, об этом писал Евгений Балдин, когда рассказывал, как у него происходила работа с корретором при подготовке книги "LaTeX - Компьютерная типография". Окулар есть и для винды уже, он может тоже аннотации делать, но сохраняет их во вне, но может (Экспорт) делать "архив" самой PDF и мета-данных, к сожалению непортабельно и работает только в Окулар (на какой платформе - без разницы)

virens комментирует...

@Minoru
Последний абзац моего комментария — это шутка по поводу «так же». Типа, зачем ставить копирайты, если эта ошибочка и так явно указывает, что автор статьи — ты?
Ого, как ты тонко меня троллить начал :-) Но да, я от этой ошибки всё отвязаться не могу...

А касательно блога-двойника — что-то я ничего выдающегося не нашёл.
Это на тебя негуглёж напал? :-) debiannotes точка ру.

Сейчас ещё раз поглядел на скриншот, который запостил ранее — да-а-а, omploader очень красиво прикололся.
На момент просмотра мной, ещё раз прикололся, так что хорош спамить, а то уже тут набежали мерзавцы со своей виагрой и увеличенными членами...

@h4tr3d
Пакет pdfcomment не пробовал?
Хто это?

в TeXLive есть 2009 (за другие не знаю)
Ну так то ж свежак...

(матерясь на отправку комментов в блогпосте)
Не надо. Ко мне нагрянули спамеры, это я от них комменты на проверку закрыл.

Ну и... АдобеАкробатРиадер в своей платной иеркорнации
Ну здрааааааааавстуйте.... :-)
Платный адобридер, да?

умеет вставлять аннотации в документ
Я знаю, пользовался этим, когда статью в Optics Communications отправлял. Удобно.

Окулар есть и для винды уже
Одын мынус: по крайней мере в Ленни оно тащит за собой всё КДЕ, а так же предлагает рекомендованные зависимости в виде pulseaudio и xine-ui (что курят мейнтейнеры!?). Что не радует.

На pdfcomment гляну, спасибо.

Minoru комментирует...

>> А касательно блога-двойника — что-то я ничего выдающегося не нашёл.
> Это на тебя негуглёж напал? :-) debiannotes точка ру.

Сейчас ещё раз погуглил — на первой странице все ссылки уже фиолетовым подсвечены (посещались, тобишь), кроме одной. Не знаю даже, что и сказать…

Странно, что двойник вроде как собственные статьи пишет — хотя многие заголовки почему-то смутно знакомы…

И да, ещё раз извиняюсь за omploader — это они, оказывается, так с хотлинкингом борются. Не смешно и обидно :(

Кстати, по поводу комментаторов-продавцов: а можно как-то заблокировать конкретному пользователю доступ к комментировнанию? А то меня тоже достают потихоньку. Вроде погуглил — ничего не нашёл, но ты же видишь, я сейчас чуток не в ладах с гуглом :)

Alexey B. комментирует...

И все общение через скомпилированный ps/pdf? Неужели так оказалось удобнее, чем, скажем комменты+багтрекер? Я, например, заметил, что смотрю на результат компиляции в последнюю очередь, преимущественно с кодом работаю.

virens комментирует...

@Minoru
Сейчас ещё раз погуглил — на первой странице все ссылки уже фиолетовым подсвечены (посещались, тобишь), кроме одной.
Да ладно, со всеми бывает :-)

Странно, что двойник вроде как собственные статьи пишет
Вроде как. И там в названии многоточие. То есть как кроссовки Абибас и бытовая техника Borsh (Борщ).

И да, ещё раз извиняюсь за omploader — это они, оказывается, так с хотлинкингом борются.
Use google picasa, Luke! :-)

Кстати, по поводу комментаторов-продавцов: а можно как-то заблокировать конкретному пользователю доступ к комментировнанию?
Нет, нельзя. Стукануть в гугл на спам в блогах можно (кстати, закрывают быстро). Мой путь борьбы - предпросмотр комментариев. Да, это не так здорово. Первые 3-4 дня комменты к последнему посту открыты.

Вроде погуглил — ничего не нашёл
Народ тут кстати нагуглил Discuss - это сервис на другом ресурсе, который можно прикрутить к блоггеру. Мне эта идея конкретно не нравится (и она, увы, начала расползаться по блогам): тормозное оно, и часто не удаётся отправить комменты вообще. И потом, картинки на одном сервере, комменты на другом, блог на третьем... Если что-то накроется, поедет весь блог. Пусть лучше оно всё на гугле варится - если уж там что поломается, так уж глобально :-)

@Mr. Cat
И все общение через скомпилированный ps/pdf? Неужели так оказалось удобнее, чем, скажем комменты+багтрекер?
Кэт, ты вообще о чём? Какой багтрекер!? Эти гаврики в МИФИ до сих пор кое-где используют дискеты, набивают отступы в вордовых документах пробелами и корячатся с набором формул в виде символов шрифта Symbol. А как они рисуют диаграммы - это просто мажор в миноре. Да что там говорить - ты просто на сайт МИФИ зайди и пройдись по кафедральным сайтам по ссылкам. После этого приходи обратно и поделись впечатлениями :-)

Я там со своим Дебианом, ЛаТеХом и SVNом смотрелся, как Алиса Селезнёва с миилафоном - гостья из будущего. Причём судя по всему, из очень отдалённого.

Я, например, заметил, что смотрю на результат компиляции в последнюю очередь, преимущественно с кодом работаю.
Ясное дело, я тоже так работаю, но народ требовал PDF (хотя бы) и чтоб там было видно, где и что я правил.

Анонимный комментирует...

по пунктам:
1 отлично
2 отлично
3 использую \begin{comment}texttext\end{comment}
Можно отметить не самое оптимальное использование VCS, но это видимо связано с организацией работы в целом.
Да, я за mercurial.
u995.livejournal.com

Minoru комментирует...

Миш, кат куда-то делся. Или его и не было?..

Анонимный комментирует...

> На мой взгляд, централизованные системы здесь предпочтительнее (всегда знаешь, где последняя ревизия)

пацтулом. зачет! к чему только лень не приводит))

virens комментирует...

@Анонимный
3 использую \begin{comment}texttext\end{comment}
Условия задачи другие БЫЛИ: я один латехник среди вордодятлов и они ничего кроме вёрда и пидиэфа не переваривают.

Можно отметить не самое оптимальное использование VCS
А в чём неоптимальность?

Да, я за mercurial.
Это да, но он не всегда удобен. Я всё жду, пока кого-то осенит гениальная мысль научить kdesvn понимать hg-репы. То, что сейчас есть из графики для просмотра репозитория - это просто убогость какая-то.

@Minoru,
Миш, кат куда-то делся. Или его и не было?..
Лениво. Всё равно один пост отображается...

@Анонимный,
> На мой взгляд, централизованные системы здесь предпочтительнее (всегда знаешь, где последняя ревизия)

пацтулом. зачет! к чему только лень не приводит))

А это как вам будет удобнее. DVCS хорошо применять там, где про них слышал хотя бы кто-нибудь кроме автора. А в России, как обычно, полная дремучесть в технологиях сложнее кувалды, тем более в информационных.

Сирожа комментирует...

Прошу прощения за небольшое опоздание... :) Есть еще один интересный пакет: todonotes. Позволяет добавлять комментарии в стиле Word, и немного больше (например, создавать список тех самых комментариев). К сожалению, нет встроенных функций, ориентированных на нескольких редакторов, но их можно доопределить самостоятельно.

worldmind комментирует...

Относительно неплохой вариант это gitlab (можно свою инсталляцию, можно gitlab.com), каждый участник может вносить правки в форке, а потом отправлять на ревизию автору.
Однако не хватает возможности произвольно комментировать как это легко делается во всяких вордах, я даже им хотелку такую написал
http://feedback.gitlab.com/forums/176466-general/suggestions/9441417-comment-to-any-part-word-line-paragraph-of-any-t
можно голосовать, авось добавят

Отправить комментарий

Подписаться на RSS-ленту комментариев к этому посту.