2014-12-03 8 views
14

Sto utilizzando graphviz per creare diagrammi di flusso. A cambiare gli stili ogni volta impostando gli attributi del nodo e del:Puoi costruire stili riutilizzabili in GraphViz?

node[shape="box", 
    style="filled, rounded", 
    fillcolor=lightyellow, 
    fontname="Verdana", 
    fontsize=9, 
    penwidth=.5, 
    color="gray83"] 
    start, end; 

E 'un po' doloroso per includere questa e altre dichiarazioni simili per parallelogrammi, rettangoli, diamanti, ecc

Mi piacerebbe essere in grado di fare riferimento a un documento di stile riutilizzabile invece di copiare e incollare in ogni file .dot.

Esiste un modo standard per farlo? I potrebbe potenzialmente creare uno script di shell o uno script python che farebbe questo per me, ma sembra che la funzionalità dovrebbe già essere lì.

risposta

20

"A volte la risposta è" no "."

Quindi, no. GraphViz manca della nozione di "stili nominati" visti in processori di parole come Microsoft Word e LibreOffice e manca della nozione di "classe" di stile da HTML e CSS. Gli attributi di formattazione sono più primitivi e, in molti casi, devono essere dichiarati esplicitamente.

È possibile impostare alcuni valori di default, come nel suo finite state machine example:

node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8; 
node [shape = circle]; 

qui si arriva inadempiente alla forma di un cerchio (l'ultima forma definita), con chiamate esplicita di una manciata di nodi che sono precedentemente dichiarato con un valore predefinito precedente (doublecircle). Questa è una comodità per alcuni progetti, ma richiede un buon grado di prepianificazione (ad es. Degli articoli dell'ordine sono dichiarati). A volte è possibile utilizzare la funzione subgraph per organizzare le impostazioni predefinite per gruppo, as this Stack Overflow answer shows.

Ma le impostazioni predefinite sono un piccolo conforto per quelli di noi abituati a meccanismi di tipo espressivo e semplice. Uno sguardo al resto della documentazione conferma che, mentre è possibile utilizzare alcuni elementi di stile HTML per il testo, ad esempio, sono limitati ai tag HTML come <b> e <i>. Questo è lo stile HTML primitivo intorno al 2001, prima della diffusione del CSS di qualità.

Non fatevi ingannare dall'attributo stylesheet; è solo per l'output SVG, ed è deludente molto meno generale e prezioso di quanto sembra inizialmente.

Quindi, per farla breve, "no". GraphViz non ha elementi di stile riutilizzabili incorporati. Se lo vuoi, dovrai costruirlo separatamente usando un programma, un macro-preproduttore o simili. Scusate!

+8

Questa risposta meritava un'alternativa nonostante avesse distrutto tutte le mie speranze e i miei sogni. Grazie. – Pak