我在文档中引用了多处参考文献。我想显示一些有关参考文献的统计信息 - 例如,
- 引用作者
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}}{}