Daiji256

研究室用のLaTeXクラスを作ったときの話

公開
更新

具体的なクラスの作り方はいつかまとめて、Qiitaにもあげたいなと思いながら、ちょっと愚痴をこぼす。

はじめに

僕は高専の専攻科2年生(2021年8月時点)です。本科5年生のときから研究室所属し、気付いたら3年目で、今年で修了です。

そんな研究室には10年以上前から卒論・修論用のLaTeXスタイルファイルが用意されていました。そのファイルは古く、LuaLaTeX等では動かせないなどの問題がありました。

そうだ、新しいテンプレートを作ろう!

テンプレートの作り方

テンプレートを作るには、大きく2つの方法があります。

  1. 既存のクラス(jsarticle、jlreqなど)と自作スタイルファイルで作成
  2. 既存のクラスをベースに新しいクラスファイルの作成

自由度が高く勉強にもなる2つ目の方法でテンプレートを作成することにしました。

jlreqをベースにしました。理由は、新しく、クラスで対応している調整が多いからです。また、pLaTeX、upLaTeX、LuaLaTeXに対応しているからです。

作り方は誰から学ぶ?

クラスファイルの作成方法はそこまで情報がないので主に英語の内容で調査することが多かったです。まあ情報があるのでそこまで困りません。

言語処理学会の年次大会予稿集用LaTeXクラスのNLProceedingsがjlreqベースだったので、凄く参考になりました。7割はこのソースコードから学びました。

expl3について

expl3(エクスペル・スリー)とはLaTeX3チームが開発しているプログラミング言語です。TeX言語で実装されていて、TeX上で動作します。TeXのマクロは地獄みたいに辛いですが、expl3では快適なTeX生活を送れます。詳しくはググれ。

変数とか関数が定義できるので非常に便利です。卒論クラスの作成に伴い、勉強しました。他のプログラミング言語に比べたらなかなかしんどいですが、TeXより幸せなので我慢できました。

さて、愚痴でもこぼすか

今日、pLaTeX/upLaTeXが使えなくなるだろうと言われている中、あらゆる学会等でpLaTeX/upLaTeXのテンプレートを配布しています。upLaTeXならともかく、pLaTeXだけの学会も少なくありません。今後のことを考えると、日本語LaTeXをどうするか、全LaTeXユーザは考えなければいけないのではないでしょうか?

今回卒論クラスの作成に当たって、「簡単な体裁の設定をするクラスファイルは作れる。」と感じました。jlreqが使える環境(TeX Live 2017以降?)では問題なく動作します。学会用クラスは新しく作り直す必要があると感じます。僕が出る学会の予稿も無いよりはマシなくらいなクラスファイルしか用意されていませんでした。皆さんが所属する学会のクラスファイルを作ることが、今後の日本を支えると思っています。

そういえば、学内の研究発表用のテンプレはMS Wordだけです。しかも、拡張子がdocで、xがついてないほど古いです。フォントはMS Minchoを強制したりなど、クソがクソするくらいクソ1です。卒業までにどうにかしていきたいなと思ってます。

今後について

今後は↓のことをやっていきたいです。こんな愚痴をこぼしてないで手を動かさないとですね。

文献

  1. jlreq
  2. NLProceedings
  3. expl3

脚注

  1. 詳しく話すと長いので、簡略化してます。 ↩