учебник физики в LaTeX и metapost, часть 3

Sep 25, 2012 23:32

Наконец, пару слов про нежнолюбимый латех


Формат и поля:
Все наверняка видели в выходных данных книг обозначения формата навроде 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, попавшей под заднее колесо фольксвагена.

Пока я еще не придумал годного способа сообщить иллюстрации о том, на четной она странице или на нечетной, но это было в планах.

задрот, latex, metapost, дизайн, учебник физики

Previous post Next post
Up