Jan. 31st, 2018

egorius: (Default)

Работа техническим и художественным редактором, помимо бесконечной вычитки, правки и переписки, приносит неожиданно интересные задачи.

Нет, вычитка тоже интересна: когда бы еще довелось пообщаться на равных (ну, почти...) с профессором университета? Одну книгу мы уже выпустили (пособие по SQL), и надеюсь, что в этом году добьем первую часть фундаментального труда по основам технологий СУБД.

Так вот, первой занятной задачей было придумать правдоподобное наполнение для демонстрационной базы данных. Я немного писал об этом на Хабре. Не могу сказать, что полностью удовлетворен результатом и уже подумываю все переделать, но вспоминаю работу с удовольствием: отпуск прошел не зря.

А сейчас возникла необходимость привести несколько иллюстраций, кое-как нарисованных в каких-то Пауэрпоинтах, к единому стилю. Сначала думал перерисовать в draw.io, но вовремя вспомнил старую историю. В свое время копировал я братцу (тогда еще музыканту) какие-то заковыристые ноты. Ксерить было неспортивно, хотелось набрать на компьютере. Какие только специализированные программы мы с ним не перепробовали: Сибелиус, еще что-то... ничего не получалось, не хватало возможностей. Тогда на помощь пришел ТеХ (MusiXTeX): неделю втыкаешь, потом пишешь какие-то загогулины и внезапно все работает именно так, как надо.

Вот и сейчас — книги-то мы верстаем в ТеХе. Оказалось, что есть пакет TikZ, ноги которого растут откуда-то из глубин Постскрипта и Метафонта. Пришлось честно напечатать кусок документации и даже прочитать его. Окончательно меня покорила авторская глава о хорошем стиле со ссылкой на Тафти.

Для примера решил начать с ER-диаграмм. Казалось бы, несложная штука, но спецсредства порождают ненастраиваемый ужас-ужас, а в том же Либреофисе безгеморройно нарисовать лапку в стиле Баркера — просто невозможно. Но в TikZ можно вообще все что угодно, и вот как это может выглядеть:

Если опустить определения стилей (которые находятся в SO и допиливаются напильником), то сам код хоть и пестрый, но вполне читаемый:

\begin{tikzpicture}
  \pic {entity={courses}{Courses}{
        \#      & course\_no \\
        $\ast$  & title \\        
        $\circ$ & hours \\
  }}; 
  \pic[right=8ex of courses] {entity={exams}{Exams}{
        $\ast$  & score \\        
  }}; 
  \pic[right=8ex of exams] {entity={students}{Students}{
        \#      & student\_id \\
        $\ast$  & name \\        
        $\ast$  & start\_year \\
  }}; \&
  \pic[above=8ex of students] {entity={groups}{Groups}{
        $\ast$  & group\_no \\
  }}; \&
  \draw [one to many uid] (courses) -- (exams);
  \draw [one to many uid] (students) -- (exams);
  \draw [optional one to many] (groups) -- (students);
\end{tikzpicture}

Сплошные прелести:

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

Буду пробовать дальше.

Profile

egorius: (Default)
egorius

July 2025

M T W T F S S
  12 3 4 5 6
7891011 12 13
1415 1617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 21st, 2025 05:40 am
Powered by Dreamwidth Studios