矢印の形
本編 関係を表す矢印の形をどうしようか? - 檜山正幸のキマイラ飼育記 を描くのに使ったのは、次のコマンド。
// -*- coding: utf-8 -*-/** ロバストネス風の図 */
module g;command arrow
{
@[default(false)]
"total": boolean?,@[default(false)]
"inj": boolean?,@[default(false)]
"surj": boolean?,@[default(false)]
"multi": boolean?,
}
[string name, string from, string to] :: void -> gv:Edge
{
%total | case {true=>"tee", false=>""} > tail1;
%inj | case {true=>"inv", false=>""} > tail2;
%surj | case {true=>"tee", false=>""} > head1;
%multi | case {true=>"crow", false=>"normal"} > head2;[%tail1, %tail2] | text:concat | cond{""=>"none", *=>pass} > tail;
[%head1, %head2] | text:concat > head;[
%1 > name,
%2 > from,
%3 > to,
];%name > label;
gv:edge --dir=both --arrowtail=%tail --arrowhead=%head --label=%label %from %to
};