詫間電波工業高等専門学校研究紀要

第 34 号 (2006)

授業用資料への号数付けの一工夫
橋本

竜太 ∗

On implementing macros to give numbers to handouts distributed in a class
Ryūta HASHIMOTO

Synopsis
The author implemented LATEX macros to give numbers to handouts distributed in a class.
These macros decreased failure to give a wrong number.

1. 前置き筆者が詫間電波高専にて担当する授業では，紙媒体の資料をほぼ毎時間作製し，配布している。特徴的としては，資料の作製は pLATEX 2ε 上で行っていることや，資料には通し番号（号数）や発行日を記載していることが挙げられる。たとえば，2005 年度の 2 年次開講科目「微分積分学」では，資料に「2 年『微分積分学』γ
クラス通信」というタイトル [1] をつけて，4 月 7 日に第 1 号，4 月 14 日に第 2 号，…を発行している。
発行日および号数の記載は単純作業のようであるが，正しく記載し続けることは案外難しい。2004 年度はすべて手作業で発行日および号数を付けた。実際にはたとえば，前号と同じ号数をつけてしまう，などといった付け間違いが少なくなかった。

LATEX の開発者である Leslie Lamport の言によれば，「LATEX は，組版の問題を気にせずに文書を書くことに専念するために作られた。もし，形式を整えることばかりに時間を費やしているようなら，それは LATEXの使い方を誤っているといってよい。」[2] このような思想からすれば，発行日や号数を半自動的に付加するシ
ステムを pLATEX 2ε 上に実装することが可能であって然るべきであろう。そこで，2005 年度はそのようなシステムを pLATEX 2ε 上に実装することを試みた。その結果，付け間違いがほとんど起こらなかった。本稿の目
的は pLATEX 2ε 上に実装したマクロを紹介することにある。

pLATEX 2ε に関しては奥村 2) などを参照されたい。なお，本稿では LATEX，pLATEX 2ε などを使い分けているが，TEX の類が身近でない方が本稿を読んで下さる際は，これらの単語は同じようなものを指していると思っていただいても差し支えない。

2. ファイル管理
配布資料の原稿である pLATEX 2ε のソースファイルは，ファイル名を 8 桁の数字としている。最初の 4 桁が西暦年。次の 2 桁が月。最後の 2 桁が日。たとえば，2005 年 4 月 7 日の講義にて配布する資料の原稿のファイル名は 20050407.tex とする。
この他に，2 つのファイルを用意する。1 つは，配布資料を登録するファイル listpublished.tex。このファイルの内容は次節で説明する。
もう 1 つは，発行日や号数を取得するためのマクロを記載したファイル。たとえば 2 年微分積分学用として

biseki2.sty。以下の 4 節や 5 節で紹介するマクロはこのファイルに記載する。ファイル 20050407.tex のプレアンブルに「\input{biseki2.sty}」を記載しておくことで，20050407.tex の組版を行う際にマクロが読み込まれる。

∗ 一般教科23

THE BULLETIN OF TAKUMA NATIONAL COLLEGE OF TECHNOLOGY No.34 (2006)

3. 号数の取得の仕組み
ファイル listpublished.tex ではリスト listpublishd を定義している。このリストには，資料を配布する日付が登録されている。本稿で紹介するマクロを用いることで，このリストの何番目に登録されているかがその資料の号数になる。登録されていない資料には号数として「 0 」が振られる。
たとえば，ファイル lishpblshd.tex の内容が次の通りであるとする。（各行末の “%” は TEX の技術的理由により必要である。）¶³\listpublished={%20050408,%
20050413,%
20050415,%
20050420,%
20050422}µ´

一方，原稿のソースファイルが次のように用意されているとする。

20050408.tex，20050413.tex，20050415.tex，20050420.tex，20050422.tex，20050429.tex
この状態で pLATEX 2ε により 20050422.tex の組版を行うと，号数には “5” が充てられて，発行日として「2005 (平成 17 ) 年 4 月 22 日」が組み込まれる。
新しい資料を作るたびに，登録リスト\listpublished の最後に新しい日付を付け加える。このような単純な仕組みを導入することで，号数を前号と同じにしてしまうといううっかりミスは皆無になった。
また，試しに作成してみたものの実際には配布しない資料を作ったことがあった。この場合は，ソースファ
イルのファイル名を\listpublished に登録されていないものにすればよい。すると，そのソースファイルを組版したときに号数が “0” とされるので，うっかり配布用かと思って印刷してしまうこともなくなる。

4. 号数を取得するマクロ
ソースファイル名と登録リストから号数を取得するために組んだマクロは次の通り。なお，本節と次節の文字列の処理についてはとくに藤田 3) 第 3 章を参考にした。

¶³\newcounter{tmpCNTR}\newif\ifInList\InListfalse\newcounter{issue}\input{listpblshd}\edef\curFILE{\jobname}\@for\tmpFILE:=\listpublished\do{%\ifInList\else\stepcounter{tmpCNTR}\fi%\ifx\tmpFILE\curFILE\InListtrue\fi%}\ifInList\setcounter{issue}{\thetmpCNTR}\fiµ
1 行目でカウンタ tmpCNTR を定義する。初期値には 0 が設定される。2 行目でスイッチ InList を定義し24´

詫間電波工業高等専門学校研究紀要

第 34 号 (2006)て，その初期値を偽に設定する。3 行目でカウンタ issue を定義する。初期値には 0 が設定される。4 行目で登録リストを読み込む。5 行目で現在組版中のファイル名を取得する。6 行目から 9 行目までのループで，現在組版中のファイル名が登録リストに登録されているかを調べる。登録されている場合は，スイッチ InListの値を真とし，何番目に登録されているかをカウンタ tmpCNTR の値とする。10 行目で，スイッチ InList の値が真であれば，カウンタ tmpCNTR の値をカウンタ issue の値とする。
以上により，号数がカウンタ issue に保存される。資料の本文中で号数の出力が必要な場合は\theissueと記せばよい。なお，登録されていないファイルを組版した場合は，カウンタ issue の値は 0 となる。

5. 発行日を取得するマクロ
ソースファイル名から発行日を取得するために組んだマクロは次の通り。

¶³\newcounter{Year}\newcounter{Month}\newcounter{Day}\newcounter{Heisei}\newcommand{\strYear}{}\newcommand{\strMonth}{}\newcommand{\strDay}{}\setcounter{tmpCNTR}{0}\expandafter\@tfor\expandafter\tmpCHAR\expandafter:%\expandafter=\jobname\do{%\stepcounter{tmpCNTR}%\ifnum\thetmpCNTR<5\xdef\strYear{\strYear\tmpCHAR}\else%\ifnum\thetmpCNTR<7\xdef\strMonth{\strMonth\tmpCHAR}\else%\ifnum\thetmpCNTR<9\xdef\strDay{\strDay\tmpCHAR}\fi\fi\fi%}\setcounter{Year}{\strYear}\setcounter{Month}{\strMonth}\setcounter{Day}{\strDay}\setcounter{Heisei}{\strYear}\addtocounter{Heisei}{-1988}µ´

1 行目から 4 行目までで西暦年，月，日，和暦年をそれぞれ保存するためのカウンタ Year，Month，Day，Heisei を定義する。5 行目から 8 行目は次の do ループの処理に必要な変数の定義。9 行目から 15 行目までの do ループにおいて，8 桁のファイル名を 4 桁＋ 2 桁＋ 2 桁に分けた文字列を得る。それらの文字列を用いて，16 行目から 20 行目までで，カウンタ Year，Month，Day，Heisei の値を設定する。
資料の本文中で発行日の出力が必要な場合は「\theYear{}年\theMonth{}月\theDay{}日」などと記せばよい。

6. 紙媒体資料作成の意義
授業で配布される紙媒体資料は，授業内容の理解をより深めるためのものであるはずであり，学生に捨てさせるためのものではないはずである。にもかかわらず，平気で捨てる学生が少なくないように見受けられる。

25

THE BULLETIN OF TAKUMA NATIONAL COLLEGE OF TECHNOLOGY No.34 (2006)

筆者の主観であるが，資料に号数をつけることが，資料を捨てにくくさせる，あるいは，学生が紙媒体資料を綴じる作業を促す，などといった働きをもっているように思われる。その観点からすると，本稿のようなシステムの実装は有意義なものと考える。
また，本稿で紹介したシステムを利用して製作した資料は，そのまま授業の記録になっている，同じ科目を担当する複数の教官の間の意思疎通に利用できる，などの利点があるようである。紙媒体資料作成の意義を精察することについては，またの機会としたい。

注[1] 2 年次微分積分学は「習熟度別学級」で行われており，筆者は 2005 年度はγクラスを担当した。
[2] Lamport1) 「1.6

着想から表現へ」より。

参考文献
1) Leslie Lamport，阿瀬はる美 訳，「文書処理システム LATEX 2ε」，ピアソン・エデュケーション (1999)。
2) 奥村晴彦，「［改訂第 3 版］LATEX 2ε 美文書作成入門」，技術評論社 (2004)。
3) 藤田眞作，「LATEX マクロの八衢（やちまた） 」，アジソン・ウェスレイ (1995)。

26