graphviz - superindices - superindice teclado
Mejora la posición del subíndice y superíndice en las etiquetas de nodo (3)
Cuando se usan subíndices y superíndices en una etiqueta de nodo, es posible alterar el posicionamiento para que estén directamente uno encima del otro.
Ejemplo:
digraph G {
x11[label=<X<SUB>1</SUB><SUP>(1)</SUP>>];
x21[label=<X<SUB>2</SUB><SUP>(1)</SUP>>];
x11 -> x21
}
Lo que produce
¿Es posible tener el (#)
directamente arriba del #
lugar de un poco a la derecha? Gracias
Intenté agregar un script css
personalizado (re: HTML: ¿puedo colocar el texto del subíndice justo debajo del superíndice? ) A mi script de dot
con la stylesheet = "styles.css";
(re: usando clases CSS en etiquetas HTML en Graphviz ), sin embargo, devuelve un error
Error: elemento HTML desconocido
<span>
en la línea 1
La representación nativa del tipo HTML de Graphviz es bastante limitada. Los documentos de Graphviz dicen esto claramente. No creo que haya una manera de persuadirlo para que haga lo que usted quiere. Incluso si hay una manera de modificar, por ejemplo, una definición <table>
para hacerlo, los resultados probablemente se vean mal.
Por lo tanto, te recomiendo que mires a dot2tex . Todo su propósito es permitir que la potencia total de LaTeX para la representación de nodos. La configuración no es trivial, pero los resultados valen la pena.
Aquí hay una página que muestra ejemplos de gráficos que contienen la matemática de conjuntos LaTeX en nodos.
No dijiste cuál debería ser la salida. Pero hay maneras de convertir LaTeX a muchas formas diferentes. Los más fáciles son PostScript y PDF. Pero los formatos de imágenes también son posibles.
Adición
De acuerdo, instalé dot2tex, y he aquí un resultado:
Aquí está el código de dot
correspondiente:
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;
}
Compilé con
$ dot2tex foo.gv -f tikz > foo.tex
$ pdflatex foo.tex
Como ya está usando LaTeX, debería poder ajustar esto para cumplir con sus requisitos exactos sin muchos problemas.
Según los documentos de Graphviz, sus ''Etiquetas similares a HTML'' no incluyen el elemento span, y las etiquetas de estilo de fuente no permiten el atributo de estilo (o cualquier otro):
<SUB
<!-- No attributes -->
>
<SUP
<!-- No attributes -->
>
Las dos mejores opciones para un diseño de texto preciso parecen ser:
1) Use una etiqueta con una tabla similar a html, que permita un estilo personalizado (y maneja bien el texto colocado verticalmente de todos modos).
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) Si usa el controlador PostScript, anule la generación del nodo por completo y suministre un archivo ps que dibuje exactamente lo que desea.
Tal vez podríamos introducir un renderizador HTML más potente (acabo de notar litehtml y sciter que no es de código abierto) que probablemente tenga su propio sistema make, posibles problemas de seguridad, su propia fuente y gestión de nombres de colores, cadenas compartidas, dependencias del compilador C ++, Fugas de memoria, y litehtml, por ejemplo, solo tiene 16K de líneas de código que en estos días apenas nos mueven el medidor, solo que siempre me siento un poco culpable cuando veo tweets sobre cómo construir graphviz es más difícil que el kernel de Linux. Stephen North