75

我目前正在搜索对 LaTeX 文档进行正确字数统计的应用程序或脚本。

到目前为止,我只遇到过只适用于单个文件的脚本,但我想要的是一个可以安全地忽略 LaTeX 关键字并遍历链接文件的脚本......即跟随\include\input链接以产生正确的字数整个文档。

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

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

4

9 回答 9

75

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

于 2010-06-07T13:16:01.303 回答
13

pdftotext我接受了 icio 的评论,并通过管道输出to对 pdf 本身进行了字数统计wc

pdftotext file.pdf - | wc - w 
于 2010-06-04T14:47:57.897 回答
7
latex file.tex
dvips -o - file.dvi | ps2ascii | wc -w

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

于 2010-06-04T14:28:02.537 回答
5

要添加到@aioobe,

如果您使用 pdflatex,请执行

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

我将此计数与 1599 字文档中 Microsoft Word 中的计数进行了比较(根据 Word)。pdftotext产生了1700多个单词的文本。texcount不包括参考文献,产生了 1088 个单词。ps2ascii返回 1603 个单词。比 Word 多 4 个。

我说这是一个很好的计数。不过,我不确定这四个字的区别在哪里。:)

于 2014-02-15T05:36:25.070 回答
5

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

在此处输入图像描述

在此处输入图像描述

于 2016-04-18T17:37:48.643 回答
3

Overleaf 具有字数统计功能:

背页 v2:

在此处输入图像描述

在此处输入图像描述

背页 v1:

在此处输入图像描述

在此处输入图像描述

于 2019-01-05T04:36:47.083 回答
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% 边距内。

于 2010-06-04T14:50:29.173 回答
0

如果 vim 插件的使用适合您,vimtextexcount插件已经很好地集成了该工具。

以下是他们文档的摘录:

: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)*

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

于 2020-02-17T02:41:52.997 回答
0

对于一个非常基本的文章类文档,我只查看正则表达式的匹配数以查找单词。我使用 Sublime Text,所以这个方法在不同的编辑器中可能不适合你,但我只是点击Ctrl+F(Command+F在 Mac 上) 然后,启用正则表达式,搜索

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

它应该忽略声明浮动环境的文本或图形上的标题以及大多数基本方程和\usepackage声明,同时包括引号和括号。它还计算脚注和\emph大小文本,并将\hyperref链接计为一个单词。它并不完美,但通常准确到几十个字左右。您可以对其进行改进以适合您,但脚本可能是更好的解决方案,因为 LaTeX 源代码不是常规语言。只是想我会把这个扔在这里。

于 2017-11-17T20:06:49.583 回答