Re: newenvironment の中で tabularx、hline を使う場合のエラー

名前: .
日時: 2005-07-28 21:39:46
IPアドレス: 220.217.66.*

>>37075 tabularx 環境(を含むような環境)は“普通の”環境ではなく, 環境の中身となる表の全体が“見えている”ことを前提としています. # \TX@get@body の定義を参照すると,環境の中身(の見えている部分)を # \toks@ に収めていることがわかります. # そして,環境の終了処理(\TX@endtabularx)では,表の作成の一切の # 処理が終了したのち,\end{<環境名>} を追加しています(それゆえ, # 件の \hline がエラーを引き起こしています). そこで,本来なら“間接的な”解決法として挙げられている方法を 用いることになります. もっとも,次のようにごまかすことも一応できるようです. \documentclass{jarticle} \usepackage{tabularx} \makeatletter \def\TX@endtabularx{% \expandafter\expandafter\expandafter\TX@split@endenv \csname end\TX@\endcsname\endtabularx\@nil\endtabularx\@nnil \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}% \let\verb\TX@verb \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% \edef\TX@ckpt{\cl@@ckpt}% \let\@elt\relax \TX@old@table\maxdimen \TX@col@width\TX@target \global\TX@cols\@ne \TX@typeout@ {\@spaces Table Width\@spaces Column Width\@spaces X Columns}% \TX@trial{\def\NC@rewrite@X{% \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}% \loop \TX@arith \ifTX@ \TX@trial{}% \repeat {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext \csname tabular*\expandafter\endcsname\expandafter\TX@target \the\toks@ \csname endtabular*\endcsname}% \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn \ifnum0=`{\fi \expandafter}\expandafter \def\expandafter\TX@endcmd\expandafter{\TX@endcmd}% \expandafter\let\csname end\TX@\endcsname\TX@endcmd \expandafter\end\expandafter{\TX@}} \long\def\TX@split@endenv#1\endtabularx#2\endtabularx#3\@nnil{% \def\@tempa{#2}% \ifx\@tempa\@nnil \def\TX@endcmd{#1}% \else \def\TX@endcmd{#2}% \@temptokena{#1}% \edef\@tempa{\the\toks@\the\@temptokena}% \toks@\expandafter{\@tempa}% \fi} \makeatother \newenvironment{newp} {\flushleft \tabularx{150mm}{|X|X|X|X|X|} \hline} %{ \endtabularx \endflushleft} % <-- OK {\hline \endtabularx \endflushleft} % <-- とりあえず,こちらも OK のはず. \begin{document} \begin{newp} ああ&いい&うう&ええ&おお \\ \hline ああ&いい&うう&ええ&おお \\ \hline ああ&いい&うう&ええ&おお \\ \end{newp} \begin{newp} ああ&いい&うう&ええ&おお \\ \end{newp} \end{document}

この書き込みへの返事:

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