「研究目的、研究目的つづき」や「業績」のように、複数のページをまたがる項目は、 科研費マクロではTeXのマクロの中で¥setbox, ¥vsplit等を駆使して行っていたようですが、 私にはそのような難しいことはわからないので、 「餅は餅屋」に任せて作っています。
行をページに詰めていって、あふれそうになったら改ページをしたり、 figure などfloat環境をうまく配置するのは、 LaTeXが得意とすることです。 したがって、こういう操作はLaTeXに任せています。
例えば、図1に示すように、3ページに一つの項目がまたがる 書類の様式があったとしましょう。 このとき、次の要領でパラメータを設定してLaTeXに処理させます。
図1:各ページの中の、文章を書く枠とマージンの決め方。 点線は、マージン=0の基線。説明を簡単にするために、¥headheight=¥headsep=0としている。
これにより、¥itemize, ¥enumerate, ¥thebibliography などの 環境もページをまたがります。 また、表も ¥longtable を用いれば、ページをまたがります。 (一般に¥longtableでは、内容によってページごとに枠の幅が変わりますが、 科研費LaTeXでは各カラムの幅をp{25mm}のように指定しているので、 そのような現象は起きません。) もし必要なら、二段組みも、¥usepackage{multicol}としてパッケージを読みこめば、 ¥begin{multicols}[2] ... ¥end{multicols}で作ることができます。
最後のページの枠の下の縁が¥textheight で決められている 位置よりも高くても、枠内に収めるのはユーザーの責任です。
最後のページ以外のページの枠の下の縁が、 ¥textheight で決められている高さよりも 低い場合は、その枠を埋めきらずに次のページに移ります。 しかし、その程度の損は、LaTeXに任せる楽さを考えて、許しましょう。
各ページにそれぞれ対応する科研費の様式を割り当てるためには、 文章のどこで改ページがされたのを知る必要がありますが、 これをユーザーが把握するのは簡単ではありません。 したがって、各ページに様式を割り当てる作業には、 ncctoolsの watermark.sty を用いています。 これは、通常は「極秘」などの文字を"背景"として入れたりするのに 用いますが、文字の他にも図形なども¥includegraphicsで入れることができます。 同じ様式が繰り返して使われる場合は、¥watermark を用いて"背景"を設定します。
様式がページごとに異なる場合、 各ページの"背景"は、次のように設定します。
流し込む文章以外の項目は、watermarkの中で¥put(x,y){.....} を用いて
書きます。幅の決まった枠の中に複数行書く場合は、
¥put(x,y){¥parbox{width}{.....}} を使います。
1~3行程度の小さな枠に研究課題名などを収めるには、
¥put(x,y){¥parbox[t][height][c]{width}{....}} を用います。
このように、LaTeXとwatermark.sty という二つの餅屋を使うことにより、 LaTeXの機能だけで、 以前より様々な環境で使える、ページをまたぐ項目を実現しました。 科研費以外にもこのような機能が必要になりましたら、お試しください。
Updated: 2006-10-27 Taku Yamanka