从 biblatex 中的翻译文章引文中删除标题

从 biblatex 中的翻译文章引文中删除标题

先前的答案显示了如何删除文档中所有引用的标题。不幸的是\clearfield{title},它不适用于翻译文章的标题。\DeclareFieldFormat{title}{}但是,它确实有效,但是由于前面答案中提到的原因,由于多余的标点符号,它不是一个理想的解决方案。

这是一个最小工作示例。请注意,俄语标题被保留,但英语翻译的标题没有保留。

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{skrebkov_turbulentnyye_1963,
  title = {Turbulentnyye pul'satsii v zhidkoy struye i yeye raspylivaniye},
  issn = {0869-5032},
  url = {http://www.sibran.ru/journals/issue.php?ID=160175&ARTICLE_ID=160248},
  number = {3},
  journaltitle = {Prikladnaya mekhanika i tekhnicheskaya fizika},
  author = {Skrebkov, G. P.},
  date = {1963-05},
  pages = {79--83}
}

@article{skrebkov_turbulent_1966,
  title = {Turbulent {{Pulsations}} in a {{Liquid Jet}}, and {{Its Atomization}}},
  url = {http://www.dtic.mil/docs/citations/AD0635269},
  number = {3},
  journaltitle = {Journal of Applied Mechanics and Technical Physics (Foreign Technology Division)},
  author = {Skrebkov, G. P.},
  date = {1966-02-16},
  pages = {142--151},
  related = {skrebkov_turbulentnyye_1963},
  relatedtype = {translationof}
}
\end{filecontents}

\usepackage[style=numeric,backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\AtEveryBibitem{\clearfield{title}}
\renewbibmacro{in:}{}

\begin{document}
\nocite{skrebkov_turbulent_1966}

\printbibliography

\end{document}

最小工作示例

此外,如果有人知道如何删除“Trans. of.”中的多余的句号,我将不胜感激。

答案1

您可以使用

\DeclareFieldInputHandler{title}{\def\NewValue{}}

或者

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \step[fieldset=title, null]
    }
  }
}

更有效地摆脱该title领域。

第一个导致永远不会从中biblatex读取,而第二个导致 Biber在读取文件时丢弃,以便它甚至不会出现在中。title.bbltitle.bib.bbl

\AtEveryBibitem{\clearfield{title}}另一方面,创建一个钩子,每当打印参考书目项时都会执行该钩子。然后它会暂时删除title。翻译的标题不会被删除,因为它属于不同的条目。但在处理相关条目时不会再次执行该钩子。

源映射方法也可以仅限于某些类型

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
      \pertype{article}
      \step[fieldset=title, null]
    }
  }
}

也可以\DeclareFieldnputHandler按类型进行限制,但目前需要对一些内部宏进行轻微的更改

\makeatletter
\protected\def\blx@bbl@entry#1#2#3{%
  \begingroup
  \edef\abx@field@entrykey{\detokenize{#1}}%
  \blx@setoptions@type{#2}%
  \blx@bbl@options{#3}%
  \blx@setoptions@entry
  \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@dlist@name @\abx@field@entrykey}%
  \blx@bbl@addfield{entrykey}{\abx@field@entrykey}%
  \listxadd\blx@entries{\abx@field@entrykey}%
  \blx@bbl@addfield{entrytype}{#2}%
  \csuse\blx@bbl@data
  \blx@imc@iffieldundef{options}
    {}
    {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}}

\DeclareFieldInputHandler{title}{\ifentrytype{article}{\def\NewValue{}}{}}
\makeatother

如果更改完全没有问题,我可能会提交拉取请求以将其纳入核心biblatex

相关内容