Acetaminophen’s diary

化学に関すること,TeXに関すること,ゆきだるまに関すること。

日本語 TeX 開発コミュニティの活動近況

これは「TeX & LaTeX Advent Calendar 2020」の 17 日目の記事です。昨日(16 日目)は T-Stream さんでした。明日(18 日目)は tamuratak さんです。(公開が遅れてすみませんでした…。)

もうご存知かもしれませんが,世の中には「日本語 TeX 開発コミュニティ」という謎組織があります。ここではその謎を解いていきます。

私は何者か

コミュニティの話をする前に,私 (aminophen) が何者か。

  • 謎組織「日本語 TeX 開発コミュニティ」の一員です。
  • 顔は下のインタビュー記事に出ています。

TeX 界隈での発表履歴はこちら:

あとは,このブログの記事と TwitterGitHub の活動を見ていただければだいたいわかります。

日本語 TeX 開発コミュニティは何者か

さて,ここから謎コミュニティの話に入りましょう。

謎コミュニティの公式ページはこちらです。

そして,そのメンバーや活動内容はこちらです。

日本語 TeX 開発コミュニティ公式ドキュメント集 (https://texjporg.github.io/) は現在も整備途中で,まだ空白のページもたくさんありますが,今後のコミュニティの継続的な活動のために少しずつ整備していきたいと思っています。

以下で,活動を 3 つピックアップします。

活動 1:過去のバージョンの TeX Live の配布

texjp.org には,2012 年以降の TeX Live 20XX の最終版 (frozen) のアーカイブが保存されています。海外を含むほとんどの場所には「最新版」(現在は TeX Live 2020)しか置かれていませんが,例えば「TeX Live 2013 が良かった」という場合はそれを texjp.org から入手することができるわけです。手順は,山本さんによる記事がわかりやすいです:

ここの ftp://tug.org/texlive/historic/2010/tlnet-final/https://texlive.texjp.org/2013/tlnet/ に置き換えれば,TeX Live 2013 の最終版を texjp.org から入手できる,という具合です。

活動 2:pLaTeX / upLaTeX などのソフトウェアの維持開発

GitHub の texjporg 管轄下のリポジトリの中でも,とりわけアクティブに活動しているのは pLaTeX のマクロ開発です。2020 年に入ってからも,大型リリースを 3 回行いました。

また,pTeX / e-pTeX などの「pTeX 系列のエンジン」も tex-jp-build で開発を続けています。TeX Live 2020 での pTeX 系列の変更点は以下の北川さんの記事にまとめられています。

そういえば,去年まで恒例だった「TeX Live 2020 の変更点まとめ」をやっていませんね… しかし,極めて重要な LaTeX の変更点については Online.tex 2020 の一般講演「最近の LaTeX は○○」の発表資料にまとめてありますので,まだの方はご一読を。

  • 新習慣:DVI ドライバは必ずグローバルオプションに

  • 書体の変化にご注意(NFSS の拡張の影響)

活動 3:日本語 TeX/LaTeX に関するドキュメント化

まずは,ここ1年ほど(2019〜2020年)の間に整備が進んだ,日本語 TeX 開発コミュニティ (texjp.org) の手による説明文書たちを紹介します。これらはすべて wtsnjp さんの「TeX Live ドキュメント案内」で紹介されています。まだお読みになっていない方は,是非ご一読ください。

kanji-config-updmap --- 日本語フォント設定ツール

texdoc kanji-config-updmap で読むことができます。コマンド自体は 2013 年頃から存在していて,TeX Wiki など各所で「macOSヒラギノを使う設定」の一環で説明されてきました。しかし,help メッセージ以外に公式文書が存在しなかったため,ついに 2020 年 2 月,公式マニュアルが整備されました。(一部,未完成な部分があります。)

Guide to Japanese typesetting with LaTeX

texdoc japanese で読むことができます。初版は 2020 年 12月(つい2週間前)です。これは,日本語組版が西欧の組版といかに違うかを英語で簡単に要約するとともに,幾つかの例をあげて「ちゃんと」日本語組版をするための方法を紹介しています。

Guide to pTeX for developers unfamiliar with Japanese

texdoc ptex-guide-en で読むことができます。初版は 2019 年 10 月です。

これは,日本特有の TeX エンジン拡張である pTeX 系列 (pTeX / upTeX / e-pTeX / e-upTeX) について,海外の「日本語を知らない開発者たち」に認識してもらうことを目的に,英語で説明したドキュメントです。

pTeX 系列のマニュアルは,日本語で書かれた「pTeX マニュアル」(texdoc ptex-manual) が知られています(こちらも,日本語 TeX 開発コミュニティによる作)。しかし,英語版ガイドはこの内容の単純な英訳とはせず,日本語組版の要件には立ち入らず,純粋に pTeX 系列が西欧の TeX 処理系(主に pdfTeX)とどのように違うのか,また pTeX 系列でプログラミングする時の注意点を説明しています。

なぜ英語ドキュメントなのか

pLaTeX や upLaTeX を使っている人は,そのほとんどが日本語話者であると考えられています。その証拠が,日本語以外に絞って文献を漁っても,「(u)pLaTeX の使い方」を紹介したものが殆ど見つからないことです。(利用者がいれば,一つや二つヒットしてもおかしくないと思います。TeX StackExchange のこの質問の変更履歴を見れば,2011 年時点でいかに日本の LaTeX の状況が海外に全く知られていなかったかがわかります。)

それなのになぜ,日本語 TeX 開発コミュニティで「英語による日本語に関するドキュメント化」を進めているのでしょうか。それは

LaTeX 本家チーム,並びに,海外の LaTeX パッケージ開発者に
日本の状況(pLaTeX / upLaTeX / LuaTeX-ja の並立)をまずは認知してもらい,そして,
それなりにサポートしてもらう(少なくともエラーは防止する)ため

です。

例えば,2015 年に「pLaTeX で expl3 に依存したパッケージが使えなくなる」という事態が発生しました。これは

  • 海外では pdfLaTeX が標準である
  • expl3 は pdfLaTeX / XeLaTeX / LuaLaTeX で動くように開発されていた
  • 海外製の LaTeX パッケージも次々と expl3 ベースで再実装されつつある

という状況のなかで起きた問題でした。pLaTeX / upLaTeX は本家 LaTeX に依存していますし,その本家 LaTeX を開発している方々が expl3 も開発しています。その本家 LaTeX 開発チームが pLaTeX / upLaTeX のことを考慮してくれないと,最悪 pLaTeX / upLaTeX がエラーまみれで動かなくなってしまうのではないか…。そんな懸念から,海外の開発者に pTeX 系列のことを知ってもらう必要があるという判断に至ったわけです。ここで expl3 の開発者に知ってもらうべき pTeX 系列の情報とはなんでしょうか。exp3 はプログラミング言語の一種ですので,pTeX を使えばいかに日本語組版が綺麗にできるかということは全く重要ではありません。むしろ,

プログラミング言語の処理系として pTeX を使うと
(pdfTeX などの西欧の TeX と比較して)どんな違いが生じるのか

に特化した方が良いはずです。そうした目的に特化して書かれているのが ptex-guide-en で,「pTeX 系列かどうかを判定する方法」「pdfTeX との違い」「和文文字をやり過ごす方法」などを扱うことにしています*1。なお現在では,草の根の活動により expl3 の開発で e-pTeX / e-upTeX もテスト対象に入れていただいたため,少なくとも expl3 が pLaTeX / upLaTeX で全く使えない状況は回避されています。

逆に,「日本語組版とはなんぞや」を知りたい開発者もいるかもしれませんので,その場合に参照してもらえるドキュメントとして整備したのが japanese です。これは 2020 年 12 月 6 日以降 texdoc japanese で表示され,つまり海外の人に真っ先に見つけてもらえる,日本語の LaTeX に関する英語ドキュメントになることを目指しています。

何かしたい人へ

日本語 TeX 関連の「開発」というと,何か難しいことのように感じるかもしれませんが,全くそのように構える必要はありません。

  • GitHub のアカウントを取得してみる(これが開発者としての名刺代わりになります)
  • https://github.com/texjporg/ の中の適当なプロジェクトに,建設的な要望を送ってみる

建設的な要望とは,必ずしもコードをゴリゴリ書けることを要求しません。例えば「説明書に間違いを見つけた・この説明文がわかりにくいので,このように改善してはどうか」などを指します。あるいは,「説明書が見当たらなかったので,説明書を書いてみました」なども大歓迎です。

*1:例えば,pdfTeX が PDF 直接出力するのに対して e-pTeX は DVI 出力なので,その分のプリミティブ不足はある程度予測可能ではあります。しかし,PDF 出力とは無関係な「文字列の処理に関するプリミティブ」(\pdfescapestring など)も一部欠けています。また,「和文文字は欧文文字とは全く別に処理される」(\catcode, \lccode などの指定もエラーになる)という事実も,明示しておく必要があるわけです。