texcount コマンドで単語数をカウントできる。
$ texcount main.tex
単に総単語数のみを出力させるには、下記のオプションをつける。
$ texcount main.tex -inc -sum -1
さらに、この機能をbashful パッケージを用いて文書内で動的に行う。
\documentclass{article}
\usepackage{bashful}
\bash
texcount main.tex -inc -sum -1
\END
\let\WordCount\bashStdout
\begin{document}
\section{Dynamic word counter}
This document has {\WordCount} words.
\end{document}
-
\bash ... \ENDの中にシェルスクリプトを書くと、コンパイル時に実行される。結果が\bashStdoutに格納されるので、これを\WordCountという別の変数に定義し直している。\bashStdoutを直接用いても良いが、その場合別のシェルスクリプトを実行すると値が上書きされてしまう。\letによる評価はその場で行われるため、\WordCountに格納された値は\bashStdoutの値が変更されても保存される。 -
\bash ... \ENDは\begin{document}より前に書くと良い。後ろに書くと、そこも文書内とみなされて、シェルコマンドの単語数もカウントされる。
ただし、シェルスクリプトの実行は危険を伴うので、コンパイル時に -shell-escape オプションを追加して明示に許可する必要がある。
$ latex -shell-escape main.tex
例(Overleaf): word count test
