Texdoc 3.0 をリリースしました

2018-06-08  #TeX Live  #Texdoc 

去る6月6日,2012年以来実に6年ぶりとなる Texdoc の大型アップデートを行いました.既に TeX Live 2018 に収録されています.従来の Texdoc は CTAN を介さない極めて特殊な方法でアップデートされていましたが,今回からは他のパッケージと同様 CTAN を経由してのリリースとなります.

Texdoc 3.0 の新機能

Texdoc 3.0 の目玉機能は「新しいオプションパーサ」と「あいまい検索」の2つです.

新オプションパーサ

従来の Texdoc では,複数のオプションを指定する場合,たとえショートオプションでも

$ texdoc -v -s -l <keyword>

のように1つ1つにハイフンをつけて個別に指定してやる必要がありました.

新しいオプションパーサは,可能な限り POSIX 互換になることを目指していて

$ texdoc -vsl <keyword>

のように複数のショートオプションをまとめて指定できるようになりました.

あいまい検索

従来の Texdoc では,ミスタイプや記憶違いによって間違ったパッケージ名を入力すると

$ texdoc -l tikzsnowman
Sorry, no documentation found for tikzsnowman.
If you are unsure about the name, try searching CTAN's TeX catalogue at
http://ctan.org/search.html#byDescription.

のように “not found” なメッセージが出て終わりとなってしまいました.

Texdoc 3.0 では,入力キーワードに対して該当するドキュメントが1つも見つからなかった場合,自動的にあいまい検索が走ります.したがって仮にタイポや記憶違いがあっても

$ texdoc -l tikzsnowman
 1 /usr/local/texlive/2018/texmf-dist/doc/latex/scsnowman/scsnowman.pdf
   = Package documentation
 2 /usr/local/texlive/2018/texmf-dist/doc/latex/scsnowman/scsnowman-sample.pdf
   = [ja] Sample of use
 3 /usr/local/texlive/2018/texmf-dist/doc/latex/scsnowman/README.md
   = Readme
Enter number of file to view, RET to view 1, anything else to skip:

のように,入力に最も近い名前のパッケージを見つけ出すことができます.

このあいまい検索が許容する「あいまいさ」(正確には Levenshtein 距離)は設定ファイル (texdoc.cnf) で fuzzy_level の値を調整することで自由にカスタマイズすることができます1

fuzzy_level = 3

デフォルト値は5ですが,これを大きくすればより許容されるあいまいさが大きくなり,小さくすると許容範囲が狭まります.また0を指定することにより,あいまい検索機能を完全にオフにすることも可能です.

上記の新機能については先月ポーランドで開催された BachoTeX 2018 でトークを行っているので,詳しいことについてはその際の発表資料も参考にしてください(ただし当然ながら,英語です).

その他の変更点

上記2つの新機能以外にも,Texdoc 3.0 では多くのバグ修正や軽微な更新を行っています.例えば,下記の記事で指摘されている PAGER 等の環境変数が(状況によって)効かない問題が修正されています.

また,昨年末より開発リポジトリを GitHub に移転しました.

細かい変更点や議論は,上記リポジトリで確認できます.バグ報告等も GitHub 上で受け付けています.

おわりに

昨年11月頃からちょいちょい Texdoc のソースコードをいじっていたのですが,私が大きく手を入れたバージョンをリリースするのはこれが初めてです.大きな問題がないといいのですが……

Texdoc は全世界でかなり多くの TeX Live ユーザが利用しているツールだと思われますが,意外にも5年ほどまともにメンテナンスされていなかったようです2.Texdoc のスコア計算の仕組みを理解してこのブログに記事を書くために Texdoc のソースコードを読み込んだ結果3,うっかりメンテナになってしまったというのがことの顛末です.

なにはともあれ,TeX ユーザの皆さまには Texdoc 3.0 でより快適な TeX ライフを送っていただければ幸いです.バグ報告や機能追加の要望は GitHub リポジトリで issue 登録・プルリクエストするか,または私個人宛てに送っていただければ対応するかも知れません(日本語でも ok です).


  1. texdoc -f を実行すると,編集すべき texdoc.cnf の位置を調べることができます. ↩︎

  2. そんなことを言うと従前メンテナンスを担当されていた TeX Live チームの方々に失礼なわけですが,彼らは TeX Live 全般について膨大な仕事を処理してくださっているので,Texdoc に注力するわけにもいかず仕方のないことです. ↩︎

  3. もっというとスコア計算に関係のない部分まで実装を読んだのはジョークソフトを作るためでした. ↩︎