16

The journal I am submitting to requires a count of the words on the title page. I can of course run texcount on the .tex document and put the number in, but it seems that I should be able to automate this.

For tables and figures (which are also required), I can simply use the totcount package. Is there something equivalent for words? Or can I store the output of texcount in such a way that I can call it on a subsequent pdflatex run?

  • This is similar in many ways to the request at http://tex.stackexchange.com/questions/44618/dynamically-count-and-return-number-of-words-in-a-section. I can't see how to adopt this directly, however. – gregmacfarlane Mar 23 '12 at 17:49

2 Answers2

15

Here is the solution using bashful. Note that you need to run latex or pdflatex using -shell-escape option

\documentclass{article}
\usepackage{bashful}
\pagestyle{empty}
\bash
texcount -sum -1 tmp.tex
\END
\begin{document}    
This file has \emph{\bashStdout} words.
\end{document}

:

Boris
  • 38,129
  • I combined your texcount syntax with the macro supplied by Jake on the other question, and it works wonderfully. Yours didn't work because of \bashStdout is not recognized as a control statement. But thanks for helping me with the texcount syntax! – gregmacfarlane Mar 23 '12 at 19:29
  • You probably need to upgrade bashful to get \bashStdout to work – Boris Mar 23 '12 at 19:38
  • I don't suppose that there is a way to pass the name of the document to texcount automatically? The macro from the other question uses \jobname, but when I tried that here it didn't work. – twsh Aug 04 '12 at 09:44
6

Here is a solution that does not require an external package:

 \makeatletter\@@input|"echo `texcount -1 manuscript.tex`| cut -c1-4"\makeatother

The cut command assumes a four digit number and could be parsed more elegantly.

This command requires --shell-escape when compiling, as in:

pdflatex --shell-escape myfile.tex
  • I prefer this solution respect to the first one. However, when I use it, it produces an unwanted white space after the four digit number. I worked around that using \hspace{-.5ex} but maybe it depends on the parsing of texcount's output – Alessandro Cuttin Aug 16 '13 at 10:32
  • 1
    BTW, it can be improved as following: \makeatletter\@@input|"echotexcount -q -1 -merge \jobname.tex| cut -c1-4"\makeatother – Alessandro Cuttin Aug 16 '13 at 11:10
  • Another improvement would be cut -d+ -f1 instead of cut -c1-4 to make the script work regardless of the number of words in the document (-d+ uses + as field delimiter, -f1 orders cut to output only the first field). – gioele Mar 09 '18 at 10:19