geekkoo - LaTeX и несознательные редакции [entries|archive|friends|userinfo]
geekkoo

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

LaTeX и несознательные редакции [May. 5th, 2008|08:10 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
Отдельные несознательные редакции не принимают статьи в Латехе и требуют doc или rtf. В первом приближении проблема решается просто - исходный теховский файл конвертируется в rtf с помощью программы latex2rtf, проверяется OO и засылается в редакцию. Траблы начинаются когда редакция присылает правку. Поскольку в несознательных редакциях редакторы, как правило, не могут связно изложить свои замечания в виде отдельного связного текста, то обычно присылают тот же rtf, перечерканный красными репликами редактора. Причём бывает, что правка требуется такого сорта, что необходимо не только добавить пару строк, но и вставить дополнительную поясняющую ссылку. Т.е. как раз та работа, которую лучше всего делать в LaTeX. Но если им просто послать исправленный rtf, конвертированный из исправленного latex-исходника, то редакция начинает возмущаться - Как же так, у нас редакторы уже забыли, какие они замечания вам выставляли, не могли бы вы отредактировать текст, чтобы ваши исправления выделялись красненьким?

Поскольку явсе равно держу исходники в svn-репозитории на https (так удобнее работать с нескольких компьютеров), то почему бы не воспользоваться svn diff?

Т.е. перед первой засылкой в редакцию законченный теховский файл копируется в release. Типа
svn copy ./ https://repo.ru/svn/Articles/tags/Article-1ed
После того как получен от редакции исправленный текст в rtf, он открывается с помощью soffice, и в latex-файл вносится необходимая правка. После этого делается второй release
svn copy ./ https://repo.ru/svn/Articles/tags/Article-2ed
Осталось только сделать svn diff. Однако не всё так просто.

Обычный diff заточен под программистов, для которых минимальный квант текста - это строка. Поэтому работает он построчно. Это не совсем то, что нужно для обычного текста, где сверка должна делаться по словам. К счастью такие инструменты есть -
более старый wdiff - http://ftp.gnu.org/gnu/wdiff/
и более новый dwdiff - http://os.ghalkes.nl/dwdiff.html
Берем последний, по функциональности они примерно одинаковы, но wdiff какой-то очень замшелый. Причем оба они делают не diff, а сплав из старого и нового текста. Но это даже к лучшему.

Потом выясняем, что svn diff позволяет сменить свой внутренний diff на внешнюю команду, но при этом продолжает слать этой внешней команде много неотключаемого мусора, так что ввод и вывод придется фильтровать с помощью такого баш-скрипта svn-tex-diff.sh:

#!/usr/bin/bash
case $1 in
'--second-pass')
echo "%%% $3"
echo "%%% $5"
dwdiff -1 -w "\\color{blue}" -x "\\color{black}" -y "\\color{red}" -z "\\color{black}" $6 $7
;;
*)
svn diff -x '--second-pass' --diff-cmd "./svn-tex-diff.sh" $@ | sed -r -e '1,2{s/.*/%/g}'
esac

Запускается он таким образом
./svn-tex-diff.sh https://repo.ru/svn/Articles/tags/Article-1ed/article.tex https://repo.ru/svn/Articles/tags/Article-2ed/article.tex
и на выходе имеем теховский файл, где весь добавленный текст окружен блоками \color{red} - \color{black}. Если в скрипте у вызова dwdiff убрать ключик -1, то он и удаленный текст будет отмечать - только синим цветом. Не забудьте только в преамбуле добавить \usepackage{color} - latex2rtf, несмотря на свою общую ограниченность, этот пакет правильно интерпретирует, так что на выходе имеем исправленный rtf с добавленным текстом, отмеченным красненьким. Редакция будет в восторге.

Единственный недостаток - если исправления попадают внутрь verbatim окружения (где команды не интерпретируются) или в преамбулу (что приводит к ошибкм latex). Но в остальном метод работает весьма неплохо.
LinkLeave a comment

Comments:
[User Picture]
From:[info]ketmar
Date:May 7th, 2008 - 05:55 pm
(Link)
почему их до сих пор не утопили, если они настолько тупы, что не в состоянии асилить даже LyX?
[User Picture]
From:[info]geekkoo
Date:May 8th, 2008 - 06:54 am
(Link)
Я сам в шоке. Как и от уровня замечаний редактора. Наверное, это действительно как-то связано.
Видимо, считается, что бездельников, которые знают слова типа цветоотделение и умеют быстро и без запинки произносить CMYK, лучше держать в теплом оффисе, где бы они могли делать вид, что работают, чем позволить им шататься по улицам и отнимать мелочь у зазевавшихся прохожих.
Ханс Хаген и http://www.pragma-ade.nl/ - уникальный случай.
[User Picture]
From:[info]ketmar
Date:May 8th, 2008 - 07:01 am
(Link)
собственно, я вообще не понимаю, что может выдавать на-гора издательство, не принимающее TeX. разве что этикетки «ум — 2 рубля» по 8 штук на страницу A4.

зыж а на сайте TeX написано неверно. у меня, впрочем, тоже. %-)
[User Picture]
From:[info]boza
Date:May 11th, 2008 - 11:22 am
(Link)
Знание не только слова "цветоделение" (правильно так), но и знания, что это такое - тоже требует наличия головного мозга. Правда, непонятно, нафига цветоделение для научных статей.
[User Picture]
From:[info]geekkoo
Date:May 11th, 2008 - 01:58 pm
(Link)
Журнал, вообще-то, квази-научный, так сказать. Т.е. он вполне себе глянцевый, и там довольно много иллюстраций, не имеющих непосредственного отношения к тексту. Так что CMYK там, наверное, произносят без запинки. Но в целом дизайн довольно <<однообразный>>. Если бы они верстали его в Контексте, то особых неудобств от этого они бы не испытывали.
[User Picture]
From:[info]geekkoo
Date:May 8th, 2008 - 07:01 am
(Link)
C \color я погорячился. latex2rtf понимает \textcolor{red}{text} но не \color{red}. Решается очевидным патчем - создается функция CmdColor по образцу CmdTextColor (итого три файла надо будет поправить).
Придётся, видимо, патч разработчикам слать...