Улучшите позиционирование индекса и надстроки на ярлыках node
При использовании обоих индексов и надстроек на ярлыке node можно ли изменить расположение так, чтобы они находились непосредственно друг над другом.
Пример:
digraph G {
x11[label=<X<SUB>1</SUB><SUP>(1)</SUP>>];
x21[label=<X<SUB>2</SUB><SUP>(1)</SUP>>];
x11 -> x21
}
Что производит
![введите описание изображения здесь]()
Возможно ли иметь (#)
непосредственно над #
, а не слегка вправо? спасибо
Я попытался добавить пользовательский css
script (re: HTML: могу ли я разместить текст подстрочного текста под верхним индексом?)
к моему dot
script с stylesheet = "styles.css";
(re: Использование классов CSS в HTML-методах на Graphviz), однако он возвращает ошибку
Ошибка: Неизвестный элемент HTML <span>
в строке 1
Ответы
Ответ 1
Настраиваемый HTML-образный node рендеринг Graphviz довольно ограничен. Документы Graphviz ясно говорят об этом. Я не верю, что есть способ уговорить его сделать то, что вы хотите. Даже если есть способ настроить, например, a <table>
, чтобы сделать это, результаты, вероятно, будут выглядеть плохо.
Поэтому я рекомендую вам посмотреть dot2tex. Его цель - предоставить полную мощность LaTeX для рендеринга узлов. Настройка не является тривиальной, но результаты ее стоит.
Здесь страница показывает примеры графиков, содержащих математическую математику LaTeX в узлах.
Вы не сказали, какой должен быть результат. Но есть способы конвертировать LaTeX во многие разные формы. Самый простой - Postscript и PDF. Но форматы изображений также возможны.
Добавление
Хорошо, я установил dot2tex, и вот результат:
![Граф GraphViz со стековыми индексами под верхними индексами]()
Здесь соответствующий код dot
:
digraph G {
a_1 [texlbl="$X_{1}^{(1)}$"];
a_2 [texlbl="$X_{1}^{(2)}$"];
a_3 [texlbl="$X_{1}^{(3)}$"];
a_1-> a_2 -> a_3 -> a_1;
}
Скомпилирован с
$ dot2tex foo.gv -f tikz > foo.tex
$ pdflatex foo.tex
Поскольку вы уже используете LaTeX, вы сможете настроить его для удовлетворения ваших точных требований без особых проблем.
Ответ 2
В документах Graphviz их "HTML-подобные ярлыки" не включают элемент span, а теги стиля шрифта не используются разрешите атрибут стиля (или любой другой):
<SUB
<!-- No attributes -->
>
<SUP
<!-- No attributes -->
>
Два лучших варианта для точного компоновки текста выглядят следующим образом:
1) Используйте метку с таблицей, подобной html, что позволяет настраивать стиль (и в любом случае обрабатывает вертикально размещенный текст).
x11[label=<
<TABLE border="0" cellborder="0" cellspacing="0">
<TR><TD rowspan="2" style="...">X</TD><TD style="...">(1)</TD></TR>
<TR> <TD style="...">1</TD></TR>
</TABLE>>];
2) Если вы используете драйвер PostScript, полностью переопределите генерацию node и поставьте файл ps, который рисует именно то, что вы хотите.
Ответ 3
Возможно, мы могли бы представить более мощный рендеринг HTML (я только что заметил litehtml и sciter, который не является открытым исходным кодом), который, вероятно, имеет свою собственную систему make, потенциальные проблемы безопасности, собственный шрифт и управление именами цветов, общие строки, С++ зависимостей компилятора, утечек памяти и litehtml, например, всего лишь 16K строк кода, которые в наши дни едва перемещают метр для нас, просто я всегда чувствую себя немного виноватым, когда вижу твиты о том, как построить графический интерфейс сложнее, чем ядро linux. Стивен Норт