我不喜欢命令\cite
或\parencite
生成页码的方式。如果我给出命令\cite[43]{XXX2015}
,它会产生:
XXX2015,第43页。
我想要的是:
XXX2015:43。
我知道命令\citet
应该给我这个,我也从搜索中知道我应该加载natbib
包来获得它。但是,存在一些与我序言中已有内容相关的兼容性问题。我猜一定是包biblatex
或backend
包(如果那确实是一个包)。如果我只是加载包,natbib
我会收到错误消息:
command \bighang already defined.
我可以继续使用backend
此设置的包并添加一些内容吗?这是一个 MWWW:
\documentclass[12]{article}
\usepackage[english]{babel}
\usepackage[backend=biber, style=authoryear-comp, sortcites=false, maxcitenames=2, mincitenames=1, maxbibnames=4, uniquelist=false]{biblatex}
\addbibresource{ref.bib}
\begin{document}
Blablabla. \cite[43]{Wolfe2015}
\end{document}
答案1
natbib
并且biblatex
确实不兼容。biblatex
与大多数书目管理包不兼容,因为它实现引文和书目的方式与传统的 BibTeX 方式完全不同。通常这还不算太糟,因为它biblatex
可以开箱即用地做很多事情,因此不需要额外的包。
幸运的natbib
是,这与你的问题无关。biblatex
可以做你想做的事情,而不需要额外的软件包(也没有natbib
兼容模式,如果没有必要,我会避免使用兼容模式,另请参阅将 natbib=true 与 biblatex 一起使用有什么缺点吗?)。
您只需重新定义postnote
格式以停止打印页面前缀。然后我们将引文和后记之间的标点符号更改为冒号。
\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear-comp, sortcites=false, maxcitenames=2, mincitenames=1, maxbibnames=4, uniquelist=false]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{volcitepages}{\mknormrange{#1}}
\DeclareFieldFormat{multipostnote}{\mknormrange{#1}}
\renewcommand*{\postnotedelim}{\addcolon}
\begin{document}
\autocite[380]{sigfridsson}
\printbibliography
\end{document}
给出
顺便说一句,\citet
通常会给出以下形式的引用
Sigfridsson 和 Ryde (1998)
相当于biblatex
is (就像相当于is一样)。兼容模式允许您编写get \citet
with\textcite
\citep
\parencite
natbib
\citet
\textcite
biblatex
星号版本的行为并更改一些标点符号(将 natbib=true 与 biblatex 一起使用有什么缺点吗?)。