继这问题,我希望 ja 的出现方式如下:
Biernacki, P. and Waldorf, D. (1981). “Snowball sampling: Problems and techniques
of chain referral sampling”, Sociological methods & research
10.2, pp. 141–163.
moewe 的神奇解决方案可以做到这一点(摆脱“In:”):
\renewbibmacro*{in:}{%
\setunit{\addcomma\space}%
\ifentrytype{article}
{}
{\printtext{%
\bibstring{in}\intitlepunct}}}
但同时我希望 incollections 显示为:
Froestad, J., Shearing, C., and Van der Merwe, M. (2015) ‘Criminology: Re-
Imagining Security and Risk.’, in Bourbeau, P. (ed) Security: Dialogue across
Disciplines. Cambridge: Cambridge University Press., pp. 177–195.
但 ', in' 显示为 ' In:'。所以我想在前面添加一个逗号,将 I 小写并删除冒号。我尝试重复与 moewe 的答案类似的代码,但我无法让它工作:只有最后一个 renewbibmacro 起作用。TIA!!
答案1
\renewbibmacro*{in:}{%
\setunit{\addcomma\space}%
\ifentrytype{article}
{}
{\printtext{%
\bibstring{in}\intitlepunct}}}
\renewcommand*{\intitlepunct}{\addspace}
是您想要的正确解决方案。
但是,当我们使用代码和你问题中的最小示例时,就会发现其中存在一个小问题为什么我的 MWE 看不到参考文献?。
如果你有此外修改了字段的字段格式title
(我在这里推测,因为您没有共享 MWE,但发生这样的事情并不完全奇怪,因为您必须大量修改样式才能获得您显示的输出)您放在字段末尾的句点froestad2015Criminology
可能会混淆biblatex
的标点符号跟踪器。
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{friedman2001greedy,
title = {Greedy function approximation: a gradient boosting machine},
author = {Friedman, Jerome H.},
journal = {Annals of Statistics},
pages = {1189--1232},
year = {2001},
publisher = {JSTOR},
}
@incollection {froestad2015Criminology,
author = {Froestad, J. and Shearing, C. and {Van der Merwe}, M.},
title = {Criminology: Re-Imagining Security and Risk.},
booktitle = {Security: Dialogue across Disciplines.},
publisher = {Cambridge: Cambridge University Press.},
year = {2015},
pages = {177--195},
editor = {Bourbeau, P.},
}
\end{filecontents}
\documentclass{article}
\usepackage[%
backend=biber,
style=authortitle,
sorting=nyt,
]{biblatex}
\addbibresource{\jobname.bib}
\DeclareFieldFormat[incollection]{title}{\enquote{#1}}
\renewbibmacro*{in:}{%
\setunit{\addcomma\space}%
\ifentrytype{article}
{}
{\printtext{%
\bibstring{in}\intitlepunct}}}
\renewcommand*{\intitlepunct}{\addspace}
\begin{document}
\textcite{friedman2001greedy,froestad2015Criminology}
\printbibliography
\end{document}
给出
biblatex
试图抑制双标点符号,因此
“犯罪学:重新想象安全和风险。”
抑制逗号会通常会跟在它后面,因为句号后面不能跟逗号。
效果并不明显(如果你仔细观察的话)
安全:跨学科对话。
因为无论如何它后面都会跟着一个句号(但如果您.
在字段中使用booktitle
,则句号以斜体显示,而如果biblatex
自行添加,则句号为直立)。
逗号不被隐藏
剑桥大学出版社,2015
因为biblatex
(在此字段中错误地)假设字段.
中的apublisher
总是表示缩写,其后使用逗号即可。
解决方法是从文件中删除多余的句号.bib
。
@incollection {froestad2015Criminology,
author = {Froestad, J. and Shearing, C. and {Van der Merwe}, M.},
title = {Criminology: Re-Imagining Security and Risk},
booktitle = {Security: Dialogue across Disciplines},
publisher = {Cambridge University Press},
location = {Cambridge},
year = {2015},
pages = {177--195},
editor = {Bourbeau, P.},
}
运行良好,并给出了预期的结果