Texdoc で Tab 補完したい話

2018-05-30 (updated: 2018-06-07)  #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 も参照してください.

参考: