名前: しっぽ愛好家 日時: 2003-04-26 12:35:36 IPアドレス: 211.4.46.*
>>18326 個々の脚注の出力順序を変更しない(記述順 = 出力順でよい(*))のでしたら, 単に脚注記号の形式を変更したマクロ(\footnote の類の書き換え)を 追加すればよく,その方針での回答はすでになされているようですね. %%% (*) あるいは,適宜 \footnotemark/\footnotetext の組に書き換える, %%% といった方法で,脚注の出力順を変更してもよいわけですが. ところで,私は,下記の例に示すような処理を想像したのですが,どうでしょうか. %%% ``脚注を二段階に分けて、上段、下段にそれぞれの注記が収まれば'' という %%% のを ``脚注の種類ごとに集めて出力'' と思ったのですが… \documentclass{jarticle} \makeatletter \newcounter{varfootnote}%%% \varfootnote の番号づけに用いる LaTeX カウンタ \def\thevarfootnote{\@alph\c@varfootnote} \def\@makevarfnmark{%%% \varfootnote の脚注記号の書式 \hbox{\@textsuperscript{\normalfont\@varthefnmark}}} \def\varfootnote{% \@ifnextchar[% \@xvarfootnote {\stepcounter{varfootnote}% \protected@edef\@varthefnmark{\thevarfootnote}% \@varfootnotemark\@varfootnotetext}} \def\@xvarfootnote[#1]{% \begingroup \c@varfootnote=#1\relax \unrestored@protected@xdef\@varthefnmark{\thevarfootnote}% \endgroup \@varfootnotemark\@varfootnotetext} \def\varfootnotemark{% \@ifnextchar[% \@xvarfootnotemark {\stepcounter{varfootnote}% \protected@xdef\@varthefnmark{\thevarfootnote}% \@varfootnotemark}} \def\@xvarfootnotemark[#1]{% \begingroup \c@varfootnote=#1\relax \unrestored@protected@xdef\@varthefnmark{\thevarfootnote}% \endgroup \@varfootnotemark} \def\@varfootnotemark{% \leavevmode \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi \@makevarfnmark \ifhmode\spacefactor\@x@sf\fi \relax} \def\varfootnotetext{% \@ifnextchar[% \@xvarfootnotenext {\protected@xdef\@varthefnmark{\thevarfootnote}% \@varfootnotetext}} \def\@xvarfootnotenext[#1]{% \begingroup \c@varfootnote=#1\relax \unrestored@protected@xdef\@varthefnmark{\thevarfootnote}% \endgroup \@varfootnotetext} \long\def\@@footnotetext#1#2#3#4{% \ifydir \def\@tempa{\yoko}\else \def\@tempa{\tate}\fi \insert\footins{\@tempa \reset@font\footnotesize \interlinepenalty\interfootnotelinepenalty \splittopskip\footnotesep \splitmaxdepth \dp\strutbox \floatingpenalty \@MM \protected@edef\@currentlabel{% \csname p@footnote\endcsname#2}% \color@vbox \vbox{\hsize\columnwidth \@parboxrestore #3% \@makefntext{% \rule\z@\footnotesep \ignorespaces#4\@finalstrut\strutbox \par\penalty#1}}% \color@endbox}}% \def\@footnotetext{% \@@footnotetext\z@\@thefnmark\relax} \def\@varfootnotetext{% \@@footnotetext\@ne\@varthefnmark{\let\@thefnmark\@varthefnmark}} % %%% 脚注部分の再構築 \newbox\@reconstructed@footnotesA \newbox\@reconstructed@footnotesB \def\@reconstruct@footnotes{% \global\setbox\@reconstructed@footnotesA\box\voidb@x \global\setbox\@reconstructed@footnotesB\box\voidb@x \setbox\z@\vbox{\unvbox\footins\@reconstruct@footnotes@loop}% \unvbox\@reconstructed@footnotesA \unvbox\@reconstructed@footnotesB} \def\@reconstruct@footnotes@loop{% \setbox\z@\lastbox \ifvoid\z@\else \setbox\z@\vbox{% \unvbox\z@ \count@\lastpenalty \edef\@tempa{\count@=\the\count@\relax}% \expandafter}\@tempa \ifnum\count@>\z@%%% \varfootnote に対応する脚注 \global\setbox\@reconstructed@footnotesB\vbox{% \unvbox\z@ \unvbox\@reconstructed@footnotesB}% \else%%% \footnote に対応する脚注 \global\setbox\@reconstructed@footnotesA\vbox{% \unvbox\z@ \unvbox\@reconstructed@footnotesA}% \fi \expandafter\@reconstruct@footnotes@loop \fi} % %%% ページ構成処理の再定義 %%% \unvbox\footins を \@reconstruct@footnotes に変更 \def\@makecol{% \setbox\@outputbox\box\@cclv \xdef\@freelist{\@freelist\@midlist}% \global\let\@midlist\@empty \@combinefloats \ifvbox\@kludgeins \@makespecialcolbox \else \setbox\@outputbox\vbox to\@colht{% \@texttop \dimen@\dp\@outputbox \unvbox\@outputbox \iftdir \hskip\z@ \else \vskip-\dimen@ \fi \@textbottom \ifvoid\footins\else % for pLaTeX \vskip \skip\footins \color@begingroup \normalcolor \footnoterule \@reconstruct@footnotes \color@endgroup \fi}% \fi \global\maxdepth\@maxdepth} \def\@makespecialcolbox{% \setbox\@outputbox\vbox{% \@texttop \dimen@\dp\@outputbox \unvbox\@outputbox \vskip-\dimen@}% \@tempdima\@colht \ifdim\wd\@kludgeins>\z@ \advance\@tempdima-\ht\@outputbox \advance\@tempdima\pageshrink \setbox\@outputbox\vbox to \@colht{% \unvbox\@outputbox \vskip\@tempdima \@textbottom \ifvoid\footins\else % for pLaTeX \vskip\skip\footins \color@begingroup \normalcolor \footnoterule \@reconstruct@footnotes \color@endgroup \fi}% \else \advance\@tempdima-\ht\@kludgeins \setbox\@outputbox\vbox to \@colht{% \vbox to\@tempdima{% \unvbox\@outputbox \@textbottom \ifvoid\footins\else % for pLaTeX \vskip\skip\footins \color@begingroup \normalcolor \footnoterule \@reconstruct@footnotes \color@endgroup \fi}% \vss}% \fi {\setbox\@tempboxa\box\@kludgeins}} \makeatother \begin{document} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \footnote{これは,短い脚注.} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \varfootnote{これは,短い脚注.} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \footnote{これは,複数行にわたるような長い脚注を作成する例です. この場合,脚注の途中でのページ分割をどうするかが問題になります. まあ,脚注が複数ページにわかれるのはあまりよくないので, 脚注の途中でのページ分割を行わないことにするのは, ある意味では妥当ですが…} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \varfootnote{これは,複数行にわたるような長い脚注を作成する例です. この場合,脚注の途中でのページ分割をどうするかが問題になります. まあ,脚注が複数ページにわかれるのはあまりよくないので, 脚注の途中でのページ分割を行わないことにするのは, ある意味では妥当ですが…} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \footnote{これは,短い脚注.} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \varfootnote{これは,短い脚注.} ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと \end{document}
この書き込みへの返事: