正确计算波斯语文档中的单词数

正确计算波斯语文档中的单词数

当我在 CMD 中使用命令时texcount filename.tex,半空格单词算两个单词,而不是一个单词。我该如何解决这个问题?\谢谢

% Compile with XeLaTeX
\documentclass{article}
\usepackage{xepersian}
\settextfont{Yas}
\begin{document}
من می‌روم ز کوی تو و دل نمی‌رود
\end{document}

这个例子有 8 个单词,但是 latex 将其算作 10 个单词。半空格用于می‌رومنمی‌روم单词。我有很多半空格的单词,它们的情况与另一个字母表不同。半空格是 U+200C(零宽度非连接符),或者在波斯语标准键盘中是Shift + Space

Yas 字体链接

答案1

有一个简单但不太优雅的快速修复方法可以解决此问题。它需要修改 TeXcount Perl 脚本。

texcount.pl 的代码中有一行定义了单词的模式。

$NamedWordPattern{'words'}='(@+|@+\{@+\}|\{@+\}@+)([\-\'\.]?(@+|\{@+\}))*';

在 3.1 版中它位于第 496 行,但在所有较新的 TeXcount 版本中应该都是同一行。它本质上是一个正则表达式,但@稍后将被替换为匹配字母的正则表达式。本质上,它表示单词是字母序列,但字符-'.可能包含在其中。

要将 Unicode 字符添加U+200C到单词中允许的字符列表中,可以将此行更改为

$NamedWordPattern{'words'}='(@+|@+\{@+\}|\{@+\}@+)([\-\'\.\x{200C}]?(@+|\{@+\}))*';

已插入的位置\x{200C}。不可否认,这不是一个很优雅的解决方案,并且可能还有其他字符也应允许在单词内使用。

更好的解决方案可能是使用 Unicode 字符类来识别单词内允许的分隔符,但我不确定什么是合适的规则:这可能会影响具有类似字符的其他语言,从而可能产生期望或不期望的效果。

相关内容