Существует ли простой пакет, в который я могу ввести абстрактный график, и он вернет рисунок?
Ааналогичный вопросбыл задан в 2010 году, на него не было получено никаких ответов, относящихся к моему вопросу. Я не хочу сложного кода, просто передайте список ребер графа и получите любой рисунок. (Конечно, несколько дополнительных параметров приветствуются.) Это уже реализовано во многих языках программирования, поэтому я полагаю, что это также должно быть доступно в LaTeX.
решение1
Есть как минимум два способа:
наиболее гибкий (и тот, который я рекомендую) — это использованиеПГФ3/ТикЗАвтоматические возможности макета доступны, если у вас есть последняя версия пакета (версия 3.0.0 и выше) и если вы используете
luatex
/lualatex
для компиляции. См. руководство PGF, там есть глава, посвященная этому. Преимущество в том, что вы можете использовать всю мощь TikZ для стилизации ваших узлов/ребр, и это будет плавно сочетаться с остальной частью документа. Вы можете использовать (почти) произвольный код TeX для меток/содержимого узлов и стилей TikZ. Недостатком может быть производительность, но вы можете смягчить это, используя библиотекуexternal
(см. руководство).Пример из руководства:
\tikz [>=spaced stealth’] \graph [layered layout, components go right top aligned, nodes=draw, edges=rounded corners] { first root -> {1 -> {2, 3, 7} -> {4, 5}, 6 }, 4 -- 5; second root -> x -> {a -> {u,v}, b, c -> d -> {w,z} }; third root -> child -> grandchild -> youngster -> third root; };
используйте graphviz для создания макета, а затем используйте
dot2tex
Преимущество в том, что вы по-прежнему получаете те же шрифты, что и в основном документе, можете использовать математику и можете скомпилировать график один раз и не делать макет при каждой компиляции документа.Есть способы автоматизировать последнее с помощью пакета LaTeX
dot2texi
. Не забудьте запуститьpdflatex
с-shell-escape
опцией, чтобы это сработало:dot2texi
нужно будет вызвать внешнийdot2tex
инструмент, который нужно установить (зависит от python) вместе сgraphviz
. В последних версиях у вас есть возможность сгенерировать код TikZ и указать пользовательские стили TikZ для узлов/ребер. Цитата из документации:Вывод Graphviz и dot2tex не идеален. Иногда требуется ручная корректировка, чтобы получить правильные результаты для использования в публикации. Для окончательной и косметической корректировки часто проще отредактировать сгенерированный код, чем взламывать исходный dot. Это особенно актуально при использовании формата вывода tikz.