`csquotes` 和 `biblatex` 之间的冲突

`csquotes` 和 `biblatex` 之间的冲突

在下面的代码中,如果使用csquotes,则 下的参考文献标题会被错误地括在 中,如果没有 则相反。该文件是用 Biber 处理的。\printbibiolograhy?*bib

问题是什么?如何解决?

和 没有

\documentclass{article}
\usepackage{babel}
\usepackage[style=numeric, maxnames=999, backend=biber]{biblatex}
\begin{filecontents}{\jobname.bib}
@phdthesis{jd-2005,
        author = {John Doe},
        title = {TITLE},
        year = {2005}
}
\end{filecontents}
\addbibresource{\jobname.bib}
%\usepackage{csquotes} 
\usepackage{hyperref}

\listfiles

\title{TITLE}

\author{John Doe}
\date{\today}

\begin{document}

\maketitle
\tableofcontents

\cite[pp. 25-27]{jd-2005}

\phantomsection
%\addcontentsline{toc}{section}{References}
\printbibliography[heading=subbibliography]

\end{document}

答案1

MWEcsquotes会产生以下警告

Package csquotes Warning: No style for language 'nil'.
(csquotes)                Using fallback style on input line 22.

以及(虽然与此不太相关)

Package biblatex Warning: Language 'nil' not supported.
(biblatex)                Using fallback language 'english' on input line 22.

本质上,MWEbabel根本不加载和设置任何语言,这导致babel假装nil加载了某种语言。 无论是biblatex还是都csquotes无法正确处理nil

解决方案是,在加载时始终传递至少一种语言选项babel(或根本不加载babel)。在大多数情况下,english它是标准语言,因此english(无论是全局的\documentclass还是直接作为的包选项babel)都是这里的直接选择,但您当然可以选择biblatex和支持的任何语言csquotes

\documentclass[english]{article}
\usepackage{babel}
\usepackage[style=numeric, maxnames=999, backend=biber]{biblatex}
\usepackage{csquotes} 
\usepackage{hyperref}

\addbibresource{biblatex-examples.bib}

\begin{document}
\cite[25-27]{sigfridsson}

\printbibliography[heading=subbibliography]
\end{document}

带有精美排版的引号的参考书目。


我似乎记得在旧版本中babelbabel如果根本没有选择任何语言,就会出错或者至少会发出警告。


请注意,无需手动放入pp.后记中,biblatex可以检测页面范围并自动添加适当的页面前缀。

也没有必要使用\addcontentsline{toc}{section}{References}\phantomsection来使参考书目出现在目录中。看看该heading选项的其他值(例如subbibintoc)。

答案2

我相信我能够通过使用 选项English来修复它babel,尽管我必须承认我不完全确定为什么这样做有效。代码如下:

\documentclass{article}
\usepackage[english]{babel}
\usepackage[style=numeric, maxnames=999, backend=biber]{biblatex}
\begin{filecontents}{\jobname.bib}
@phdthesis{jd-2005,
        author = {John Doe},
        title = {TITLE},
        year = {2005}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\usepackage{csquotes} 
\usepackage{hyperref}

\listfiles

\title{TITLE}

\author{John Doe}
\date{\today}

\begin{document}

\maketitle
\tableofcontents

\cite[pp. 25-27]{jd-2005}

\phantomsection
%\addcontentsline{toc}{section}{References}
\printbibliography[heading=subbibliography]

\end{document}

输出的屏幕截图

相关内容