TexdocでTab補完したい話

2018-05-30 (updated: 2025-12-09) #bash #zsh #TeX Live #Texdoc

Texdocは引数としてキーワードを与えると、それに関連する適切な文書を表示するコマンドラインツールです。

$ texdoc <keyword>

ここで<keyword>にはLaTeXパッケージ名/クラス名や処理系の名前、あるいは文書ファイル名など多様なものを用いることができます。

とはいうものの、Texdocに対する入力のほとんどは「パッケージ名」でしょう。そこで、パッケージ名を途中まで入力したら、あとはTabでTeX Liveに含まれる適当なパッケージ名を候補表示・補完して欲しいという需要が生じます。

$ texdoc bx[Tab]
bxbase  bxcjkjatype   bxdvidriver  bxenclose   bxjaprnind  bxnewfont   bxpapersize  bxtexlogo
bxcalc  bxdpx-beamer  bxeepic      bxjalipsum  bxjscls     bxorigcapt  bxpdfver

ここ数日、これを実現する方法がTexdocメーリングリストで議論されていました。ここでは、その結論だけを抜粋して提示しておきます。(2018-06-07更新)

  • bash用
complete -W "$(awk '/^name[^.]*$/ {print $2}' $(kpsewhich -var-value TEXMFROOT)/tlpkg/texlive.tlpdb)" texdoc
  • zsh用
compctl -k "(($(awk '/^name[^.]*$/ {print $2}' $(kpsewhich -var-value TEXMFROOT)/tlpkg/texlive.tlpdb)))" texdoc

最新の情報についてはGitHubリポジトリ内のWikiも参照してください。

参考: