名前: しっぽ愛好家 日時: 2003-09-08 14:01:22 IPアドレス: 219.108.37.*
>>21582 >右側にどれだけ書けるのか分かるような値って無いんでしょうか。 一般的な状況では,現在の行長は \linewidth で与えられます. (list 系の環境(enumerate 環境など)でのインデント量などを \textwidth から 差し引いた値になっています.) しかし,今回の状況では,個々の classify 環境あるいは \class マクロでの インデント量は \linewidth に反映されてはいないので,結局, >% 必要であれば、インデントした値をどこかに覚えて置いて >% \begin{minipage}{\textwidth - \インデントの量} ってする という方針を用いることになるでしょう. 結局,次のような処理を念頭に置いていらっしゃったのでしょうか? %%% いちいち \parbox を使用しなくても,classify 環境あるいは \class マクロの %%% 引数自身を \parbox{<適当な幅>}{...} として扱うようにしてみました. \documentclass{jarticle} \makeatletter \newbox\cls@box \newbox\cls@boxi \long\def\classify#1{% \if@noskipsec \leavevmode \fi \ifhmode \unskip \par\fi \noindent\hbox\bgroup\vtop\bgroup \edef\outerlineskiplimit{\the\lineskiplimit}% \offinterlineskip \gdef\cls@dp{0pt}% \advance\linewidth-1zw \hsize\linewidth \@classify@make@item\relax{#1}% \dimen@\dp\z@ \advance\dimen@.4zh \hbox{・\box\z@}% \vtop\bgroup \vskip-\dimen@ \hbox\bgroup \hskip\cls@hshift \vrule \vtop\bgroup \vskip\dimen@ \@parboxrestore \fussy \setbox\cls@box\hbox{}% \ignorespaces} \long\def\@classify@make@item#1#2{% \setbox\z@\vtop{% \lineskiplimit\outerlineskiplimit #1\relax \@parboxrestore \fussy \leavevmode \vrule\@height\ht\strutbox \@depth\z@ \@width\z@ #2}} \def\endclassify{% \dp\cls@box-\cls@vshift\box\cls@box \egroup\egroup\egroup \hrule\@depth\cls@dp\@height\z@\@width\z@ \egroup\egroup\ignorespaces} \long\def\class#1{% \box\cls@box \setbox4\hbox{\cls@rule}% \@tempdima\wd4\relax \edef\@class@indent{\the\@tempdima}% \advance\@tempdima\cls@hshift\relax \advance\@tempdima.4\p@ %%% thickness of \vrule \advance\@tempdima-1zw\relax \@classify@make@item {\advance\linewidth-\@tempdima \hsize\linewidth}% {\noindent\hskip-\@class@indent\box4\relax#1}% \setbox\cls@box\vtop{\moveright\@class@indent\box\z@}% \@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{itemize} %%%\item これは,ただの例です. \begin{classify} {最初のクラス\\ 強制改行を含むような項目を用意してみます.} \class{個々のエントリーにも\\ 強制改行を入れてみます. \begin{classify} {次は,複数行にわたるような非常に長い見出しを持ったクラスの例を 考えなければならないのですが…うまく複数行になっているでしょうか?} \class{\dotfill とりあえず,うまくいっているようですね.} \end{classify}} \class{次のエントリーです. \begin{classify}{ここは短くても構いません.} \class{今度は,個々のエントリーが複数行にわたるような場合を 考えてみましょう…やはりうまく複数行になっていればよいのですが…} \class{大丈夫みたいですね.} \end{classify}} \end{classify} %%%\end{itemize} \end{document}
この書き込みへの返事: