如何在使用 biblatex 时省略地址字段

如何在使用 biblatex 时省略地址字段

可以通过以下方式省略 url

url=false

如何省略address

我尝试过address=false但不是那样。

刚刚发现:

\DeclareSourcemap{
  \maps[datatype=bibtex, overwrite]{
    \map{
      \step[fieldset=address, null]
      \step[fieldset=editor, null]
    }
  }
}

答案1

至少是标准样式

url=no,

是无效的,将产生类似以下的错误

! Package etoolbox Error: Invalid boolean value 'no'.

url是布尔选项,只能取值truefalse(也可以不带值出现,相当于传递值true)。

与某些人持有的观点相反,这种观点不适用于所有字段,尽管这种观点时不时出现在各种 LaTeX 论坛以及本网站上。事实上,只有 、urlisbn以及issnisrneprintrelated字段可以用这种方式隐藏。所有其他字段都需要用不同的方法删除。


处理时要记住两件事address

  1. address实际上只是为了向后兼容 BibTeX 而提供的便利别名。Biberlocation将 字段重新映射到 字段。内部biblatex只知道location而不知道address

  2. biblatex区分三种类型的字段。名称列表、列表和(适当)字段。如果要清除“字段”,则\clear...需要知道其类型并使用相应的\clear...命令(\clearfield\clearlist\clearname)。location是一个列表。您可以biblatex通过查阅biblatex文档,特别是第 2.2 节输入字段

有多种方法可以删除某个字段。


我完全摆脱address/ 的首选方法location是通过 Biber 源映射。源映射在应用字段别名之前执行,因此在之前address重新映射到location。因此,我们需要对nulladdress进行location操作以确保address/location消失。

\DeclareSourcemap{
  \maps[datatype=bibtex, overwrite]{
    \map{
      \step[fieldset=address, null]
      \step[fieldset=location, null]
    }
  }
}

此方法将完全删除字段的所有痕迹。Biber 将不会使用该字段来计算任何高级功能,如名称唯一性、标签...字段等,也不会将其传递给biblatex


一个稍微不那么漂亮的去除方法location

\DeclareListInputHandler{location}{\def\NewValue{}}

Biber 仍然会看到该场,并且可能会将其考虑在内进行计算,但biblatex会简单地忽略它。


最后,你可以选择性地隐藏引文或参考书目中的字段

 \AtEveryCitekey{\clearlist{location}}
 \AtEveryBibitem{\clearlist{location}}

这样,数据就已经被 Biber 处理过了,并且可以用于标签和唯一性计算;原则上它也为人所知biblatex,但是你告诉它暂时忘掉它。


总的来说,我认为尽早忽略一个字段是个好建议(特别是如果我们谈论的是名称或日期字段),但对于大多数涉及的意图和目的而言,locationaddress三种方法会产生相同的结果。

相关内容