先前的答案显示了如何删除文档中所有引用的标题。不幸的是\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
.bbl
title
.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
。