?

Log in

No account? Create an account

Previous Entry | Next Entry

Есть такая легенда: сделанные в TeXе документы на всех машинах выглядят абсолютно одинаково (с точностью до 1sp, т.е. примерно 50 ангстрем). Я сам эту легенду повторяю. И она в общем верна. Тем интереснее было напороться "весомо, грубо, зримо" на опровержение.

Делал я слайды для одной презентации. Да, я тоже читал Tufte и знаю, что Слайды - Это Плохо. Но тут Было Надо, и я в конце концов умею их делать так, чтобы они не мешали, а помогали изложению. Работать приходится на разных компьютерах: то дома, то на одной работе, то на другой. Ну, техника у меня отработана: стоит CVS репозиторий, на каждой машине делаю cvs update, пишу слайды, а затем make, просмотр и cvs commit. На презентационном лаптопе делаю cvs update, потом make - и готовы слайды. Настолько привычно, что уже не проверяю, что получилось на лаптопе. Зря не проверяю, как выяснилось.

Прихожу я на презентацию, включаю лаптоп - батюшки, у меня всё на экране вниз поползло, миллиметров этак на 5. А у слайдов рамочки (нет, это не мой дизайн - Так Было Надо), и эти сползшие миллиметры видны очень наглядно. Так что пока предыдущий оратор трындел, я лихорадочно поправлял \margins в файле и делал make.

Расследование проводилось стандартным образом: ставишь в файл \listfiles и смотришь на разницу на двух машинах. Результат:

diff filelist1 filelist2
46,48c46,48
< texpower.sty    2003/05/15 v0.0.9d Create Dynamic Presentations with LaTeX.
< /etc/texpower/tpoptions.cfg
< /etc/texpower/tpsettings.cfg
---
> texpower.sty    2004/07/27 v0.1b Create Dynamic Presentations with LaTeX.
> tpoptions.cfg
> tpsettings.cfg
Разные версии texpower.sty на лаптопе и остальных машинах.

Самое обидное, что мне реально этот texpower не нужен: я им давно не пользуюсь, и потому за версиями не слежу. Видно, эффект был и раньше, но так как у меня рамочек не было, я этого не замечал. А тут другой дизайн, и всё полезло наружу.

Выкинул на фиг texpower, и слайды стали одинаковы. С точностью до 50 ангстрем :)

Comments

( 20 comments — Leave a comment )
xgrbml
Feb. 23rd, 2006 07:51 am (UTC)
А чем же это опровергает легенду? У Вас же получились раазные dvi-файлы (из-ща того, что подключались разные стилевые файлы). Вот если бы из одного и того же исходника (с одними и теми же стилевыми и вообще \input'ываемыми) файлам получились разные dvi, или из одного и того же dvi --- две разные вещи на печати...
tobotras
Feb. 23rd, 2006 09:15 am (UTC)
Не опровергает, мысль в том, что расслабляться не надо :)
scholar_vit
Feb. 23rd, 2006 05:31 pm (UTC)
А том, что расслабляться не надо, сказал ещё Кнут: Beware of bugs in the above code; I have only proved it correct, not tried it.
scholar_vit
Feb. 23rd, 2006 05:29 pm (UTC)
Тем, что утверждение надо формулировать аккуратно: одинаков результат компиляции двух файлов, ЕСЛИ однаковы форматы (.fmt), все подключаемые файлы и метрики всех шрифтов (одно время то ли RedHat, то ли Slackware прославился включением в дистрибутив контрафактных шрифтов с "исправленными" метриками). Но тогда возникает филосфский вопрос: а что такое "одинаковые документы на разных компьютерах"? Ведь так можно сказать, что и выдача какого-нибудь MS Word одинакова, ЕСЛИ одинаковы все драйвера, накатаны одни и те же патчи и у обоих операторов компьютеров один и тот же цвет глаз.

Да, а результат у меня не dvi, а pdf. Интересно, какова точность PDF и PS?
mochalkina
Feb. 23rd, 2006 05:40 pm (UTC)
уууу... я буду думать эти мысли.
xgrbml
Feb. 23rd, 2006 09:20 pm (UTC)
Ну, с TeX'ом этих "если" куда как меньше, все-таки. И от цвета глаз оператора уж точно не зависит:)

Хотя, конечно, это чудо, что система до сих пор жива.
scholar_vit
Feb. 23rd, 2006 11:45 pm (UTC)
Я понимаю, что TeX на много порядков стабильнее того же MS Worda. Я просто поправил абсолютные утверждения, которые на деле относительны.
p_govorun
Feb. 23rd, 2006 11:39 am (UTC)
TEXовский engine делал Дональд Кнут. Все чудеса, которыми славен TEX, находятся именно там. А прочие обёртки делались, хотя и качественно, но обычными людьми :-) Там всяко может быть.
scholar_vit
Feb. 23rd, 2006 05:38 pm (UTC)
Кстати, Кнутовским TeXом, строго говоря, мало кто пользуется. Даже если формат plain, а не какой-нибудь conTeXt или LaTeX. Дело в том, что всё больше людей хотят pdf, а не dvi, так что компилируют всё pdfTeXом, а это уже не совсем TeX (хотя trip test вроде выдерживает, но код там другой). Я хотел написать, что я как раз из последних могикан: так как я использую pstricks, мой Makefile прогоняет файл через обычный TeX, извлекает рисунки, и уже их добавляет в прогон pdfTeXа. Но потом понял, что этот "обычный TeX" уже давно eTeX :)
p_govorun
Feb. 23rd, 2006 06:07 pm (UTC)
Действительно, я как-то об этом не думал. Что ж, значит код Кнута прожил полноценной жизнью 30 лет (или сколько там ему?). Рекорд, между прочим. :-)
scholar_vit
Feb. 23rd, 2006 06:33 pm (UTC)
Ну, куски кода остались во всех последующих имплементациях. А алгоритмы - тем более.

А что до рекорда - когда я пришёл в Годдардовский центр, там мне досталась поначалу программа ещё на фортране, которая орбиты спутников и видимые ими участки Земли считала. Судя по датам в коде, бОльшая часть процедур была написана задолго до моего рождения. Я полагаю, для расчета орбит американских и советских спутников-шпионов. Забавное ощущение, когда это читаешь.
p_govorun
Feb. 23rd, 2006 06:52 pm (UTC)
Да, я слышал, что такие древности попадаются. Но кнутовский TEX живёт до сих пор не потому, что у всех руки не доходят, а потому, что он в замене не нуждается. Удивительная вещь!
scholar_vit
Feb. 23rd, 2006 07:20 pm (UTC)
Я очень уважаю Кнута. Я очень люблю TeX. Я думаю, что я разбираюсь в TeXe. Поэтому я могу Вам сказать: не надо творить себе кумира. Кнут - последний великий программист на ассемблере, и это очень сказывается.

Увы, очень многое в TeXе нуждается в замене. Скажем, алгоритм разбиения на страницы, в отличие от алгоритма разбиения на строки, локальный. Это значит, что если разбиение на страницы в районе стр. 236 улучшится при слегка ином разбиении на страницы в районе стр. 120, сделать ничего нельзя: когда мы дошли до страницы 236, страница 120 уже готова и shipped out. Это было разумным решением в те времена, когда компьютеры были поменьше, но сейчас это уже анахронизм. И эта локальность реально мешает: спросите у Дэвида Каструпа, который написал пакет для критических изданий (где надо несколько слоёв примечаний), какие танцы на льду ему пришлось из-за этой локальности танцевать. Он много Вам расскажет про безумный механизм \insert.

Фишка в том, что TeX написан монолитно, с глобальными именами и сложной зависимостью компонент. Да, в те времена все писали так; кстати, сам Кнут принял идеи Дейкстры довольно настороженно. Но сейчас поменять кусочек чудовищно сложно вытащишь кирпичик, и здание начинает разваливаться. Тот факт, что это здание очень красиво, увы, не помогает. Кнут построил собор, а не вокзал; но людям нужнее вокзалы.

Попытки сделать замену были, и не раз. Увы, проект NTS, по-видимому, окончательно умер. Ну не получается у нас писать как у Кнута :(. Впрочем, e-TeX работает, pdfTeX тоже и есть надежда, что Омега станет, наконец, работоспособной. Так что замены нет не потому, что она не нужна, а потому что её сделать безумно сложно: Кнут всё-таки гений.
p_govorun
Feb. 23rd, 2006 07:43 pm (UTC)
Да я согласен. Уже то, что latex приходится запускать дважды, потому что TeX обрабатывает текст как поток -- атавизм. И совершенно неудобоваримые сообщения latexа об ошибках, возникающие из-за того что движок ничего не знает о latexовской разметке, и тупо обрабатывает макросы. И кириллица, выдаваемая в сообщениях об ошибках во внутренней кодировке (которая более менее сходит за CP1251, но совершенно нечитаема на машине, где koi8-r).

Но храм красив :-)
scholar_vit
Feb. 23rd, 2006 09:38 pm (UTC)
Да
saaska
Mar. 12th, 2006 01:46 pm (UTC)
Омега
А можно поподробнее про Омегу? Концепция у нее симпатичная. Вы говорите, есть надежда, а последние обновления на CTANе датируются чуть ли не 1999 годом, и на собственном ее сайте тоже какая-то мертвая тишь. Как она поживает? Вы ее в деле пробовали? Если да, поделитесь, пожалуйста, впечатлениями.
scholar_vit
Mar. 12th, 2006 10:34 pm (UTC)
Re: Омега
Я сам не пробовал, но в TUGboat регулярно статейки тех, кто пробовал :)
Вот несколько наугад: http://www.tug.org/TUGboat/Articles/tb24-2/tb77adams.pdf, http://www.tug.org/TUGboat/Articles/tb24-3/bella.pdf, http://www.tug.org/TUGboat/Articles/tb17-2/tb51omeg.pdf, http://www.tug.org/TUGboat/Articles/tb23-1/haralambous.pdf
oblomov_jerusal
Mar. 10th, 2006 08:46 am (UTC)
Если нужен pdf то можно использовать dvips и ps2pdf.
p_govorun
Mar. 10th, 2006 09:14 am (UTC)
Можно. Я и не говорю, что код TEX вышел из употребления. Просто начинают появляться обходные пути.
scholar_vit
Mar. 10th, 2006 01:49 pm (UTC)
Больше того, если используется пакет pstricks, то это приходится делать всегда. Вот как выглядит фрагмент моего Makefile, где я предполагаю, что используется pstricks и ps4pdf:

%.pdf: %.tex %-pics.pdf
$(RM) $*.toc
pdflatex $*
- bibtex $*
while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log || \
grep -q '^Package pdfscreen Warning: TOC file not available' $*.log ||\
grep -q '^Package natbib Warning: Citation(s) may have changed' $*.log \
) \
do pdflatex $*; done


%-pics.pdf: %-pics.ps
ps2pdf $<

%-pics.ps: %.dvi
dvips -Ppdf -o $@ $<

%.dvi: %.tex
latex $<

Но дело в том, что TeX тут не кнутовский, а eTeX. А это не совсем TeX.

LaTeX project уже официально объявил о переходе на eTeX в качестве главного движка. TeXlive тоже. Основные дистрибутивы следуют этой политике, и скоро eTeX будет почти везде.
( 20 comments — Leave a comment )

Profile

knot
scholar_vit
scholar_vit

Latest Month

August 2017
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Tags

Powered by LiveJournal.com
Designed by Paulina Bozek