?

Log in

No account? Create an account

Previous Entry | Next Entry

К вот этому.

В программировании на TeXе есть несколько стадий. На первой ты не можешь написать код вроде такого:

\ifx\r@LastPage\@undefined
   \def\@tempa{0}%
\else
   \edef\@tempa{\expandafter\@secondoftwo\r@LastPage}%
\fi
\@temptokena=\expandafter{\@tempa}%
\immediate\write\@itcfile{\the\@temptokena}%
На второй стадии ты можешь, но скрипишь зубами. На третьей этот код тебе кажется простым и логичным.

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

Tags:

Comments

( 22 comments — Leave a comment )
(Anonymous)
May. 14th, 2008 03:56 pm (UTC)
www.lyx.org
scholar_vit
May. 14th, 2008 04:04 pm (UTC)
LyX - это попытка изменить интерфейс пользователя. К нему в TeXе и LaTeXе у меня как раз претензий нет: он прост и логичен. А костыли типа LyXа только мешают людям вроде меня, которым проще написать \frac{\pi}{2} или {\pi\over2}, чем искать что-то мышкой в меню. Я про интерфейс программиста. Не о том, как использовать пакеты и стили, а о том, как их писать.

Edited at 2008-05-14 04:13 pm (UTC)
(Anonymous)
May. 14th, 2008 05:27 pm (UTC)
писать методами литературного программирования
.. писать известно как - методом literate programming:
http://community.livejournal.com/ru_perl/249441.html

;)))))))))
scholar_vit
May. 14th, 2008 05:30 pm (UTC)
Re: писать методами литературного программирования
Такие вещи именно так и пишутся. Потому что иначе нельзя.
vadim_i_z
May. 14th, 2008 04:27 pm (UTC)
scholar_vit
May. 14th, 2008 05:03 pm (UTC)
:)
(Deleted comment)
scholar_vit
May. 14th, 2008 05:20 pm (UTC)
Вы имеете в виду typesetting to a grid, так?

Проблему вдов и сирот можно решать двумя способами В грубом варианте мы делаем что-то вроде TeXовского \raggedbottom: мы разрешаем убирать или добавлять последнюю строку на странице. Это особенно хорошо, если есть много постраничных примечаний, которые скрадывают эффект. В более тонком варианте мы изменяем высоты абзацев за счет изменения наполненности строк - см. hz-алгоритм и диссертацию Хан Те Фана (http://www.pragma-ade.com/pdftex/thesis.pdf). У Гутенберга было полсотни вариантов каждой буквы, что позволяло ему вручную варьировать текст, добиваясь ровной наполненности заданного прямоугольника - т.е. свобода в line-breaking позволяет делать разгон БЕЗ изменения межстрочного интервала.

Что касается важности эффекта: во-первых, при наборе текста в две колонки (обычная ситуация для журналов) Вы видите совпадение/несовпадение строк сразу (тут речь идет не о соседних страницах, а о соседних колонках). Во-вторых, требования к печатникам не так уж запредельны. На моей полке стоят (недешевые) хорошо изданные книги, где строки на recto и verso совпадают. Да, это требует культуры печатного дела - ну так эти книги делали хорошие мастера.
(Deleted comment)
scholar_vit
May. 14th, 2008 05:46 pm (UTC)
По второму: наша цель в том, чтобы снизив расходы на ручной труд, сделать дорогую раньше типографию доступной.

По первому: я имею в виду изменение самих букв - то, что называется микротипографией. См. работы Запфа и Тан Хе Фана, цитированные выше.
(Deleted comment)
scholar_vit
May. 14th, 2008 06:25 pm (UTC)
Второе. Предполагается иметь несколько вариантов шрифта.
(Deleted comment)
v782
May. 14th, 2008 06:53 pm (UTC)
На самом деле реализация в пдф-техе (пакет microtype) может и крошечное масштабирование делать (при этом, вроде, можено задать растяжимость индивидуально для каждой буквы), и варианты использовать, если они будут. И межбуквенное расстояние подгонять, если уж и туда нелегкая занесет.
scholar_vit
May. 14th, 2008 09:00 pm (UTC)
Судя по этому абзацу: A font that has a set of associated expanded fonts is called an expandable font. Characters from an expandable font can be replaced by their counterparts from the associated expanded fonts during composing. This way, a character from an expandable font can be “stretched” or “shrunk” by using a wider or narrower alternate from the associated expanded fonts. A character from an expandable font is called an expandable character. у меня создалось впечатление, что это временное решение, и автор думает о более аккуратной имплементации

Edited at 2008-05-14 09:01 pm (UTC)
v782
May. 14th, 2008 09:17 pm (UTC)
На низком уровне там сделано вот как (насколько я понимаю). Он пытается растягивать буквочки с некоторым шагом в пределах +- заданного максимума (напр. +-2% с шагов 0.2%). Для каждого растяжения может быть задан либо уже созданный шрифт (и там, соответственно, можно задавать варианты букв), либо, если явно не задано, растянутый вариант генерится автоматически на лету.

texdoc pdftex-l
и там \S 7.3

Тоже самое, в
texdoc microtype
и там \S 3.3
scholar_vit
May. 15th, 2008 05:24 pm (UTC)
Надо внимательнее почитать документацию: у меня совсем древняя версия pdftex и microtype...
v782
May. 14th, 2008 05:45 pm (UTC)
Извините, а разве есть способ заставить микротипографику интерферировать с разбиванием текста на страницы? Мне казалось, что в пдфтехе все эти штучки позволяют просто улучшить вид абзаца, а уж каким образом его строчки разносятсся по страницам -- это делается как в обычном техе, абсолютно независимо.
scholar_vit
May. 14th, 2008 05:48 pm (UTC)
Совершенно верно. Я тут говорю не о том, что есть, а том, чего хотелось бы. Или, если хотите, о классической ручной типографии.
v782
May. 14th, 2008 05:18 pm (UTC)
А зачем \@tempa в токены обращать, он же уже e-def'нут?
scholar_vit
May. 14th, 2008 05:21 pm (UTC)
Потому что некоторые имеют вредную привычку подключать hyperref. Который переопределяет \pageref.
v782
May. 14th, 2008 05:36 pm (UTC)
Мысль в том, что обычно обращением макроса в токены мы избегаем раскрытия при \write. Т.е. например
\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 вроде получается тоже самое).
scholar_vit
May. 14th, 2008 05:40 pm (UTC)
Да, Вы правы. Я не думая скопировал строки
\@temptokena=\expandafter{\@title}%
\immediate\write\@itcfile{\the\@temptokena}%
где это было надо по очевидной причине. Но был неправ. Спасибо.
(Deleted comment)
scholar_vit
May. 14th, 2008 05:49 pm (UTC)
Я забыл поставить смайлик
amsterdam_4
May. 14th, 2008 05:53 pm (UTC)
Очень хорошо
ny_quant
May. 15th, 2008 03:38 pm (UTC)
Вы, главное, не волнуйтесь ;)
( 22 comments — Leave a comment )

Profile

knot
scholar_vit
scholar_vit

Latest Month

January 2018
S M T W T F S
 123456
78910111213
14151617181920
21222324252627
28293031   

Tags

Powered by LiveJournal.com
Designed by Paulina Bozek