Re: 脚注の多段組み

名前: しっぽ愛好家
日時: 2003-10-09 12:27:09
IPアドレス: 219.108.34.*

>>22581 その問題は ``The TeXbook'' の Appendix D で取り上げられています. (本文が 1 段組のときに)脚注を n 段組にする場合,要点は次のとおりです. ・\count\footins(脚注のなすボックスの高さと,脚注がページ内で 実際に占有する部分の高さの比の 1000 倍)をデフォルトの値の 1/n にする. ・\dimen\footins(1 ページあたりの脚注の高さの上限)を デフォルトの値の n 倍にする. ・ページ出力時に \box\footins(脚注自身が収められたボックス)を n 等分して 並べる. ・脚注のテキストの作成時(\@footnotetext の処理時)には, テキストの幅(\hsize)を n 段組の際の行長に設定する. %%% ただし,脚注のテキストが正確に n 等分できるとは限らない %%%(脚注の行数が n の倍数でないような場合があります)ので, %%% \count\footins を単純に脚注が 1 段組である場合の 1/n にするのは %%% 大雑把すぎるのですが,その点に関する調整は保留します. とりあえず,次のようなところでしょうか. \documentclass{jarticle} \makeatletter \def\footnotecolumns{3}%%% 脚注を n 段組にする場合,直前の 3 を n に変更します. \def\footnotecolumnsep{20pt}%%% 脚注に対して用いる \columnsep \dimen@\textwidth \advance\dimen@\footnotecolumnsep\relax \divide\dimen@ \footnotecolumns\relax \advance\dimen@ -\footnotecolumnsep\relax \xdef\footnotecolumnwidth{\the\dimen@} \multiply\dimen\footins \footnotecolumns\relax \divide\count\footins \footnotecolumns\relax % %%% 脚注テキスト作成処理の変更 \long\def\@footnotetext#1{% \insert\footins{% \reset@font\footnotesize \interlinepenalty\interfootnotelinepenalty \splittopskip\footnotesep \splitmaxdepth \dp\strutbox \floatingpenalty \@MM \hsize\footnotecolumnwidth%%% original: \columnwidth \@parboxrestore %%% \clubpenalty\@M \protected@edef\@currentlabel{% \csname p@footnote\endcsname\@thefnmark}% \color@begingroup \penalty-\@lowpenalty%%% added \@makefntext{% \rule\z@\footnotesep \ignorespaces#1% \@finalstrut\strutbox}% \color@endgroup}}% % %%% 脚注部分の再構成 \newif\if@footnote@tempsw \def\@footnote@height@fuzz{1pt} \def\@reconstruct@footnotes{% \begingroup \footnotesize \ifdim\ht\footins<\footnotecolumns\baselineskip \unvbox\footins \else \splitmaxdepth\maxdepth \splittopskip\footnotesep \vbadness\@M \vfuzz\maxdimen \setbox\z@\box\footins \@tempdima\ht\z@ \advance\@tempdima\dp\z@ \@tempdimb\@tempdima \divide\@tempdimb\footnotecolumns\relax \@tempswatrue \@whilesw\if@tempswa\fi{% \dimen@\@tempdima \advance\dimen@\@tempdimb \divide\dimen@\tw@ \@split@footnotes \dimen@ii\@tempdima \advance\dimen@ii-\@tempdimb \ifdim\dimen@ii<.01\p@ \@tempswafalse \else \if@footnote@tempsw \@tempdima\dimen@ \else \@tempdimb\dimen@ \fi \fi}% \dimen@\@tempdima \@split@footnotes \setbox\z@\hbox{}% \@reconstruct@footnotes@ \fi \endgroup} \def\@split@footnotes{% \setbox\tw@\copy\z@ \dimen@ii\maxdimen \@footnote@tempswtrue \count@\@ne \setbox6\hbox{}% \@whilenum\footnotecolumns>\count@\do{% \advance\count@\@ne \setbox4=\vsplit\tw@ to\dimen@ \setbox4\vbox{\unvbox4}% \ifdim\ht4>\dimen@ii \@footnote@tempswfalse \fi \dimen@ii\ht4\relax \advance\dimen@ii\@footnote@height@fuzz\relax \setbox6\hbox{\box4\unhbox6}}% \ifdim\ht2>\dimen@ii \@footnote@tempswfalse \fi \setbox6\hbox{\box\tw@\unhbox6}}% \newbox\@footnote@tempbox \def\@reconstruct@footnotes@{% \setbox6\hbox{% \unhbox6 \global\setbox\@footnote@tempbox\lastbox}% \ifvoid\@footnote@tempbox \vbox to\dimen@{% \hbox to\textwidth{\unhbox\z@\unskip\hss}% \vskip\z@}% \else \setbox\z@\hbox{% \unhbox\z@ \hbox to\footnotecolumnwidth{% \vtop to\dimen@{\unvbox\@footnote@tempbox \vss}% \hss}% \hskip\footnotecolumnsep}% \expandafter\@reconstruct@footnotes@ \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} \def\text#1{% ぱたぱたおよよあれれとほほおっとっと% \footnote{#1}% ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと\par} \def\TEXT{% ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと ぱたぱたおよよあれれとほほおっとっと\par} \text{最初の脚注です.} \text{2番目の脚注です.} \text{複数行にわたるような長い脚注を用意しなければならないのですが, うまく複数行になっているでしょうか.} \text{ふたたび,短い脚注の例です.} \TEXT\TEXT\TEXT\TEXT \TEXT\TEXT\TEXT\TEXT \TEXT\TEXT\TEXT\TEXT \end{document}

この書き込みへの返事:

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