レポートでカルノー図が必要になったので、LaTeXでカルノー図描けるようにした。
これを参考に、ちょっとだけ変えた。
こんなのが生成できる。便利だ。
具体的にはまず\documentclass
を
\documentclass[a4j,10pt,dvipdfmx]{jarticle}
みたいな感じにする。dvipdfmx
を入れないと他の画像類がうまく表示されないっぽい。次に
\usepackage[dvipdfmx]{graphicx} \usepackage{tikz} \usetikzlibrary{matrix,calc}
と上のソースの8行目くらいから73行目くらいの両方をプリアンブルに突っ込む。
本文に
\begin{center} \begin{figure} \centering \begin{Karnaugh}{$\tt{x_1 x_0}$}{$\tt{y_0 y_0}$} \contingut{0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0} \implicant{4}{12} \implicant[3pt]{12}{9} \implicantdaltbaix[4pt]{12}{14} \end{Karnaugh} \caption{カルノー図} \end{figure} \end{center}
みたいなのを書くと生成できる。\begin{Karnaugh}{$1}{$2}
で$1
と$2
をよしなに弄るとラベルを変更することができる。\contingut{0,0,0,0,1,0,0,0,1,1,0,0,1,1,1,0}
みたいに書くと
00 | 01 | 11 | 10 | |
---|---|---|---|---|
00 | 0 | 4 | 12 | 8 |
01 | 1 | 5 | 13 | 9 |
11 | 3 | 7 | 15 | 11 |
10 | 2 | 6 | 14 | 10 |
みたいな順番で入る。これは真理値表を書いて横→縦に4bitを見た時0000, 0001, 0010...となるようにしているため。本家はこれが縦→横になってた。あとはラベルがabcdだけだったから引数で渡せるようにした。
囲む方法は3つあって
\implicant{$1}{$2}
\implicantcostats{$1}{$2}
\implicantdaltbaix{$1}{$2}
て感じ。それぞれ$1
と$2
は上の表の番号を書けばよろしい。\implicant
は通常の囲み、\implicantcostats
は横方向で左右をまたぐときに使う。\implicantdaltbaix
は縦方向で上下をまたぐときに使う。まぁそれぞれ使ってみればわかると思う。
\implicant[3pt]{$1}{$2}
みたいに指定することでボーダーの幅を少し広げることができる。これで重なった場合も綺麗になる。
本家は4x4
だけじゃなくて4x2
もあったんだけど、今回は使わないので消した。diffをとればだいたい同じ要領で変更できると思う。
なにはともあれこれでレポートが書きやすくなった。
追記: 3変数版も書きました