Tikz/Pgf を本格的に使う為には,
これまで
picture環境 や
MetaPost with MePoTeX で
作ってきたものをなるたけスムーズに移行できた方が良い。
因にpicture環境での自作マクロをMetaPostに移すのは
とてもスムーズに運んだ。
で,Tikz/Pgfだ。
とりあえず少しは何とかなりそうな感じが見えてきた。
具体的にはこんな具合だ
% 角度表示用
¥def¥kaku#1{#1^{¥circ}}
% 描画環境 ¥begin{qbPMP}ごにょごにょ〜¥end{qbPMP}
¥def¥qbPMP[#1](#2,#3)(#4,#5){
¥begin{tikzpicture}}%
¥def¥endqbPMP{¥end{tikzpicture}}
¥def¥qbPMPt[#1]{%
¥begin{tikzpicture}[scale=#1]}%
¥def¥endqbPMPt{¥end{tikzpicture}}
%
% 方眼
¥def¥qbPlattice(#1,#2)(#3,#4){%(#1,#2)左下座標(#3,#4)幅高さ
¥draw [help lines] (#1,#2) grid (#3,#4);}
% 点の定義
¥def¥qbPointDef#1(#2,#3){¥coordinate (#1) at (#2,#3);}
%¥def¥qbPointsDef#1(#2,#3)#4.{¥qbPointDef#1(#2,#3)¥ifx#4¥@empty¥else¥tracingmacros1¥qbPointsDef#4.¥fi}%
¥def¥qbPointsDef#1(#2,#3)#4.{¥qbPointDef#1(#2,#3)¥ifnot@nil#4¥qbPointsDef#4.}%
% ¥ifnot@nil#1#2#1が¥@nilなら#2を読み捨て、¥@nilなら#2はそのまま({}は一段階はぎ取られる。)
% 点のラベル
¥def¥qbGptlabel#1(#2){
¥node [label={[label distance=-1mm]30*#2:${¥rm #1}$}] at (#1) {};
%¥path (#1) ++(1:30*#2) node {#2};
}
¥def¥qbGptlabels#1(#2)#3.{¥qbGptlabel#1(#2)¥ifnot@nil#3¥qbGptlabels#3.}
% 線分を描く
¥def¥qbGline#1#2{¥draw (#1)--(#2);}
¥def¥qbGlineC[#1]#2#3{¥draw[#1](#2)--(#3);}
¥def¥qbGlines#1#2#3.{¥qbGline#1#2¥ifnot@nil#3¥qbGlines#2#3.}%
¥def¥qbGlineCs[#1]#2#3#4.{¥qbGlineC[#1]#2#3¥ifnot@nil#4¥qbGlineCs[#1]#3#4.}%
% ¥ifnot@nil#1#2#1が¥@nilなら#2を読み捨て、¥@nilなら#2はそのまま({}は一段階はぎ取られる。)
¥def¥qbGlineB#1#2{¥draw [[ultra thick] (#1)--(#2);}
¥def¥qbGlineBC[#1]#2#3{¥draw[#1,ultra thick](#2)--(#3);}
¥def¥qbGlineBs#1#2#3.{¥qbGlineB#1#2¥ifnot@nil#3¥qbGlineBs#2#3.}%
¥def¥qbGlineBCs[#1]#2#3#4.{¥qbGlineBC[#1]#2#3¥ifnot@nil#4¥qbGlineBCs[#1]#3#4.}%
% 円を描く
¥def¥qbGcircl#1#2{¥node [draw, circle through=(#2)] at (#1) {};}
¥def¥qbGcirclC[#1]#2#3{¥node [draw, color=#1, circle through=(#3)] at (#2) {};}
¥def¥qbGcirclB#1#2{¥node [draw, ultra thick, circle through=(#2)] at (#1) {};}
¥def¥qbGcirclBC[#1]#2#3{¥node [draw, ultra thick, color=#1, circle through=(#3)] at (#2) {};}
% 点を黒丸で表示する
¥def¥qbGpoint#1{¥fill (#1) circle (1.6pt);}
¥def¥qbGpoints#1#2.{¥qbGpoint#1¥ifnot@nil#2¥qbGpoints#2.}%
¥def¥qbGpointb#1{¥fill (#1) circle (2pt);}
¥def¥qbGpointB#1{¥fill (#1) circle (3pt);}
¥def¥qbGpointo#1{¥tkzDrawPoints[color=black,fill=white,size=8](#1)}
¥def¥qbGpointO#1{¥tkzDrawPoints[color=black,fill=white,size=12](#1)}
% 中点/分点を計算する
¥def¥qbGmidPoint#1#2#3{¥coordinate (#3) at ($(#1)!.5!(#2)$);}
¥def¥qbGdivPoint#1#2 #3:#4 #5{¥coordinate (#5) at ($(#1)!.(#3/(#3+#4))!(#2)$);}
% 交点
¥def¥qbGcrossPoint #1#2 #3#4 #5{¥tkzInterLL(#1,#2)(#3,#4)¥tkzGetPoint{#5}}
% 垂線の足を求める
¥def¥qbGverticalPoint#1#2#3#4{¥coordinate (#4) at ($(#2)!(#1)!(#3)$);}%BからOAに下ろした垂線の足
% 角の二等分「点」
¥def¥qbGhalfanglePoint#1#2#3 #4{%
¥coordinate (s) at ($(#1)!1cm!(#2)$);¥coordinate (t) at ($(#1)!1cm!(#3)$);
¥coordinate (u) at ($(s)!.5!(t)$);¥tkzInterLL(#1,u)(#2,#3)¥tkzGetPoint{#4}}
% 点の回転
¥def¥qbGrotPoint#1#2 #3 #4{¥coordinate (#4) at ($(#1)!1!#3:(#2)$);}
% 垂直マーク
¥def¥qbGverticalMark#1#2#3{¥draw ($(#2)!8pt!(#1)$)--($(#2)!8pt!(#1)!8pt!90:(#2)$)--($(#2)!8pt!(#3)$);}
% 角の表示
¥def¥qbGangleMarkFC[#1,#2]#3#4#5{¥tkzMarkAngle[fill= #2,size=#1cm,opacity=.5](#5,#4,#3)}
¥def¥qbGangleMarkFCs([#1,#2]#3#4#5#6){¥qbGangleMarkFC[#1,#2]#3#4#5¥ifnot@nil#6¥qbGangleMarkFCs(#6)}%
% 角度のラベル
¥def¥qbGangleLabel#1#2#3(#4){¥tkzLabelAngle[pos = 1](#1,#2,#3){$#4$}}
¥def¥qbGangleLabelp[#1]#2#3#4(#5){¥tkzLabelAngle[pos = #1](#2,#3,#4){$#5$}}
2014-03-01 18:16
nice!(0)
コメント(0)
トラックバック(0)
共通テーマ:学問
コメント 0