Перейти к содержимому
Topos Uranos

Краткое содержание

Это занятие учит рисовать внутри документа средствами TikZ. Оно объясняет, что даёт рисование в LaTeX (шрифт и формулы основного текста, масштабирование без потерь, исправление в исходном коде и контроль версий), чего оно стоит и когда лучше экспортировать график из R или Python; показывает, что в документе на языке, модуль babel которого превращает знаки в активные сокращения (в русском это двойная кавычка, в испанском знаки «меньше» и «больше»), TikZ нуждается в своей библиотеке babel, без которой первая стрелка или первая подпись в кавычках вызывает каскад ошибок; представляет окружение tikzpicture и команду \tikz, декартовы, полярные и относительные координаты, а также пути (отрезки, прямоугольники, окружности, дуги и кривые); перебирает параметры линии и наконечники стрелок библиотеки arrows.meta; учит работе с узлами: именованными, с якорями и расположенными относительно друг друга с помощью библиотеки positioning; закрепляет обозначения собственными стилями; повторяет действия с \foreach; строит блок-схему, схему сил, дерево понятий, синтаксическое дерево и график функции, предупреждая, что plot измеряет углы в градусах; представляет pgfplots для графиков данных; помещает рисунок в плавающий объект и сравнивает три способа его масштабирования; и завершается типичными ошибками, временем компиляции и тем, чего делать не стоит.

Цели обучения

  1. Обоснованно решать, следует ли нарисовать рисунок в TikZ, построить его в pgfplots или экспортировать из программы анализа данных.
  2. Подготовить преамбулу документа для TikZ и объяснить, когда и почему нужна библиотека babel.
  3. Рисовать в абсолютных, полярных и относительных координатах и предсказывать путь, который задаёт последовательность координат с + и ++.
  4. Строить схемы из именованных узлов, расположенных с помощью библиотеки positioning, с собственными стилями, определёнными один раз.
  5. Поместить рисунок в плавающий объект с подписью и меткой, масштабировать его, предвидя, что произойдёт с текстом, и диагностировать типичные ошибки по журналу компиляции.

Зачем рисовать в LaTeX

На предыдущих занятиях в документ вставлялись изображения, созданные вне его. Рисунок TikZ, напротив, записывается в исходном коде командами, и движок набирает его так же, как набирает текст. Отсюда следуют четыре преимущества. Первое из них состоит в типографическом единстве: подписи на рисунке набраны тем же шрифтом и того же кегля, что и текст, а формула в подписи совпадает с формулой в абзаце, который её комментирует. Второе преимущество заключается в масштабировании без потерь: результат векторный, поэтому его можно увеличивать, не видя пикселей. Третье: рисунок исправляется в исходном коде: изменить подпись или сдвинуть точку значит изменить одну строку, не возвращаясь в графическую программу и не разыскивая исходный файл. Четвёртое: рисунок хранится в системе версий вместе с текстом, потому что он и есть текст: он лежит в том же файле, в той же резервной копии и в той же истории изменений.

Однако за эти преимущества приходится платить. TikZ является языком со своим синтаксисом, руководство к которому превышает тысячу страниц, и рисунок, который в графической программе делается мышью за минуту, здесь в первый раз может потребовать получаса. Поэтому стоит различать случаи. Схемы, диаграммы и геометрические фигуры, составленные из немногих форм с подписями, образуют естественную область TikZ. Графики данных, напротив, лучше строить в pgfplots, который надстроен над TikZ и представлен в конце занятия, или, если данные анализируются в R или в Python, той же программой, которая их анализирует: график экспортируется в PDF и вставляется так, как показано на занятии об изображениях, и остаётся связанным с данными и с анализом, из которых он получен. Оба языка, кроме того, умеют записывать график в виде кода для LaTeX (пакет tikzDevice в R и вывод PGF в matplotlib в Python), так что подписи получают шрифт документа.