[Home], [FAQ]

科研費LaTeX - ページをまたがる項目の作り方

「研究目的、研究目的つづき」や「業績」のように、複数のページをまたがる項目は、 科研費マクロではTeXのマクロの中で¥setbox, ¥vsplit等を駆使して行っていたようですが、 私にはそのような難しいことはわからないので、 「餅は餅屋」に任せて作っています。

餅屋その1 - LaTeX

行をページに詰めていって、あふれそうになったら改ページをしたり、 figure などfloat環境をうまく配置するのは、 LaTeXが得意とすることです。 したがって、こういう操作はLaTeXに任せています。

例えば、図1に示すように、3ページに一つの項目がまたがる 書類の様式があったとしましょう。 このとき、次の要領でパラメータを設定してLaTeXに処理させます。

  1. ¥topmargin は、最初のページを除くページの中で、最も 低い位置に設定します。
  2. ¥textheight は、最後のページを除くページの中で、 最も高い位置と¥topmargin の差に設定します。
  3. 最初のページの開始位置は、
    ¥phantom{お化け} として見えない文字を埋め込んだ後、
    ¥vspace{...} として¥topmargin からの距離を設定します。
  4. また、横の枠の位置と幅に従って、¥textwidth, ¥oddsidemargin, ¥evensidemarginを設定します。
  5. この後、文章を流し込むと、¥topmargin と¥textheightで 指定された範囲の中に内容が展開されます。
  6. なお、¥textheightは、最初のページが始まる直前の ¥clearpage の前、documentの1ページ目の場合は ¥begin{document}の前に設定する必要があります。
[margin settings]

図1:各ページの中の、文章を書く枠とマージンの決め方。 点線は、マージン=0の基線。説明を簡単にするために、¥headheight=¥headsep=0としている。

これにより、¥itemize, ¥enumerate, ¥thebibliography などの 環境もページをまたがります。 また、表も ¥longtable を用いれば、ページをまたがります。 (一般に¥longtableでは、内容によってページごとに枠の幅が変わりますが、 科研費LaTeXでは各カラムの幅をp{25mm}のように指定しているので、 そのような現象は起きません。) もし必要なら、二段組みも、¥usepackage{multicol}としてパッケージを読みこめば、 ¥begin{multicols}[2] ... ¥end{multicols}で作ることができます。

最後のページの枠の下の縁が¥textheight で決められている 位置よりも高くても、枠内に収めるのはユーザーの責任です。

最後のページ以外のページの枠の下の縁が、 ¥textheight で決められている高さよりも 低い場合は、その枠を埋めきらずに次のページに移ります。 しかし、その程度の損は、LaTeXに任せる楽さを考えて、許しましょう。

餅屋その2 - watermark.sty

各ページにそれぞれ対応する科研費の様式を割り当てるためには、 文章のどこで改ページがされたのを知る必要がありますが、 これをユーザーが把握するのは簡単ではありません。 したがって、各ページに様式を割り当てる作業には、 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

Valid HTML 4.01 Transitional