自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

WORDとLaTeXと私

ひだるまです。

2.5mmバランス端子-RCAケーブルをどう思いますか? 使っているスピーカーのレベル的に、バランスで出したとしてどこまで出るか微妙なところですよねぇ……。

さて、この記事はWORDIAN Advent Calendar 2018 - Adventarの8日目の記事になります。それではそろそろ表題の話へ移りましょう。

興が乗りましたら本誌の方にも載せたいので、記憶違いの指摘や名前を伏せて欲しいなどの連絡があればお願いします。

歴史

TeXKnuthが~といった話や、WORD編集部の創立は筑波が陸の孤島だった頃~といった話は別資料をお探しください。そろそろ編集部の歴史本は必要な気もしますが。

導入

情報科学類学生がいつからLaTeXを使っているかは定かではありませんし、編集部員の利用度なども正しいところは分かりかねますが、 私の入学した時分では編集部の記事はほぼJustSystems社の「一太郎*1」を用いて書かれていました。一太郎MS-Wordと同じような感覚で執筆する、WYSIWYGなエディタです。私は小学校の授業で触って以来でした。 編集部ではタイトル部や執筆者欄、見出しや導入を適当に埋めたものをテンプレートと称し、「名前をつけて保存」で新しい記事を作成しておりました*2。 これらを使った経験のある方なら分かるかと思いますが、MS-Word一太郎はコードを載せる記事や、統一された見た目の印刷物を作りたいときに難点が幾つかあります。 どちらが良いのかはおいておいて、更にはプロプライエタリであるエディタを使わなければならない状況に不満のある編集部員がいました。

突然の

主観の上、少々記憶が曖昧になってきましたが、1年以上経った頃だったと思います。 編集部にも慣れてきたある日、yyuさんとpi8027さんが「作ったんで、使いたい人は使ってください」と作成したLaTeXのテンプレートを編集部で皆に紹介しました*3。 そのときの私の頭の中では「???」と疑問符が踊っていました。 「なぜ一太郎で書きたくないのだろう」と。 とりあえずテンプレートのソースとクラスファイルの説明(idxとinsから生成したPDF)に目を通してみたときの感想は

「わーむずかしそーなことがかいてあるー」

でした。

そんな私を他所に、じわじわとLaTeXで記事を書く人間は増えていきました。まあ毎号いても3、4人程度ですが。 コードを書く皆は分かっていたのです、「一太郎でコード載せるのは面倒臭い」ということが。

誕生! 一太郎大臣

部内で勢力を拡大していったLaTeXですが、人数が増えると声が大きくなるので、次第にこんな声が上がるようになりました。

一太郎の記事と見た目が違って、冊子にしたときまとまりがなくて美しくない」

LaTeXで書かれた記事は同じテンプレート基クラスファイルを使って処理されているので、別の人が書いたものでも見た目の統一がある程度されていました。 そうなると、テンプレート基以前の履歴を使って書かれたにWYSIWYG一太郎による記事は同じ人が書いたものですら見た目がバラバラでしたから、 これは粛清の対象です。日々増大を続けるLaTeX派に一太郎派は自己を総括する必要に迫られたのです。

LaTeXテンプレートを齎した2人はLaTeX大臣としてテンプレートの改修や組版の相談などを受けるようになっていました。

特に記事のネタを思いつくでもなく居心地の悪さを覚え始めていた私は、 ある日haroperiさんが「一太郎に詳しい人欲しいよねぇ」と言ったとき飛びつきました。立ち位置が欲しかったんですね。 これはアドバイスですが、アイデンティティは自分の持っているものから確立すべきです。 一太郎は貴方の知らないものが溢れていて、例えば今は亡きJustsystems製のメーラーと連携するマクロが存在する。 マクロと言いつつほぼ言語に必要なものが揃っているので、多分マンデルブロ集合とか書ける*4。 そうして、俺達は登り始めたんだ。この長い、一太郎坂をよ……(第一部完)。

にわか一太郎の大先生には意図せずともコーナーケースを突き続ける編集部員の相手はなかなかに荷が重く、 ,無季さんに

一太郎でこれはどうやるの」

と問われても

「俺にだって、分からないことぐらい、ある……!」

としか返せないこともありました。それでもめげずに学習を続け、とりあえず暫定テンプレートになっているものを書式設定として登録したり、文字サイズなどの調整を行ってくれるマクロを 編集部の計算機に追加してみたりと少しずつ自身を深めていきました。 まあ、皆そんなものは使わず、相変わらず以前書いた記事ファイルを開き直して「名前をつけて保存」で記事を作成していましたが。

結局、誰かが書いた記事を一発で用意した書式に直してくれるマクロを書くことになりました。これも、良い経験でした*5

そうそう、このちょっと前くらいの時期にWORDの発行に使うリソグラフがPDFを読みこめることが発覚し、データによる入稿が基本になりました。その前? 通常のプリンタで印刷したものを マスターと呼び、それら数十枚を抱えてリソグラフに1枚1枚スキャンして……。

折衝

一太郎側の書式設定がある程度落ち着いたところで、それがそのままLaTeX側と調和を生み出す訳ではありません。 かつて編集部のLaTeXテンプレートは一太郎の書式設定を参考に作られましたが、一太郎側が譲歩をする段階に来ていたのです。 組版の設定は何を基準とするかでも変わってきます。文字数の設定から文字サイズが決まったり、逆に文字サイズから1行あたりの文字数が 設定されたり。そんな訳で、主に一太郎の書式設定をLaTeXの設定に寄せました。余白や文字数、文字サイズを明文化し部内のwikiに残しました。 双方が妥協しつつも、ここにある程度書式統一されたWORDが誕生したのです。

それから数ヶ月後

そこにはLaTeXをいじる私の姿が!! ……いやだって使い易いし。

ビルドサーバ

少し触れましたが、改善されたもののLaTeXのビルド環境を整えるのは初心者には厄介なポイントが幾つかあり、環境構築の手間もないに越したことはないのです。そうすると、 ビルドサーバの概念が誕生します。

コンテンツを作成するときフォントのライセンスは厄介で、勝手に引っこ抜いて使うというのは大概アウトです。幸か不幸か一太郎2012承にヒラギノフォントがついてきたために、 この前後のWORDはヒラギノフォントを使うことで統一されていました。大学の計算機室にもMacがあったために、ヒラギノフォントを使うことへのハードルが低い状態だったのです。

ヒラギノがある計算機をそのままビルドサーバにしてしまおうという考えが生まれるまで時間はかかりませんでした。無論大学共用の計算機ではなく編集部で用意した計算機です。

記事を書いた後 make を叩けばPDFが出てくる、そんな素朴なLaTeXテンプレートが生まれました。

LuaLaTeX

それまで編集部で使われてきたのはpLaTeXでした。TeXの統合パッケージであるTeXLiveもこの頃には大分落ち着いてきて扱い易くなってきてはいましたが、pLaTeXではフォントの設定などが多少ややこしいところがあります。職人による丁寧な指導の元、個人の計算機にLaTeX環境がインストールされていく、そんな様相を呈していました。そんな折、編集部のLua派が台頭しました。そう、LuaLaTeXの登場です。 WORDのLaTeXテンプレートの元となったarticleクラスは古代から存在しているものでしたので、モダンなLuaLaTeXでは使えませんでした。でも使いたい。LuaLaTeXテンプレート(クラスファイル)が作られる運びとなりました。もっとも、この時点ではLuaLaTeX自体が安定していない状況だったことと、ビルドシステムでのpLaTeXとの切り替えが多少手間だったことも ありあまり部内には普及しませんでした。多分2人くらいが使っていました。

俺はその先にいるからよ

大学というのは普通4年も在学していれば卒業し社会へ出ていくことになります。やめろ、そんな目で俺を見るな。 編集部の人間も移ろいいきます。LaTeX大臣の任期も現役を過ぎたらあまり強要はできません。

編集部内で組版に関わっている人間には野望がありました。そう、

「ソースレベルで結合してまとめてPDFに出したい」

という欲求です。この頃には一太郎派はかなり減り、LaTeXで「それぞれが」コンパイルしたPDFをまとめ、ページ番号を振り直し、印刷用のデータとしていました。 この部分の自動化を果たせば主に編集長がしてきた作業が減り、皆ハッピーになるはずなのです。2018年12月現在も未だ果たされてはいませんが、準備はちょこちょこ進めています。 数十年後には記事原稿もAIに書いてほしいし、排泄、睡眠、食事、種族保全ディープラーニングってやつで自動化してほしい。

その前段階として、テンプレートが複数ある状態はあまりよろしくありませんでした。 ビルドシステムでの分岐処理が複雑になること、レイアウトやその他の更新が複数回の手間になるからです。 編集部でのLaTeX作業の多くを担ってきたyyuさんが卒業するということで、テンプレートの大改修をやるならやらんとという空気もありました。 実際は卒業後に作業が活発化するのですが、まあ空気があったということで。

独自クラスファイルの更新はより切実な問題でした。専門的にクラスファイルレベルでいじれる人間がいなくなるというのは致命的です。

そんな中白羽の矢が立ったのはbxjsclassesでした。これはjsclassesでできることをpLaTeX、LuaLaTeX、XeLaTeXで共通のソースからコンパイルできるというクラスファイル群です。 このクラスファイルをロードし、WORD用の設定を加えたものを新テンプレートとするといい感じになるんじゃないだろうか。 した 。 新テンプレートではビルドシステムのpLaTeX/LuaLaTeX切り替えもmakeの引数をいじる程度で済み、更新はこのクラスファイルだけ、草木は萌え、小鳥は歌い、王国は千年の平和に包まれます。

窓に、窓に!

文章はここで途切れています。より詳細な内容やこれより後について読みたい方は「わっふるわっふる」と

*1:「フォントを買うとMacがついてくる」というジョークがありますが、プレミアム版の一太郎にも有名書体がついてきます。

*2:これ以前だとMS-Wordの盛り上がっていた時代、温かみのある手書き主流時代などに過去資料から遡れました。

*3:このテンプレートはarticleクラスを一部改変したものでした

*4:講義の課題として、何の言語でも良いから「マンデルブロ集合をかけ」というものが存在しました。

*5:学園の門の前でピースをしながら