Правильный подсчет слов документа LaTeX

В настоящее время я ищу приложение или script, который выполняет правильное количество слов для документа LaTeX.

До сих пор я столкнулся только с скриптами, которые работают только с одним файлом, но то, что я хочу, - это script, который может безопасно игнорировать ключевые слова LaTeX, а также файлы, привязанные к траверсу... т.е. следуйте \include и \input ссылкам, чтобы создать правильный подсчет слов для всего документа.

С помощью vim я в настоящее время использую ggVGg CTRL+G, но, очевидно, это показывает счетчик для текущего файла и не игнорирует ключевые слова LaTeX.

Кто-нибудь знает о любом script (или приложении), который может выполнять эту работу?

Ответ 1

Я использую texcount. веб-страница содержит Perl script для загрузки (и руководства).

Он включает в себя tex файлы, которые включены (\input или \include) в документе (см. -inc), поддерживает макросы и имеет много других приятных функций.

При включении файлов вы получите подробную информацию о каждом отдельном файле, а также об итогах. Например, здесь приведен общий вывод для моего 12-страничного документа:

TOTAL COUNT
Files: 20
Words in text: 4188
Words in headers: 26
Words in float captions: 404
Number of headers: 12
Number of floats: 7
Number of math inlines: 85
Number of math displayed: 19

Если вас интересует только итог, используйте аргумент -total.

Ответ 2

Я пошел с комментарием icio и произнес количество слов на самом PDF файле, соединив вывод pdftotext с wc:

pdftotext file.pdf - | wc - w 

Ответ 3

latex file.tex
dvips -o - file.dvi | ps2ascii | wc -w

должен дать вам достаточно точное количество слов.

Ответ 4

Чтобы добавить к @aioobe,

Если вы используете pdflatex, просто сделайте

pdftops file.pdf
ps2ascii file.ps|wc -w

Я сравнил этот счет с подсчетом в Microsoft Word в документе на 1599 слов (согласно Word). pdftotext создан текст с 1700 + словами. texcount не включал ссылки и произвел 1088 слов. ps2ascii возвращено 1603 слова. 4 больше, чем в Word.

Я говорю, что довольно неплохо. Я не уверен, где разница в 4 слова.:)

Ответ 5

В интерфейсе Texmaker вы можете получить количество слов, щелкнув правой кнопкой мыши в PDF-формате:

введите описание изображения здесь

введите описание изображения здесь

Ответ 6

Я использую следующий VIM script:

function! WC()
    let filename = expand("%")
    let cmd = "detex " . filename . " | wc -w | perl -pe 'chomp; s/ +//;'"
    let result = system(cmd)
    echo result . " words"
endfunction

... но он не следит за ссылками. Это в основном повлечет за собой синтаксический анализ файла TeX для получения всех связанных файлов, не так ли?

Преимущество над другими ответами заключается в том, что он не должен создавать выходной файл (PDF или PS), чтобы вычислить количество слов, чтобы его потенциально (в зависимости от использования) было намного более эффективным.

Хотя комментарий icios теоретически правильный, я обнаружил, что приведенный выше метод дает довольно точные оценки количества слов. Для большинства текстов это хорошо в пределах 5%, которое используется во многих назначениях.

Ответ 7

Для очень простого документа класса статьи я просто рассматриваю количество совпадений для регулярного выражения для поиска слов. Я использую Sublime Text, поэтому этот метод может не работать для вас в другом редакторе, но я просто нажал Ctrl+F (Command+F на Mac), а затем, с включенным регулярным выражением, выполните поиск

(^|\s+|"|((h|f|te){)|\()\w+

который должен игнорировать текст, объявляющий плавающую среду или титры на фигурах, а также большинство типов основных уравнений и объявлений \usepackage, включая цитаты и скобки. Он также учитывает сноски и текст \emph, и будет считаться \hyperref ссылками как одно слово. Он не идеален, но он, как правило, с точностью до нескольких десятков слов или около того. Вы можете улучшить его работу, но script, вероятно, лучшее решение, поскольку исходный код LaTeX не является обычным языком. Просто подумал, что я брошу это здесь.