2014-10-07 29 views
10

Ya bir dil özelliği veya bir önişlemci aracılığıyla - harici .dot dosyalarını altyazı olarak bir diğerine eklemek için bir olasılık var mı?.dot dosyası alt-konum olarak içe aktarılıyor

El ile korunan, üretilmemiş olsa da, nispeten büyük bir grafik üzerinde çalışıyorum.

tanımlamak edebilmek için daha kullanışlı olacak bazı

subgraph01.dot:

digraph subgraph01 { 
/* lot of nodes and edges */ 
} 

subgraph02.dot:

digraph subgraph02 { 
/* lot of nodes and edges */ 
} 

Ve sonra do graph.dot gibi bir şey:

digraph BigGraph { 
    import subgraph01; 
    import subgraph02; 
    A -> subgraph01.Node1 
    A -> subgraph02.Node1 
    subgraph01.Node10 -> subgraph02.Node99 
    /* etc. */ 
} 

Bir yolu var mı?

cevap

10

Hemen iki seçenek bana geliyor. Bir makro işlemci, ör. m4. BigGraph.m4 Verilen:

digraph BigGraph { 
    define(`digraph',`subgraph') 
    include(`subgraph01.dot') 
    include(`subgraph02.dot') 
    A -> subgraph01.Node1 
    A -> subgraph02.Node1 
    subgraph.Node10 -> subgraph.Node99 
    /* etc. */ 
} 

... koşu:

$ m4 BigGraph.m4 

... üretir: izin verebilir

digraph BigGraph { 
    subgraph subgraph01 { 
/* lot of nodes and edges */ 
} 


    subgraph subgraph02 { 
/* lot of nodes and edges */ 
} 


    A -> subgraph01.Node1 
    A -> subgraph02.Node1 
    subgraph.Node10 -> subgraph.Node99 
    /* etc. */ 
} 

Başka bir seçenek daha sofistike bir yaklaşım GraphViz dan gvpr kullanmaktır . Ben gvpr ile bunu yapmak için bir örnek oluşturmaya çalıştım, ancak başarısız oldu, bu yüzden sadece m4 kullanarak basit bir yaklaşım yerine grafik farkında bir yaklaşım gerekiyorsa bunu denemenizi öneririz.