LaTeX 文档的正确字数统计

问题描述 投票:0回答:10

我目前正在寻找一个应用程序或脚本,可以对 LaTeX 文档进行正确字数统计。

到目前为止,我只遇到过仅适用于单个文件的脚本,但我想要的是一个可以安全地忽略 LaTeX 关键字并且还可以 遍历链接文件...即跟随

\include
\input
链接的脚本为整个文档生成正确的字数。

对于 vim,我目前使用

ggVGg CTRL+G
但显然它显示了当前文件的计数并且不会忽略 LaTeX 关键字。

有人知道可以完成这项工作的任何脚本(或应用程序)吗?

latex word-count
10个回答
77
投票

我用

texcount
网页有一个可供下载的 Perl 脚本(和手册)。

它将包含文档中包含的

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
参数。


13
投票

我同意 icio 的评论,并通过将

pdftotext
的输出传输到
wc
来对 pdf 本身进行字数统计:

pdftotext file.pdf - | wc - w 

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

应该给你一个相当准确的字数。


6
投票

添加到@aioobe,

如果你使用 pdflatex,就这样做

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

我将此计数与 Microsoft Word 中 1599 个字文档中的计数进行了比较(根据 Word)。

pdftotext
生成了 1700 多个单词的文本。
texcount
不包含参考文献,产生了 1088 个单词。
ps2ascii
返回1603字。比 Word 中多 4 个。

我说这个数字相当不错。不过,我不确定这四个字的区别在哪里。 :)


5
投票

在 Texmaker 界面中,您可以通过右键单击 PDF 预览来获取字数统计:

enter image description here

enter image description here


3
投票

Overleaf 有字数统计功能:

背页 v2:

enter image description here

enter image description here

背页 v1:

enter image description here

enter image description here


1
投票

我使用以下 VIM 脚本:

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)来计算字数,因此它可能(取决于使用情况)更高效。

虽然icio的评论理论上是正确的,但我发现上述方法对字数的估计相当准确。对于大多数文本来说,它完全在许多作业中使用的 5% 的范围内。


1
投票
如果 vim 插件的使用适合您,

vimtex 插件已经很好地集成了 texcount

 工具。

以下是他们文档的摘录:

:VimtexCountLetters Shows the number of letters/characters or words in :VimtexCountWords the current project or in the selected region. The count is created with `texcount` through a call on the main project file similar to: > texcount -nosub -sum [-letter] -merge -q -1 FILE < Note: Default arguments may be controlled with |g:vimtex_texcount_custom_arg|. Note: One may access the information through the function `vimtex#misc#wordcount(opts)`, where `opts` is a dictionary with the following keys (defaults indicated): > 'range' : [1, line('$')] 'count_letters' : 0/1 'detailed' : 0 < If `detailed` is 0, then it only returns the total count. This makes it possible to use for e.g. statusline functions. If the `opts` dict is not passed, then the defaults are assumed. *VimtexCountLetters!* *VimtexCountWords!* :VimtexCountLetters! Similar to |VimtexCountLetters|/|VimtexCountWords|, but :VimtexCountWords! show separate reports for included files. I.e. presents the result of: > texcount -nosub -sum [-letter] -inc FILE < *VimtexImapsList* *<plug>(vimtex-imaps-list)*

这个的好处是它的可扩展性。除了计算当前文件中的字数之外,您还可以进行视觉选择(例如两个或三个段落),然后仅将命令应用于您的选择。


0
投票
对于非常基本的文章类文档,我只查看正则表达式的匹配数来查找单词。我使用 Sublime Text,因此此方法可能不适用于其他编辑器,但我只需点击

Ctrl+F

(在 Mac 上为 
Command+F
),然后在启用正则表达式的情况下搜索

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

应忽略声明浮动环境的文本或图形标题以及大多数类型的基本方程和

\usepackage

声明,同时包括引用和括号。它还会计算脚注和 
\emph
 大小的文本,并将 
\hyperref
 链接计为一个单词。它并不完美,但通常准确到几十个字左右。您可以改进它以适合您,但脚本可能是更好的解决方案,因为 LaTeX 源代码不是常规语言。只是想我会把它扔在这里。


0
投票
要计算不同语言的单词数,请使用

https://countsword.com/

© www.soinside.com 2019 - 2024. All rights reserved.