1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MetaPostでベン図する

Last updated at Posted at 2021-03-01

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 vennvenndiagram パッケージが検索結果に含まれるようになります.)
README の内容は単簡にして明瞭だ.試してみよう.

main.mpのプリアンブル
input venn;

prologues:=3;
outputformat:="png";
outputtemplate:="%j-%c.png";

%%% ...

input venn; でパッケージを読み込める. prologues ... は出力するファイルに関する指定である.ここではPNGファイルを出力しているが,EPSはもちろん1,SVGも指定できる.

main.mpの1個目の図
%%% ...

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_ホニャララ の引数には,領域が塗られるかどうかを真偽値で指定する.

main-0.png

塗り潰す色を変更してみたく,実装を流し読みした.パッケージのファイルは $ less $(kpsewhich venn.mp) で閲覧できる.
venn_shade がお目当てのものらしく, vardef で定義されている.だから, input venn; 以降でこれを再定義すればよいだろう.
また,3つの集合を描く draw_venn_three もある.使ってみよう.

main.mpの2個目の図
%%% ...

beginfig(1);
  vardef venn_shade = black enddef;
  draw_venn_three(true,false,true,false,true,true,false,false);
endfig

%%% ...

main-1.png

最後にソースコード全体を掲げる.これを main.mp としてファイルに保存し, $ mpost main.mp すれば main-{0,1}.png が得られる2

main.mp
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
  1. MetaPostの "Post" は PostScript から来ている.

  2. MetaPostのコマンド名は,ところによって mp になることもあるだろう.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?