発言者: 石原 守
発言日: 2009 12/13 16:42
発言元: ntchba039014.chba.nt.ngn.ppp.infoweb.ne.jp
\documentclass{jarticle}
\usepackage[notMy]{emathP}
\makeatletter
\def\@@@KTkukan[#1]#2[#3]#4{%
\edef\KT@kuromaru{\empty}%
\edef\KT@siromaru{\empty}%
\def\KTkukan@sub##1{{%
\Cfor{\edef\@kukans{##1}}{\not\equal{\@kukans}{}}{}\do{%
\strsep\@kukans{|}\@kukan\@kukans%
\headchar\@kukan\@kukan@l\@kukan@t
\tailchar\@kukan@t\@kukan@m\@kukan@r
\strsep\@kukan@m{,}\@kukan@a\@kukan@b
\ifthenelse{\equal\@kukan@a{}}{%
\edef\@kukan@A{(\xmin,0)}\edef\@kukan@AA{(\xmin,\@takasa)}%
}{%
\headchar\@kukan@a\@kukan@h\kukan@a@
\if <\@kukan@h\relax
\strsep\kukan@a@{>}\kukan@ang\@kukan@a
\edef\@kukan@A{(\@kukan@a,0)}%
\Landk{(\xmin,\@takasa)}{(\xmax,\@takasa)}\@kukan@A\kukan@ang\@kukan@AA
\if\@kukan@l(\relax
\xdefappend\KT@siromaru{\@kukan@A}%
\else
\xdefappend\KT@kuromaru{\@kukan@A}%
\fi
\else
\edef\@kukan@A{(\@kukan@a,0)}%
\if\@kukan@l(\relax
\Landk{(\xmin,\@takasa)}{(\xmax,\@takasa)}\@kukan@A\KTo@ang\@kukan@AA
\xdefappend\KT@siromaru{\@kukan@A}%
\else%\edef\@kukan@AA{(\@kukan@a,\@takasa)}%
\Landk{(\xmin,\@takasa)}{(\xmax,\@takasa)}\@kukan@A\KTc@ang\@kukan@AA
\xdefappend\KT@kuromaru{\@kukan@A}%
\fi
\fi
% \Drawline{\@kukan@A\@kukan@AA}%
}%
\ifthenelse{\equal\@kukan@b{}}{%
\edef\@kukan@B{(\xmax,0)}\edef\@kukan@BB{(\xmax,\@takasa)}%
}{%
\headchar\@kukan@b\@kukan@h\kukan@b@
\if <\@kukan@h\relax
\strsep\kukan@b@{>}\kukan@ang\@kukan@b
\Sub{180}\kukan@ang\kukan@ang
\edef\@kukan@B{(\@kukan@b,0)}%
\Landk{(\xmin,\@takasa)}{(\xmax,\@takasa)}\@kukan@B\kukan@ang\@kukan@BB
\if\@kukan@r)\relax
\xdefappend\KT@siromaru{\@kukan@B}%
\else
\xdefappend\KT@kuromaru{\@kukan@B}%
\fi
\else
\edef\@kukan@B{(\@kukan@b,0)}%
\if\@kukan@r)\relax
\Landk{(\xmin,\@takasa)}{(\xmax,\@takasa)}\@kukan@B\KTo@ang@\@kukan@BB
\xdefappend\KT@siromaru{\@kukan@B}%
\else%\edef\@kukan@BB{(\@kukan@b,\@takasa)}%
\Landk{(\xmin,\@takasa)}{(\xmax,\@takasa)}\@kukan@B\KTc@ang@\@kukan@BB
\xdefappend\KT@kuromaru{\@kukan@B}%
\fi
\fi
% \Drawline{\@kukan@B\@kukan@BB}%
}%
\ifthenelse{\equal\@kukan@a{}}{%
\Drawline{\@kukan@AA\@kukan@BB\@kukan@B}%
}{%
\ifthenelse{\equal\@kukan@b{}}{%
\Drawline{\@kukan@A\@kukan@AA\@kukan@BB}%
}{%
\Drawline{\@kukan@A\@kukan@AA\@kukan@BB\@kukan@B}%
}%
}%
\ifthenelse{\equal{#1}\empty}{}{%
\ifthenelse{\equal{#1}{auto}}{%
\sPut\@kukan@AA\@kukan@BB{{%
\fboxsep\z@\makebox(0,0){\colorbox{white}{\maru\i@kukan}}}}%
}{%
\ifthenelse{\equal\kukan@lbli\empty}{}{%
\sPut\@kukan@AA\@kukan@BB{{%
\ifnum\KT@lblsyu>\z@
\fboxsep\z@\makebox(0,0){\colorbox{white}{\kukan@lbli}}%
\else
\fboxsep\z@\makebox(0,0){\colorbox{white}{\eqref\kukan@lbli}}%
\fi
}}%
}%
}}%
}%
}}%
%
\edef\i@kukan{0}%
\Cfor{\edef\@kukans{#2}\edef\kukan@lbl{#1}}{\not\equal{\@kukans}{}}{}\do{%
\strsep\@kukans{;}\@kukan\@kukans%
\Incr\i@kukan\Mul\i@kukan\kukantakasa\@takasa
\strsep\kukan@lbl{;}\kukan@lbli\kukan@lbl
\KTkukan@sub\@kukan
}%
\ifx\empty\KT@kuromaru\else\Kuromaru\KT@kuromaru\fi
\ifx\empty\KT@siromaru\else\Siromaru\KT@siromaru\fi
%
\edef\KT@kuromaru{}%
\edef\KT@siromaru{}%
\begingroup
\edef\iro@{\empty}%
\ifx\empty #3\else\setkeys{KTkukan}{#3}\fi
\Cfor{\edef\@kukans{#4}}{\not\equal{\@kukans}{}}{}\do{%
\Strsep\@kukans{|}\@kukan\@kukans%
\headchar\@kukan\@kukan@l\@kukan@t
\if <\@kukan@l\relax
\strsep\@kukan@t{>}\kukan@opt\kukan@tmp
\headchar\kukan@tmp\@kukan@l\@kukan@t
\else
\EMedef\kukan@opt{\KT@paintoption}%
\fi
\tailchar\@kukan@t\@kukan@m\@kukan@r
\strsep\@kukan@m{,}\@kukan@a\@kukan@b
\ifthenelse{\equal\@kukan@a{}}{%
\edef\@kukan@A{(\xmin,0)}\edef\@kukan@AA{(\xmin,\kukantakasa)}%
}{%
\headchar\@kukan@a\@kukan@h\kukan@a@
\if <\@kukan@h\relax
\strsep\kukan@a@{>}\kukan@ang\@kukan@a
\edef\@kukan@A{(\@kukan@a,0)}%
\Landk{(\xmin,\kukantakasa)}{(\xmax,\kukantakasa)}\@kukan@A\kukan@ang\@kukan@AA
\else
\edef\@kukan@A{(\@kukan@a,0)}%
\if\@kukan@l(\relax
\Landk{(\xmin,\kukantakasa)}{(\xmax,\kukantakasa)}\@kukan@A\KTo@ang\@kukan@AA
\else%\edef\@kukan@AA{(\@kukan@a,\kukantakasa)}%
\Landk{(\xmin,\kukantakasa)}{(\xmax,\kukantakasa)}\@kukan@A\KTc@ang\@kukan@AA
\fi
\fi
\if\@kukan@l(\relax
\edefappend\KT@siromaru{\@kukan@A}%
\else
\edefappend\KT@kuromaru{\@kukan@A}%
\fi
}%
\ifthenelse{\equal\@kukan@b{}}{%
\edef\@kukan@B{(\xmax,0)}\edef\@kukan@BB{(\xmax,\kukantakasa)}%
}{%
\headchar\@kukan@b\@kukan@h\kukan@b@
\if <\@kukan@h\relax
\strsep\kukan@b@{>}\kukan@ang\@kukan@b
\Sub{180}\kukan@ang\kukan@ang
\edef\@kukan@B{(\@kukan@b,0)}%
\Landk{(\xmin,\kukantakasa)}{(\xmax,\kukantakasa)}\@kukan@B\kukan@ang\@kukan@BB
\else
\edef\@kukan@B{(\@kukan@b,0)}%
\if\@kukan@r)\relax
\Landk{(\xmin,\kukantakasa)}{(\xmax,\kukantakasa)}\@kukan@B\KTo@ang@\@kukan@BB
\else%\edef\@kukan@BB{(\@kukan@b,\kukantakasa)}%
\Landk{(\xmin,\kukantakasa)}{(\xmax,\kukantakasa)}\@kukan@B\KTc@ang@\@kukan@BB
\fi
\fi
\if\@kukan@r)\relax
\edefappend\KT@siromaru{\@kukan@B}%
\else
\edefappend\KT@kuromaru{\@kukan@B}%
\fi
}%
% \edef\KT@tmp{\KT@paintoption{\@kukan@A\@kukan@AA\@kukan@BB\@kukan@B\@kukan@A}}%
\edef\KT@tmp{\kukan@opt{\@kukan@A\@kukan@AA\@kukan@BB\@kukan@B\@kukan@A}}%
\put(0,0){%
\ifx\empty\iro@\else\color{\iro@}\fi
\expandafter\emPaint\KT@tmp
\ifx\empty\KT@siromaru\else\Siromaru\KT@siromaru\fi% ここと
\ifx\empty\KT@kuromaru\else\Kuromaru\KT@kuromaru\fi% ここを交換
}%
}%
\endgroup
}%
\makeatother
\begin{document}
\begin{zahyou*}[ul=15mm](-2, 3)(-1, 3)
\ArrowLine{(\xmin, 0)}{(\xmax, 0)}
\Put{(\xmax, 0)}[s]{$x$}
\Put{(-1.333, 0)}[s]{$-\bunsuu43$}
\Put{(0, 0)}[s]{O}
\Put{(1, 0)}[s]{$1$}
\Put{(2, 0)}[s]{$2$}
\KuromaruHankei{1.5pt}
\SiromaruHankei{3pt}
%\KTkukan[eq1;eq2;eq3]{(-1.333, 0);[0, 1);[1, 2)}{(-1.333, 0)|[0, 1)|[1, 2)}
\KTkukan[]{(-1.333, 0)|[0, 1)|[1, 2)}{(-1.333, 0)|[1, 2)|[0, 1)}
\end{zahyou*}
\end{document}
黒丸が白丸に隠されてしまうので,2行交換しました。
同じ高さにすると別々のラベルはつけられないので,
自分で\Putを利用して配置するしかないでしょう。
▼関連発言
│
└◆8475:\KTkukanの高さに就いて [涼流] 12/13 15:38
└◆8476:Re:\KTkukanの高さに就いて [石原 守] 12/13 16:42
└◆8477:Re[2]:\KTkukanの高さに就いて [涼流] 12/13 19:09
└◆8478:Re[3]:\KTkukanの高さに就いて [石原 守] 12/13 19:36<-last