Наконец, пару слов про нежнолюбимый латех
Формат и поля:
Все наверняка видели в выходных данных книг
обозначения формата навроде 84×108 1/32. Я так и не нашел пакета, который бы принимал эти цифры в качестве аргумента и менял размеры страницы соответствующим образом, а использовать
geometry в данном случае как-то не очень эстетично (хотя, по идее, туда бы хорошо добавить такой функционал). Так появился файл pagxo.sty. Интерфейс там совершенно не по гайдлайнам и по сути состоит из трех макросов:
для задания размера страницы таким образом: \pagxo{70}{100}{16}
для полей по ОСТу (если формат есть в
справочнике Гиленсона, сам ОСТ что-то не нашел, искал плохо, наверное) так: \margxenoOST{2}, где цифра - один из трех вариантов полей для данного формата
или полей, как это описано у
Брингхерста так: \margxeno{1}, где цифра - один из двух вариантов полей.
Это все \pagxo{70}{100}{16} и, в порядке следования \margxenoOST{1}, \margxenoOST{2}, \margxenoOST{3}, \margxeno{1}, \margxeno{2}
Это \pagxo{84}{108}{32}\margxenoOST{3}
А это выдуманный размер \pagxo{200}{300}{128}\margxeno{2} (\mergxenoOST для размеров, которых нет в таблице, не определены)
Размеры из LaTeX в metapost
Чтоб внедрять картинки в текст я использовал замечательный пакет
emp, но все равно нужно еще как-то передать размеры из латеха к метапосту, чтобы картинка могла, например, всегда быть по ширине текстового поля.
Это я осуществил довольно тупым, но действенным способом (на примере ширины страницы):
\newdimen\tekstlargxecopt
\setlength\tekstlargxecopt\textwidth
\divide \tekstlargxecopt by 65536 %Это нужно чтобы перевести scaled points (65536sp = 1pt) в~pt
\newdimen\mezuroj %записывает в файл разные размеры в pt . Это код, который идет напрямую в метапост, кроме \number\*** ? это тех переводит в цифры
\openout \mezuroj = mezuroj.txt\relax
\write \mezuroj{
tekstlargxeco = \number \tekstlargxecopt pt;
tekstalteco = \number \tekstaltecopt pt;
alineo = \number \alineopt pt;
}
\closeout \mezurojа потом mezuroj.txt втягивается в начало fiziko, и дальше можно использовать ширину текстового поля в качестве переменной в метапосте.
Например, эти две страницы отличаются только форматом и полями, а колбаса посередине шириной в tekstlargxeco меняется автоматически, причем не масштабируется, а именно меняет форму (толщина одинаковая).
\begin{emp}(1cm, 1cm)
beginfig(1)
varsimtubo ((0, 0) .. (u, u) .. (tekstlargxeco/2, u) .. (tekstlargxeco-u, u) .. (tekstlargxeco, 2u), 150) (sin(j*pi)*3/2u);
endfig;
\end{emp}
Так что переверстка под другой формат отнимет в случае чего гораздо меньше сил.
upd: почему нельзя просто масштабировать в латехе и зачем может понадобиться менять пропорции в иллюстрациях?
Все обозначения на иллюстрациях хотя и генерируются техом, но изнутри метапоста и, будучи втянутыми в латех вместе с eps-ами тоже отмасштабируются, что нам тут совсем не нужно. Кроме того, отображение картинок у меня
зависит от минимальной толщины линии, которую можно воспроизвести на печати, что при масштабировании будет утрачено.
слева-направо: большой шар с буквой, он же, уменьшенный в два раза, честно нарисованный шар вдвое меньше с буквой
Менять пропорции имеет смысл в тех случаях, когда сами пропорции не слишком важны, но увеличавать все пропорционально или уменьшать нецелесообразно. К примеру, есть некая горизонтальная картинка, которая изображает что-то длинное. Я хочу чтобы она была почти по ширине текста, но в высоту не менялась (зачем занимать лишнее место?). хорошего примера пока нет (эту возможность я с самого начала не предусматривал и начал переводить все картинки на относительные размеры незадолго до того, как работа остановилась), но могу такой привести:
на нем, кстати, хорошо видно, что надо более аккуратно планировать иллюстрацию, чтобы не было лажи, как на втором рисунке со стрелкой оси x, попавшей под заднее колесо фольксвагена.
Пока я еще не придумал годного способа сообщить иллюстрации о том, на четной она странице или на нечетной, но это было в планах.