我不知道有任何软件可以生成这样的图表。但是,如果我必须解决您的问题,我可能会探索使用可缩放矢量图形(SVG)的可能性。我认为你可以将RCC的DSL转换为SVG XML,然后你可以渲染它(也许在Web浏览器中)。您可以通过搜索“svg维恩图”在Web上轻松找到示例。这里有一个很好的:这是我从该网站生成的图表
这是相应的SVG代码(也来自网站):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg
height="150"
width="200"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<title >WIBR Venn diagram</title>
<ellipse
cx="141.795128105731"
cy="75"
id="circle2"
rx="58.2048718942687"
ry="58.2048718942687"
style="fill: gray; fill-opacity: 0.5; stroke: black; stroke-width: 1; stroke-opacity: 1" />
<ellipse
cx="67.2091969126074"
cy="75" id="circle1"
rx="67.2091969126074" ry="67.2091969126074"
style="fill: darkgray; fill-opacity: 0.5; stroke: black; stroke-width: 1; stroke-opacity: 1"/>
</svg>
还有一个名为Batik的SVG Apache工具包,它应该支持SVG的显示,生成或操作。
另一种选择是将TikZ和PGF与LaTeX一起使用:那里有强大的宏,可以让你以编程方式放置形状,渲染由LaTeX完成。下面是一个示例:
\documentclass[a4paper,10pt]{article}
\usepackage{tikz}
\usetikzlibrary{shapes,calc}
\begin{document}
\pagestyle{empty}
\begin{tikzpicture}
\node (TPP) {X TPP Y};
\node
[ circle,
draw,
minimum width=2cm,
label={[label distance=-0.7cm]145:X},
] (X) [right of=TPP,xshift=1cm] {};
\node
[ circle,
draw,
minimum width=1cm,
anchor=south east,
] (Y) at (X.south east) {Y};
\end{tikzpicture}
\end{document}
它产生以下(即RCC8 TPP关系):
从 LaTeX 代码中可以看出,您可以在 X () 的西南部绘制 Y 圆,表示 Y 的锚点也在西南部 ()。您可以在此处找到更复杂的示例,并在此处找到一些其他讨论。X.south west
anchor=south west
虽然这还不是一个为你绘制RCC8关系的布局算法,但我认为你可以定义LaTeX宏,将RCC8关系转换为PGF / TikZ宏。缺点是您必须编译LaTeX代码。
我希望这有帮助,祝你好运!