Re: 2段箇条書き環境の作り方

名前: しっぽ愛好家
日時: 2004-07-15 13:12:53
IPアドレス: 211.4.121.*

>>30320 今回の問題は,決して“初歩的”なものではありませんから, そう恐縮なさることもありません. %%% 今回はたまたま既製品がありましたが,既製品を用いれば済むことであっても %%% “初歩的”で片付けられては,各パッケージの作者の方々が報われませんね… 実際,次の例の程度のことは行うハメになるわけですから. %%% 『実践解説』4.3 節のサンプルコードを改変(今の場合,列数があらかじめ %%% 与えられているので,あの例ほど面倒なことにはなりません). \documentclass{jarticle} \usepackage{keyval} \makeatletter \newcount\@ENUMX@itemcnt \newbox\@ENUMX@currline \newcounter{enumx} \def\theenumx{\@arabic\c@enumx} \def\labelenumx{(\theenumx)} \def\enumeratex{\@testopt\@enumeratex{}} \def\@enumeratex[#1]{% \if@noskipsec \leavevmode \fi \if@inlabel \setbox4=\box\@labels \if@newlist \global\@newlistfalse \fi \global\@inlabelfalse \@minipagefalse \everypar{}% \else \setbox4=\box\voidb@x \fi \ifhmode \par \fi \global\@ENUMX@itemcnt\z@ \let\item\@ENUMX@item \setcounter{enumx}{0}% \setkeys{enumeratex}{% columns=2,%%% 列数 labelsep=.5em,%%% 番号部分と項目の本体との間の間隔 hitemsep=1zw,%%% 隣り合う項目間の間隔(の最小値) vitemsep=0pt}%%% 行間に追加するアキ \setkeys{enumeratex}{#1}%%% デフォルト値をオプション指定で上書き \ifnum\@ENUMX@columns<\@ne %%% 必要があれば,警告します. \def\@ENUMX@columns{1}% \fi \count@\@ENUMX@columns\relax \dimen@\linewidth \advance\dimen@\@ENUMX@hitemsep\relax \divide\dimen@\count@ \advance\dimen@-\@ENUMX@hitemsep\relax \ifdim 1zw>\dimen@ %%% 必要があれば,警告します. \dimen@=1zw\relax \fi \edef\@ENUMX@hsize{\the\dimen@}% \global\setbox\@ENUMX@currline\hbox{}% \setbox\z@\hbox\bgroup} \def\endenumeratex{% \@ENUMX@enditem \ifnum\@ENUMX@itemcnt>\z@ \hbox to\hsize{\box\@ENUMX@currline\hss}% \fi \@endpetrue} % %%% オプションの処理 \define@key{enumeratex}{columns}{\edef\@ENUMX@columns{\number#1}} \define@key{enumeratex}{labelsep}{% \dimen@#1\relax \edef\@ENUMX@labelsep{\the\dimen@}} \define@key{enumeratex}{hitemsep}{% \dimen@#1\relax \edef\@ENUMX@hitemsep{\the\dimen@}} \define@key{enumeratex}{vitemsep}{% \dimen@#1\relax \edef\@ENUMX@vitemsep{\the\dimen@}} % %%% enumeratex 環境内の \item \def\@ENUMX@item{% \@ENUMX@enditem \@ifnextchar[\@ENUMX@xitem\@ENUMX@nitem} \def\@ENUMX@xitem[#1]{% \def\@ENUMX@currlabel{#1}% \@ENUMX@startitem} \def\@ENUMX@nitem{% \refstepcounter{enumx}% \protected@edef\@ENUMX@currlabel{\labelenumx}% \@ENUMX@startitem} \def\@ENUMX@startitem{%%% \item の直後の項目を収めたボックスの開始 \global\advance\@ENUMX@itemcnt\@ne \setbox\tw@\hbox{% \box4\relax \@ENUMX@currlabel\strut \hskip\@ENUMX@labelsep}% \dimen@\@ENUMX@hsize\relax \advance\dimen@-\wd\tw@ \ifdim 1zw>\dimen@ \dimen@=1zw\relax \fi \setbox\z@\vtop\bgroup \hsize\dimen@ \@parboxrestore} \def\@ENUMX@enditem{%%% \item の直前の項目を収めたボックスの完成と配置 \ifhmode \unskip\strut \fi \egroup \ifnum\@ENUMX@itemcnt>\z@ \count@\@ENUMX@itemcnt\relax \divide\count@ \@ENUMX@columns\relax \multiply\count@ -\@ENUMX@columns\relax \advance\count@\@ENUMX@itemcnt \ifnum\count@=\@ne \ifnum\@ENUMX@itemcnt>\@ne \hbox to\hsize{\box\@ENUMX@currline\hss}% \nointerlineskip \penalty\interlinepenalty \vskip\@ENUMX@vitemsep \fi \global\setbox\@ENUMX@currline\hbox{\hskip\@totalleftmargin}% \fi \global\setbox\@ENUMX@currline\hbox{% \unhbox\@ENUMX@currline \box\tw@\box\z@ \hskip\@ENUMX@hitemsep}% \fi} \makeatother \begin{document} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと %%% \begin{itemize} %%% \item %%% ぱたぱたおよよあれれとほほおっとっと \begin{enumeratex}%%% [columns=3,labelsep=1zw,hitemsep=2zw,vitemsep=\baselineskip] \item サンプル1% ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \item サンプル2 \item サンプル3 \item サンプル4 \item サンプル5 \item[($5'$)] ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \end{enumeratex} %%% \end{itemize} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)