MetaPostでベン図するパッケージがあったので触ってみた.
ことの発端はLaTeXのものを求めて texdoc
で探したときまで遡る.
$ texdoc -lI venn
1 /usr/local/texlive/2020/texmf-dist/doc/metapost/venn/README
該当1件であり,しかも .../metapost/...
だからMetaPost用のパッケージだ,これは予想外.検索の仕方が悪かったのか,もしくはTeX Liveをフルインストールしていなかったからかもしれない.(追記: $ texdoc -s -l venn
で venndiagram
パッケージが検索結果に含まれるようになります.)
README
の内容は単簡にして明瞭だ.試してみよう.
input venn;
prologues:=3;
outputformat:="png";
outputtemplate:="%j-%c.png";
%%% ...
input venn;
でパッケージを読み込める. prologues ...
は出力するファイルに関する指定である.ここではPNGファイルを出力しているが,EPSはもちろん1,SVGも指定できる.
%%% ...
beginfig(0);
draw_venn_two(false,true,false,true);
%%% | | | |> Right except Left
%%% | | |> Left and Right
%%% | |> Left except Right
%%% |> Universe
draw_venn_one(false,true) shifted (1in,-1in);
draw_venn_none(true) shifted (2in,-2in);
endfig;
%%% ...
用意されている draw_venn_ホニャララ
の引数には,領域が塗られるかどうかを真偽値で指定する.
塗り潰す色を変更してみたく,実装を流し読みした.パッケージのファイルは $ less $(kpsewhich venn.mp)
で閲覧できる.
venn_shade
がお目当てのものらしく, vardef
で定義されている.だから, input venn;
以降でこれを再定義すればよいだろう.
また,3つの集合を描く draw_venn_three
もある.使ってみよう.
%%% ...
beginfig(1);
vardef venn_shade = black enddef;
draw_venn_three(true,false,true,false,true,true,false,false);
endfig
%%% ...
最後にソースコード全体を掲げる.これを main.mp
としてファイルに保存し, $ mpost main.mp
すれば main-{0,1}.png
が得られる2.
input venn;
prologues:=3;
outputformat:="png";
outputtemplate:="%j-%c.png";
beginfig(0);
draw_venn_two(false,true,false,true);
draw_venn_one(false,true) shifted (1in,-1in);
draw_venn_none(true) shifted (2in,-2in);
endfig;
beginfig(1);
vardef venn_shade = black enddef;
draw_venn_three(true,false,true,false,true,true,false,false);
endfig
bye