К вот этому.
В программировании на TeXе есть несколько стадий. На первой ты не можешь написать код вроде такого:
\ifx\r@LastPage\@undefined
\def\@tempa{0}%
\else
\edef\@tempa{\expandafter\@secondoftwo\r@LastPage}%
\fi
\@temptokena=\expandafter{\@tempa}%
\immediate\write\@itcfile{\the\@temptokena}%
На второй стадии ты можешь, но скрипишь зубами. На третьей этот код
тебе кажется простым и логичным.
До четвертой стадии, когда все начинают говорить с тобой тихо и преувеличенно вежливо, а на горизонте маячат люди в белых халатах, я пока не дошел.
no subject
Date: 2008-05-14 03:56 pm (UTC)no subject
Date: 2008-05-14 04:04 pm (UTC)писать методами литературного программирования
Date: 2008-05-14 05:27 pm (UTC)http://community.livejournal.com/ru_perl/249441.html
;)))))))))
Re: писать методами литературного программирования
Date: 2008-05-14 05:30 pm (UTC)no subject
Date: 2008-05-14 04:27 pm (UTC)no subject
Date: 2008-05-14 05:03 pm (UTC)no subject
Date: 2008-05-14 05:20 pm (UTC)Проблему вдов и сирот можно решать двумя способами В грубом варианте мы делаем что-то вроде TeXовского \raggedbottom: мы разрешаем убирать или добавлять последнюю строку на странице. Это особенно хорошо, если есть много постраничных примечаний, которые скрадывают эффект. В более тонком варианте мы изменяем высоты абзацев за счет изменения наполненности строк - см. hz-алгоритм и диссертацию Хан Те Фана (http://www.pragma-ade.com/pdftex/thesis.pdf). У Гутенберга было полсотни вариантов каждой буквы, что позволяло ему вручную варьировать текст, добиваясь ровной наполненности заданного прямоугольника - т.е. свобода в line-breaking позволяет делать разгон БЕЗ изменения межстрочного интервала.
Что касается важности эффекта: во-первых, при наборе текста в две колонки (обычная ситуация для журналов) Вы видите совпадение/несовпадение строк сразу (тут речь идет не о соседних страницах, а о соседних колонках). Во-вторых, требования к печатникам не так уж запредельны. На моей полке стоят (недешевые) хорошо изданные книги, где строки на recto и verso совпадают. Да, это требует культуры печатного дела - ну так эти книги делали хорошие мастера.
no subject
Date: 2008-05-14 05:46 pm (UTC)По первому: я имею в виду изменение самих букв - то, что называется микротипографией. См. работы Запфа и Тан Хе Фана, цитированные выше.
no subject
Date: 2008-05-14 06:25 pm (UTC)no subject
Date: 2008-05-14 06:53 pm (UTC)no subject
Date: 2008-05-14 09:00 pm (UTC)no subject
Date: 2008-05-14 09:17 pm (UTC)texdoc pdftex-l
и там \S 7.3
Тоже самое, в
texdoc microtype
и там \S 3.3
no subject
Date: 2008-05-15 05:24 pm (UTC)no subject
Date: 2008-05-14 05:45 pm (UTC)no subject
Date: 2008-05-14 05:48 pm (UTC)no subject
Date: 2008-05-14 05:18 pm (UTC)no subject
Date: 2008-05-14 05:21 pm (UTC)no subject
Date: 2008-05-14 05:36 pm (UTC)\def\gov{a} \def\@tempa{\gov\gov2\gov3} \@temptokena=\expandafter{\@tempa}% \immediate\write1{\the\@temptokena}% \immediate\write1{\@tempa}%первый \write записывает
\gov \gov 2\gov 3
а второй -
aa2a3
Но если будет
\edef\@tempa{\gov\gov2\gov3}
то в файл пойдет одно и то же.
Да, конечно, в вашем примере \r@LastPage может содержать \noexpand-ы, тогда поведение будет разным (хотя с более обычными \protect вроде получается тоже самое).
no subject
Date: 2008-05-14 05:40 pm (UTC)\@temptokena=\expandafter{\@title}%
\immediate\write\@itcfile{\the\@temptokena}%
где это было надо по очевидной причине. Но был неправ. Спасибо.
no subject
Date: 2008-05-14 05:49 pm (UTC)no subject
Date: 2008-05-14 05:53 pm (UTC)no subject
Date: 2008-05-15 03:38 pm (UTC)