enumerate.sty の改良

名前: 北見 けん
日時: 2003-03-11 00:21:41
IPアドレス: 202.248.114.*

最近、枠囲みに関する話題が多いので、 `fbox'をキーワードに過去の記事を検索していたら、2904を見つけました。 2904では、enumerate.sty を使って、 \begin{enumerate}[\fbox{1}] のようにやりたいがうまくいかない、という問題でした。 そのときは、2907の \begin{enumerate}[\expandafter\fbox 1] などの解決策が示されていました。 しかし、これではユーザーインターフェイス的にはよろしくありません。 やはり、簡単に \begin{enumerate}[\fbox{1}] で済ませられれば使いやすいわけです。 そこで、enumerate.sty を覗いてみると、 ブレイスに対しての考慮もなされているようですが、どうも手抜き実装のようです。 ブレイスがあったら、その中身はチェックせずに、 単にブレイスごと保存するだけでした。 この点を改良してみたのでお試しください。 \documentclass{jarticle} \usepackage{enumerate} \makeatletter \renewcommand{\@enloop@}{% \ifx A\@entemp \def\@tempa{\@enLabel\Alph}% \else \ifx a\@entemp \def\@tempa{\@enLabel\alph}% \else \ifx i\@entemp \def\@tempa{\@enLabel\roman}% \else \ifx I\@entemp \def\@tempa{\@enLabel\Roman}% \else \ifx 1\@entemp \def\@tempa{\@enLabel\arabic}% \else \ifx \@sptoken\@entemp \let\@tempa\@enSpace \else \ifx \bgroup\@entemp \let\@tempa\@enBgroup \else \ifx \egroup\@entemp \let\@tempa\@enEgroup \else \ifx \@enum@\@entemp \let\@tempa\@gobble \else \let\@tempa\@enOther\@enhook \fi\fi\fi\fi\fi\fi\fi\fi\fi \@tempa} \newcommand{\@enBgroup}{% \begingroup \@enLab{}% \afterassignment\@enloop \let\@entemp=} \newcommand{\@enEgroup}{% \edef\@tempa{% \endgroup \@enLab\noexpand\expandafter{% \noexpand\the\noexpand\@enLab{\the\@enLab}}% \def\noexpand\@enThe{\expandafter\noexpand\@enThe}}% \@tempa \afterassignment\@enloop \let\@entemp=} \makeatother \begin{document} \begin{enumerate}[\fbox{1}] \item これは \item \verb!\fbox{1}!で出力 \end{enumerate} \begin{enumerate}[\underline{I}] \item これは \item \verb!\underline{I}!で出力 \end{enumerate} \begin{enumerate}[\fbox{\underline{A}}] \item かっこ悪いですが \item ブレイスのネストもできるという例です \item \verb!\fbox{\underline{A}}!で出力 \end{enumerate} \end{document}

この書き込みへの返事:

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