Re: [Q]figure などの貼込み位置を定義記述と分離独立させる方法は?

名前: しっぽ愛好家
日時: 2003-08-28 19:23:08
IPアドレス: 210.234.44.*

>>21244 float の記述位置と出力位置を異なるものにしたい場合, ``相互参照'' と同様に取り扱うと,とりあえず, 下記の例のようにすることができます なお,下記の定義例を用いた場合, \begin{savefloat}{<label>} %%% figure 環境あるいは table 環境の記述 \end{savefloat} %%% <label> は(\label の引数と同様の)適当な識別文字列 のようにして,savefloat 環境の中身を保存します.それを \putfloat{<label>} の位置に出力します.また, \putfloat[<pos>]{<label>} のように記述すると,<label> に対応する savefloat 環境の中身にある 個々の float に位置指定 <pos> を適用します. %%% \putfloat のオプション引数を用いた場合には, %%% 対応する savefloat 環境内の個々の float の位置指定は \putfloat の %%% オプション引数で上書きされます. [注意] この定義例では,savefloat 環境の中身を一度 aux ファイルに書き出し, その後 *マクロの引数として* 読み取ります.したがって, verbatim 環境(あるいは \verb マクロ)の類を含む記述を savefloat 環境の 中身に入れた場合,意図どおりには処理されません. %%% そのような場合は,savefloat 環境の中身にする記述を別ファイルにし, %%% savefloat 環境の中ではそのファイルを \input で読み込むようにすると, %%% うまくいくはずです. \documentclass{jarticle} \makeatletter \def\putfloat{\@testopt\@putfloat{}} \def\@putfloat[#1]#2{% #1: float placement, #2: label \@ifundefined{@FC@#2}% {\typeout{<<<Float-id ``#2'' is not defined.>>>}% \G@refundefinedtrue}% {\gdef\@curr@fps{#1}% \@nameuse{@FC@#2}% \global\let\@curr@fps\@empty}} \def\savefloat#1{% #1: label \edef\@curr@floatid{#1}% \let\do\@makeother \dospecials \@set@active@hash \def\par{^^J}% \obeylines \@savefloat} \global\let\@curr@fps\@empty \let\@@xfloat\@xfloat \def\@xfloat#1[#2]{% \ifx\@curr@fps\@empty \protected@edef\@tempa{\noexpand#1[#2]}% \else \protected@edef\@tempa{\noexpand#1[\@curr@fps]}% \fi \expandafter\@@xfloat\@tempa} \begingroup \catcode`\[=1 \catcode`\]=2 \catcode`\{=12 \catcode`\}=12 \catcode`\|=0 \catcode`\\=12 |gdef|@savefloat#1\end{savefloat}[% |def|@curr@float@contents[#1]% |end[savefloat]] |endgroup \def\endsavefloat{% \if@filesw \immediate\write\@auxout{% \string\FloatContents{\@curr@floatid}{\@curr@float@contents}}% \fi} \begingroup \catcode`\#=\active \xdef\@set@active@hash{% \catcode`\#=\active \def\noexpand#{\string#\string#}}% \endgroup \let\@list@of@floatid\@empty \global\let\@appeared@floatid\@empty \global\let\@float@label@warning\@empty \def\@tempa{\long\def\@newl@bel##1##2##3} \expandafter\@tempa\expandafter{\@newl@bel{#1}{#2}{#3}} \def\@tempa{\long\def\@testdef##1##2##3} \expandafter\@tempa\expandafter{\@testdef{#1}{#2}{#3}} \def\FloatContents{\@newl@bel{@FC}} \makeatother \begin{document} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \putfloat[t]{fig1} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \putfloat{fig2} \putfloat[b]{table1} \begin{savefloat}{fig1} \begin{figure}\centering 図の記述(1) \caption{図のサンプル(1)} \end{figure}% \end{savefloat} \begin{savefloat}{fig2} \begin{figure}\centering 図の記述(2) \caption{図のサンプル(2)} \end{figure}% \end{savefloat} \begin{savefloat}{table1} \begin{table}\centering \caption{表のサンプル} 表の記述 \end{table}% \end{savefloat} \end{document}

この書き込みへの返事:

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