名前: しっぽ愛好家 日時: 2003-09-06 14:31:40 IPアドレス: 219.108.37.*
>>21568 トニイさんのお話は, \begin{classify}{\parbox[t]{15zw}{ねむい or お腹がすいた\\ さて、どちら?}} \class{\parbox[t]{10zw}{ねむい\\ \begin{classify}{それは寝不足のため?} \class{そう!!} \end{classify}}} \class{\parbox[t]{10zw}{お腹がすいた\\ \begin{classify}{なぜ食べないの?}% 改行して「なぜ食べないの?」から線を引く \class{\parbox[t]{12zw}{面倒だから\\ なら、あきらめましょう}} \class{\parbox[t]{12zw}{お金が無いから\\ じゃ、たかりましょう}} \end{classify}}} \end{classify} という具合に記述してみてはどうでしょうか,ということだと思います. ところで, >\hbox を \parbox{10zw} に変えてみましたが、 というのは, \classify の定義中の \hbox{・#1} \class の定義中の \setbox\cls@box\hbox{... に現れている \hbox を変更した,ということでしょうか. 確かに,それではうまくいきません. 実際,\setbox によって \box レジスタへ代入できるのは, \hbox,\vbox といったボックス作成用の primitive によって 作成されたボックスですが,\parbox マクロの処理の冒頭部分には (オプション引数の読み取りのための)ボックス作成とは 直接関係しない処理が行われています. ここでは,次のような定義を用いることも可能でしょう. \documentclass{jarticle} \makeatletter \newbox\cls@box \newbox\cls@boxi \def\classify#1{% \leavevmode\hbox\bgroup\vtop\bgroup \offinterlineskip \gdef\cls@dp{0pt}% \setbox\z@\vtop{% \def\\{\egroup\hbox\bgroup\ignorespaces}% \hbox\bgroup#1\egroup}% \dimen@\dp\z@ \advance\dimen@.4zh \hbox{・\box\z@}% \vtop\bgroup \vskip-\dimen@ \hbox\bgroup \hskip\cls@hshift \vrule \vtop\bgroup \vskip\dimen@ \setbox\cls@box\hbox{}% \ignorespaces} \def\endclassify{% \dp\cls@box-\cls@vshift\box\cls@box \egroup\egroup\egroup \hrule\@depth\cls@dp\@height\z@\@width\z@ \egroup\egroup\ignorespaces} \def\class#1{% \box\cls@box \setbox\cls@box\vtop{% \def\\{\egroup\moveright\dimen@\hbox\bgroup\ignorespaces}% \setbox\z@\hbox{\cls@rule}% \dimen@\wd\z@ \hbox\bgroup \box\z@ \vrule\@height\normalbaselineskip\@width\z@\@depth\z@ #1% \egroup}% \@tempdima\dp\cls@box\advance\@tempdima\cls@vshift \xdef\cls@dp{\the\@tempdima}% \ignorespaces} \def\classf#1{\class{\fbox{#1}}} \def\cls@rule{\rule[\cls@vshift]{1cm}{0.4pt}} % Parameters for Horizontal Lines \def\cls@vshift{0.5ex} \def\cls@hshift{.476zw} \makeatother \begin{document} \begin{classify}{ねむい or お腹がすいた\\ さて、どちら?} \class{ねむい\\ \begin{classify}{それは寝不足のため?} \class{そう!!} \end{classify}} \class{お腹がすいた\\ \begin{classify}{なぜ食べないの?}% 改行して「なぜ食べないの?」から線を引く \class{面倒だから\\ なら、あきらめましょう} \class{お金が無いから\\ じゃ、たかりましょう} \end{classify}} \end{classify} \end{document}
この書き込みへの返事: