何
レポートに載せる必要があってTeXとかで作ろうとしたけど良い感じのを見つけられなかったので結局SATySFiで書いた。
こんなんが
let-math \dc = ${\dontcare} in
{
\karnaugh-map(${xy})(${zw}) [
${| 1 | 0 | 0 | 1 |};
${| 1 | 1 | 0 | 1 |};
${| \dc | \dc | \dc | \dc |};
${| 1 | 0 | \dc | \dc |};
] [
Karnaugh.box (0, 1);
Karnaugh.tall (3, 0);
];
}
{
\karnaugh-map(${AB})(${C}) [
${| 1 | 1 | 0 | 1 |};
${| 1 | 0 | 0 | 0 |};
] [
Karnaugh.slim (0, 0);
Karnaugh.flat (0, 0);
Karnaugh.flat (3, 0);
];
}
こんなんになる
(囲み枠のマージンがそれぞれ変わるようになっていないので線が重なって見にくい。)
方法
SATySFiの表組では、表の内容のほかに、各行/列の境界の座標を受け取って表の罫線を返す関数を指定できる。その関数として、カルノー図の囲み枠(?)を返すものを渡すことで表内に囲み枠を描けるので、頑張ってカルノー図が書けるようになった。Karnaugh.box
等はそのような関数を作る関数である。