让 textcount 忽略数字

让 textcount 忽略数字

尝试texcount不将数字计为单词,但设置alphabets=Latin似乎无法解决问题。有什么建议吗?

梅威瑟:

\begin{document}
testing 1 2 3 this should be five
\end{document}

texcount输出:

  ➜ texcount  FORWORDCOUNT.tex 
  File: FORWORDCOUNT.tex
  Encoding: ascii
  Words in text: 8
  Words in headers: 0
  Words outside text (captions, etc.): 0
  Number of headers: 0
  Number of floats/tables/figures: 0
  Number of math inlines: 0
  Number of math displayed: 0

  ➜ texcount -alphabets=Latin FORWORDCOUNT.tex
  File: FORWORDCOUNT.tex
  Encoding: ascii
  Words in text: 8
  Words in headers: 0
  Words outside text (captions, etc.): 0
  Number of headers: 0
  Number of floats/tables/figures: 0
  Number of math inlines: 0
  Number of math displayed: 0

答案1

呃,搞明白了。需要将编码设置为unicode。这有效:

  ➜   texcount -alphabets=Latin FORWORDCOUNT.tex -unicode                                          
  File: FORWORDCOUNT.tex
  Words in text: 5
  Words in headers: 0
  Words outside text (captions, etc.): 0
  Number of headers: 0
  Number of floats/tables/figures: 0
  Number of math inlines: 0
  Number of math displayed: 0

答案2

更新答案:

从 3.2 版本开始,可以区分单词和数字。

有一个新的 TeXcount 指令,%TC:wordtype {original-rule} {wordtype} {new-rule}它允许根据单词类型修改计数规则:numbermixed(字母和数字)或nonum(没有任何数字的单词)。

添加规则

%TC:wordtype text number ignore

和文本中的单词将被忽略。要对“标题词”和“其他词”执行相同操作,还请添加以下内容:

%TC:wordtype otherword number ignore
%TC:wordtype headerword number ignore

text规则只是该规则的别名word:其他规则也有别名,如owordhword

请注意,此功能尚处于实验阶段,在未来版本中可能会有所改变。


我正在从评论转向答案,尽管这还不是对正在发生的事情的答案。

正如评论中提到的,-alphabets=Latin如果没有该选项,该选项应该也可以工作-unicode。当我在 Windows 10 上测试它时,它按预期工作。

该选项的唯一效果-unicode是确保文件解码为 UTF8,而不是 ASCII,因为输入是纯 ASCII,所以 ASCII 是默认设置。这可能会影响字符串在 Perl 内部的表示方式,但除非您使用的是旧版 Perl,否则内部表示应为 UTF8。

您能检查一下您运行的是哪个 Perl 版本吗?我认为perl --version应该返回您正在运行某个 Perl 5 版本。

我使用如下小脚本做了一些测试:

use Encode;
use Devel::Peek;
my $enc=find_encoding('ascii');
my $x=$enc->decode('test123');
Dump($x);
$x=~s/(\p{Latin})/[$1]/g;
print $x;

然而,无论我做什么,我都无法让它输出除[t][e][s][t]123表明它已正确识别拉丁字母之外的任何其他内容。

我甚至尝试my $x=$enc->encode('test123');强制使用字节表示$x(不设置 UTF8 标志),但结果仍然相同。我认为Latin如果字符串不是 UTF8 表示,Unicode 字符类(例如)可能无法工作,但这似乎不是问题;也许在较旧/其他 Perl 版本上会这样。

我一直在 Windows 10 上使用 Perl 5(v5.24.0)运行 TeXcount 3.1,但也检查了 TeXcount 3.0 以确保没有相关变化。

相关内容