2014-12-03 13 views
14

저는 graphviz를 사용하여 플로우 차트를 만듭니다. 나는 때마다 노드와 가장자리 속성을 설정하여 스타일을 변경합니다GraphViz에서 재사용 가능한 스타일을 만들 수 있습니까?

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

그것은 등 평행 사변형, 직사각형, 다이아몬드,이 및 기타 유사한 선언을 포함하는 약간 고통스러운

내가 싶습니다

.dot 파일에 복사하여 붙여 넣는 대신 재사용 가능한 스타일 문서를 참조 할 수 있습니다.

표준 방법이 있습니까? 내가 나를 위해 이렇게 할 쉘 스크립트 또는 파이썬 스크립트를 빌드 할 수 있지만 기능이 이미 있어야 것처럼 보인다.

답변

20

"때때로 대답은 '아니오'입니다."

따라서 아니요입니다. GraphViz는 Microsoft Word 및 LibreOffice와 같은 워드 프로세서에서 볼 수있는 "명명 된 스타일"이라는 개념이 부족하며 HTML 및 CSS의 스타일 "클래스"개념이 없습니다. 형식 지정 속성은보다 원시적이며 대부분의 경우 명시 적으로 지정해야합니다.

당신은 finite state machine example 같이 일부 기본값을 설정할 수 있습니다 당신이 원 (마지막 모양은 정의)의 모양을 디폴트받을

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

이다 노드의 소수 중 명시 적 호출로 이전 기본값 (doublecircle)으로 이전에 선언되었습니다. 이는 일부 설계에서는 편리하지만 사전 계획을 수월하게해야합니다 (예 : 주문 항목 선언). 그룹 별 기본값 구성을 돕기 위해 subgraph 기능을 사용하는 경우가 있습니다 (as this Stack Overflow answer shows).

그러나 기본값은 표현형의 간단한 유형 메커니즘에 익숙한 사람들에게 작은 편입니다. 나머지 문서를 보면 텍스트에 HTML 스타일 요소를 사용할 수 있지만 예 : <b><i>과 같은 HTML 태그로 제한된다는 것을 확인할 수 있습니다. 이것은 품질 CSS의 확산 이전의 원시 HTML 스타일링입니다 (2001 년경).

stylesheet 속성에 속지 마십시오. 그것은 SVG 출력에만 해당되며 실망스럽게도 훨씬 덜 일반적이며 가치있는 것보다 먼저 보인다.

따라서 짧은 이야기는 "아니오"입니다. GraphViz에는 재사용 가능한 스타일 요소가 내장되어 있지 않습니다. 원한다면 프로그램, 매크로 전처리 기 등을 사용하여 별도로 작성해야합니다. 죄송합니다!

+8

이 답변은 내 희망과 꿈을 모두 무너 뜨렸음에도 불구하고 upvote를받을 가치가있었습니다. 감사. – Pak