计算字段中包含子字符串的引用数

计算字段中包含子字符串的引用数

我在文档中引用了多处参考文献。我想显示一些有关参考文献的统计信息 - 例如,

  • 引用作者Smith
  • 年份xxxx和之间的引用yyyy
  • 期刊上发表的引用foo
  • 未在期刊上发表的引用(我认为我只有@inproceedings@book类型)。

我在用着biblatex

关于计算全部的引用次数:例如,, 和。这些与我想要做的类似,但答案不能扩展到我的用例。

这里,我可以使用以下方法计算两年内发表的引用量:

\usepackage{etoolbox}
\AtDataInput{
    \ifboolexpr{ test { \ifnumless  {\thefield{year}+0}{2005}} and
                 test {\ifnumgreater{\thefield{year}+0}{2000}}}
                 { \stepcounter{c_years} }{}
 {}
}

我正在尝试做类似的事情来计算Smith期刊上的作者姓名和出版物数量foo

\usepackage{xstring}
\newcounter{c_foo}
\AtDataInput{
    \IfSubStr{\strfield{booktitle}}{foo}{ \stepcounter{c_foo} }{}
 {}
}

foo如果是的子字符串,我会步进计数器\strfield{booktitle}。但是,这不起作用(计数器保持为 0)。我尝试过\thefield,但同样不起作用。

我认为也许foo没有被空格包围,并且 xstrings\IfSubStr没有拾取它,但是这两个都有效:

\IfSubStr{The foo bear}{foo}{ \stepcounter{c_foo} }{}
\IfSubStr{Thefoobear}{foo}{ \stepcounter{c_foo_two} }{}

我采用这种方法是因为当它起作用时,我应该能够检查任何字段的子字符串,这是一个可扩展的解决方案。

foo如果是我的引用的某个字段的子字符串,我该如何增加计数器?

答案1

这是类别代码的问题。 返回的字符串\strfield由类别代码 12 个字符组成,与您在搜索字符串中使用的类别代码 11 个字符不匹配。

解决方案:

\IfSubStr{\strfield{booktitle}}{\detokenize{foo}}{\stepcounter{c_foo}}{}

相关内容