scholar_vit: (Default)
[personal profile] scholar_vit

К вот этому.

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

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

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

Date: 2008-05-14 03:56 pm (UTC)
From: (Anonymous)
www.lyx.org

Date: 2008-05-14 04:04 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
LyX - это попытка изменить интерфейс пользователя. К нему в TeXе и LaTeXе у меня как раз претензий нет: он прост и логичен. А костыли типа LyXа только мешают людям вроде меня, которым проще написать \frac{\pi}{2} или {\pi\over2}, чем искать что-то мышкой в меню. Я про интерфейс программиста. Не о том, как использовать пакеты и стили, а о том, как их писать.
Edited Date: 2008-05-14 04:13 pm (UTC)

Date: 2008-05-14 05:03 pm (UTC)

Date: 2008-05-14 05:18 pm (UTC)
From: [identity profile] v782.livejournal.com
А зачем \@tempa в токены обращать, он же уже e-def'нут?

Date: 2008-05-14 05:20 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Вы имеете в виду typesetting to a grid, так?

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

Что касается важности эффекта: во-первых, при наборе текста в две колонки (обычная ситуация для журналов) Вы видите совпадение/несовпадение строк сразу (тут речь идет не о соседних страницах, а о соседних колонках). Во-вторых, требования к печатникам не так уж запредельны. На моей полке стоят (недешевые) хорошо изданные книги, где строки на recto и verso совпадают. Да, это требует культуры печатного дела - ну так эти книги делали хорошие мастера.

Date: 2008-05-14 05:21 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Потому что некоторые имеют вредную привычку подключать hyperref. Который переопределяет \pageref.
From: (Anonymous)
.. писать известно как - методом literate programming:
http://community.livejournal.com/ru_perl/249441.html

;)))))))))
From: [identity profile] scholar-vit.livejournal.com
Такие вещи именно так и пишутся. Потому что иначе нельзя.

Date: 2008-05-14 05:36 pm (UTC)
From: [identity profile] v782.livejournal.com
Мысль в том, что обычно обращением макроса в токены мы избегаем раскрытия при \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 вроде получается тоже самое).

Date: 2008-05-14 05:40 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Да, Вы правы. Я не думая скопировал строки
\@temptokena=\expandafter{\@title}%
\immediate\write\@itcfile{\the\@temptokena}%
где это было надо по очевидной причине. Но был неправ. Спасибо.

Date: 2008-05-14 05:45 pm (UTC)
From: [identity profile] v782.livejournal.com
Извините, а разве есть способ заставить микротипографику интерферировать с разбиванием текста на страницы? Мне казалось, что в пдфтехе все эти штучки позволяют просто улучшить вид абзаца, а уж каким образом его строчки разносятсся по страницам -- это делается как в обычном техе, абсолютно независимо.

Date: 2008-05-14 05:46 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
По второму: наша цель в том, чтобы снизив расходы на ручной труд, сделать дорогую раньше типографию доступной.

По первому: я имею в виду изменение самих букв - то, что называется микротипографией. См. работы Запфа и Тан Хе Фана, цитированные выше.

Date: 2008-05-14 05:48 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Совершенно верно. Я тут говорю не о том, что есть, а том, чего хотелось бы. Или, если хотите, о классической ручной типографии.

Date: 2008-05-14 05:49 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Я забыл поставить смайлик

Date: 2008-05-14 05:53 pm (UTC)
From: [identity profile] amsterdam-4.livejournal.com
Очень хорошо

Date: 2008-05-14 06:25 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Второе. Предполагается иметь несколько вариантов шрифта.

Date: 2008-05-14 06:53 pm (UTC)
From: [identity profile] v782.livejournal.com
На самом деле реализация в пдф-техе (пакет microtype) может и крошечное масштабирование делать (при этом, вроде, можено задать растяжимость индивидуально для каждой буквы), и варианты использовать, если они будут. И межбуквенное расстояние подгонять, если уж и туда нелегкая занесет.

Date: 2008-05-14 09:00 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Судя по этому абзацу: 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 Date: 2008-05-14 09:01 pm (UTC)

Date: 2008-05-14 09:17 pm (UTC)
From: [identity profile] v782.livejournal.com
На низком уровне там сделано вот как (насколько я понимаю). Он пытается растягивать буквочки с некоторым шагом в пределах +- заданного максимума (напр. +-2% с шагов 0.2%). Для каждого растяжения может быть задан либо уже созданный шрифт (и там, соответственно, можно задавать варианты букв), либо, если явно не задано, растянутый вариант генерится автоматически на лету.

texdoc pdftex-l
и там \S 7.3

Тоже самое, в
texdoc microtype
и там \S 3.3

Date: 2008-05-15 03:38 pm (UTC)
From: [identity profile] ny-quant.livejournal.com
Вы, главное, не волнуйтесь ;)

Date: 2008-05-15 05:24 pm (UTC)
From: [identity profile] scholar-vit.livejournal.com
Надо внимательнее почитать документацию: у меня совсем древняя версия pdftex и microtype...

Profile

scholar_vit: (Default)
scholar_vit

January 2019

S M T W T F S
  12345
678 9101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 24th, 2026 11:58 am
Powered by Dreamwidth Studios