Как нарисовать диаграмму в TikZ
Диаграмма, коммутативная диаграмма или график в TikZ, проверка в редакторе, пакеты вроде pgfplots и подпись к диаграмме как к иллюстрации.
TikZ — язык рисования LaTeX: геометрические построения, коммутативные диаграммы, графы, схемы, графики. На LibreTimes вы пишете исходник TikZ прямо в тексте, а настоящий LaTeX компилирует его в изображение при сохранении работы, так что диаграмма выглядит так же, как в печатной статье. Читатели получают изображение; в их браузере ничего не компилируется.
Диаграммы на этой странице скомпилированы так же, один раз, из исходника, показанного на вкладке Markdown каждого примера.
Написать диаграмму
- В редакторе выберите Код и поставьте курсор туда, где должна быть диаграмма.
- Напишите строку
:::tikz, затемtikzpicture, затем строку:::.
:::tikz
\begin{tikzpicture}
\draw[->] (-1.5,0) -- (1.5,0) node[right] {$x$};
\draw[->] (0,-1.5) -- (0,1.5) node[above] {$y$};
\draw (0,0) circle (1);
\draw (0,0) -- (45:1) node[midway, above left] {$r$};
\end{tikzpicture}
:::Тело блока — то, что вы поставили бы между \begin{document} и
\end{document} в отдельном файле LaTeX, без этих двух строк и без
\documentclass: документ вокруг рисунка добавляется за вас. Формулы в
подписях узлов работают как обычно, {$x$}, а amsmath и amssymb
загружены всегда.
Увидеть диаграмму
- Переключитесь в режим Визуально. Диаграмма компилируется и рисуется на месте исходника.
- Если её не удаётся скомпилировать, блок показывает TikZ failed to render с сообщением LaTeX и строкой вашего исходника, к которой оно относится. Исправьте эту строку в режиме Код и переключитесь обратно.
Неудачная диаграмма никогда не мешает сохранить или опубликовать текст вокруг неё. Пока она не скомпилирована, читатели видят на её месте Diagram not rendered., а не ваш исходник.
Подключить пакет или библиотеку
Распространённые библиотеки TikZ, например arrows.meta, calc,
positioning и matrix, уже загружены. Коммутативной диаграмме не нужно
ничего, кроме matrix:
:::tikz
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, row sep=3em, column sep=3em]
{ A & B \\ C & D \\ };
\path[->] (m-1-1) edge node[above] {$f$} (m-1-2)
edge node[left] {$g$} (m-2-1)
(m-1-2) edge node[right] {$h$} (m-2-2)
(m-2-1) edge node[below] {$k$} (m-2-2);
\end{tikzpicture}
:::Для всего остального:
- Поставьте строки
\usetikzlibrary{…}или\usepackage{…}в начало блока, перед\begin{tikzpicture}. - Используйте пакет так же, как в LaTeX.
График с pgfplots:
:::tikz
\usepackage{pgfplots}
\begin{tikzpicture}
\begin{axis}[axis lines=middle, xlabel=$x$, ylabel=$y$, domain=-2:2, samples=50]
\addplot[thick] {x^3 - x};
\end{axis}
\end{tikzpicture}
:::Подключить можно любую библиотеку TikZ. Пакеты — фиксированный набор,
установленный и проверенный, в том числе pgfplots, circuitikz,
tkz-euclide, forest, chemfig и tikz-3dplot. Пакет не из этого набора
не компилируется, и сообщение называет доступные. \input, \include и всё,
что читает файл или запускает программу, запрещено, потому что диаграмма
компилируется на общей машине.
Окружение tikzcd из пакета tikz-cd пока компилируется неправильно, потому
что блок помещает каждый рисунок в собственный tikzpicture. Рисуйте
коммутативные диаграммы матрицей, как выше. Прямоугольную диаграмму с прямыми
стрелками можно записать и формулой: окружение KaTeX \begin{CD} работает в
выключной формуле.
Подписать как иллюстрацию
- Поставьте над строкой
:::tikzстроку::::figure{#fig-name}— с четырьмя двоеточиями, потому что у диаграммы внутри их три. - После закрывающего
:::диаграммы напишите подпись. - Закройте иллюстрацию строкой
::::.
Квадрат коммутативен: .
::::figure{#fig-square}
:::tikz
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, row sep=3em, column sep=3em]
{ A & B \\ C & D \\ };
\path[->] (m-1-1) edge node[above] {$f$} (m-1-2)
edge node[left] {$g$} (m-2-1)
(m-1-2) edge node[right] {$h$} (m-2-2)
(m-2-1) edge node[below] {$k$} (m-2-2);
\end{tikzpicture}
:::
Квадрат коммутативен: $h \circ f = k \circ g$.
::::Сошлитесь на неё из текста: [диаграмма](#fig-square), как на любую
иллюстрацию.
Диаграмма внутри утверждения
Диаграмма может стоять в доказательстве, примере или любом другом блоке. Внешнему блоку нужно больше двоеточий, чем диаграмме:
Доказательство. Отображения складываются в квадрат
и утверждение следует, если обойти по нему элемент .
::::proof
Отображения складываются в квадрат
:::tikz
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, row sep=3em, column sep=3em]
{ A & B \\ C & D \\ };
\path[->] (m-1-1) edge node[above] {$f$} (m-1-2)
edge node[left] {$g$} (m-2-1)
(m-1-2) edge node[right] {$h$} (m-2-2)
(m-2-1) edge node[below] {$k$} (m-2-2);
\end{tikzpicture}
:::
и утверждение следует, если обойти по нему элемент $A$.
::::Результат
На опубликованной странице диаграмма — изображение в тексте, нарисованное цветом страницы: тёмные линии на светлой странице, светлые на тёмной, из одной и той же компиляции. Щелчок открывает её на весь экран с увеличением. В иллюстрации под ней стоит подпись, а ссылка на якорь иллюстрации переносит к ней.
Если что-то не так
- Вместо диаграммы показано Diagram not rendered. Она ещё не скомпилирована или последняя компиляция не удалась. Откройте работу в редакторе и посмотрите на блок в режиме Визуально, чтобы увидеть ошибку.
- Диаграмма крошечная или огромная. Изображение сохраняет размер, в
котором его нарисовал TikZ. Рисуйте в сантиметрах в том размере, в каком её
должны читать, или задайте
scale=уtikzpicture. - Нужно показать исходник TikZ как текст, как это делают вкладки
Markdown на этой странице. Поставьте его в блок кода с языком
latex; блок кода никогда не компилируется.