在以下 MWE 中
\documentclass{article}
\usepackage{filecontents}
\usepackage[%
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
\addbibresource{\jobname.bib}
\begin{filecontents}[force]{\jobname.bib}
@article{key,
author = {Author, A.},
title = {Title?},
year = {2021},
journal = {Journal}
}
@article{key2,
author = {Author, B.},
title = {Title},
year = {2021},
journal = {Journal}
}
\end{filecontents}
\begin{document}
\cite{key}, \cite{key2}
\printbibliography
\end{document}
可以看出以问号结尾的标题在引号后面没有句号,而没有问号的标题后面有一个句号。以引号结尾的标题可以加句号吗?
答案1
这是biblatex
的标点符号跟踪器,它的作用是避免不必要的重复标点符号。通常,该功能可避免由字段值和biblatex
生成的标点符号重复引起的标点符号冲突。
这里可以说这个功能有些过了,特别是因为引号提供了分隔双标点的视觉屏障。
biblatex
解决方案一是“隐藏”标点符号跟踪器中的问号。要么直接在.bib
条目中,\@
在?
\documentclass{article}
\usepackage[
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{key1,
author = {Author, A.},
title = {Title?\@},
year = {2021},
journal = {Journal},
}
@article{key2,
author = {Author, B.},
title = {Title},
year = {2022},
journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{key1,key2}
\printbibliography
\end{document}
或全局地在所有title
用引号括起来的字段中,对字段格式进行适当的重新定义,添加\@
\documentclass{article}
\usepackage[
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
%\DeclareFieldFormat{title}{\mkbibemph{#1\@}}
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{\mkbibquote{#1\@}}
%\DeclareFieldFormat
% [suppbook,suppcollection,suppperiodical]
% {title}{#1\@}
\begin{filecontents}{\jobname.bib}
@article{key1,
author = {Author, A.},
title = {Title?},
year = {2021},
journal = {Journal},
}
@article{key2,
author = {Author, B.},
title = {Title},
year = {2022},
journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{key1,key2}
\printbibliography
\end{document}
另一种解决方案是通常允许问号和感叹号后面跟一个句号。但这可能会导致在无引号或由于其他原因不需要引号的情况下出现不良的标点冲突。(有关详细信息,请\DeclarePunctuationPairs
参阅Biblatex 标点符号识别)
\documentclass{article}
\usepackage[
backend=biber,
style=numeric,
giveninits=true,
sorting=nyt,
]{biblatex}
\DeclarePunctuationPairs{period}{.?!}
\begin{filecontents}{\jobname.bib}
@article{key1,
author = {Author, A.},
title = {Title?},
year = {2021},
journal = {Journal},
}
@article{key2,
author = {Author, B.},
title = {Title},
year = {2022},
journal = {Journal},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Lorem \autocite{key1,key2}
\printbibliography
\end{document}