emath BBS

新規発言一覧最新記事過去一覧検索HOME

No.8476  Re:\KTkukanの高さに就いて
発言者: 石原 守
発言日: 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

Pass 保存


CGIROOM