是否可以配置texcount
为重复计数某些宏的非可选参数的内容?
请考虑以下示例:
\documentclass{article}
\begin{document}
\autocite[e.g.][4]{key-1,key-2}
\autocites[e.g.][5]{key-1,key-2}[and][89]{key-3}
\end{document}
当然,这不会编译,但它可以作为一个最小示例,texcount
并不关心它是否编译。
我的texcount.cfg
包括以下规则:
%TC:macro \autocite [1]
%TC:macro \autocites [1,1]
运行上述最小文档将texcount
产生包含以下内容的输出:
\documentclass{article} [0]
\begin{document} [0]
\autocite[e.g.][4]{key-1,key-2} [2]
\autocites[e.g.][5]{key-1,key-2}[and][89]{key-3} [5]
\end{document} [5]
Total
Sum count: 5
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
Files: 2
就我的目的而言,这比默认的完全不计算我的引用数有了很大的改进。尽管如此,它仍然低估了数量。准确的计数应该是(大约)16 个单词,而不是 5 个,其中包括对每个键进行双重计数后的 10 个单词:
- 每次使用都会
<key>
产生一个作者年份标签,共有 5 个,总共 10 个单词
我意识到它不可能texcount
知道我使用的是作者年份标签。但我可以告诉它在非可选参数中对每个单词进行双重计数吗?
答案1
答案部分是否定的,部分是肯定的。
您无法指定某个宏中的单词应被计算两次。但是,您可以通过将该-sum=...
选项与特定(或新)计数器一起使用来实现大致相同的效果。
您可以-sum=...
在命令行上使用选项(但不能作为%TC
文档中的指令)来提供总计数。这会将不同的计数器加在一起以提供总计数,并且可以指定包含哪些计数器(权重 1)或排除哪些计数器(权重 0),例如,-sum=1,0,1
这将包括文本中的单词(第一个计数器)和其他地方(如标题)(第三个计数器),但不包括在标题中(第二个计数器)。但是,权重可以是任何整数,因此-sum=1,1,2
将计算所有单词,但其他地方的单词会被计算两次。
接下来,您可以定义一个新的计数器,用于双重计数的特定目的。其形式如下%TC:newcounter name Description
。例如
%TC:newcounter double Double count
%TC:macro \autocite [option:text,option:ignore,double]
\autocite[e.g.][4]{key-1,key-2}
这不会重复计算double
单词,但会分别计算。
最初有 7 个计数器,因此double
计数器将为 8,因此要计算所有double
重复计数的单词,您可以使用选项运行 TeXcount 。但是,为了让 TeXcount 接受超过 7 个权重,您必须将(最新版本的第 1012 行)中的-sum=1,1,1,0,0,0,0,2
行从sub option_sum
} elsif ($arg=~/^(\d+(\.\d*)?(,\d+(\.\d*)?){0,6})$/) {
到
} elsif ($arg=~/^(\d+(\.\d*)?(,\d+(\.\d*)?)*)$/) {
在这种情况下,您必须确保添加的权重不要超过计数器的数量,否则 TeXcount 可能会失败。