![使用 biblatex 无法正确呈现引文](https://linux22.com/image/378492/%E4%BD%BF%E7%94%A8%20biblatex%20%E6%97%A0%E6%B3%95%E6%AD%A3%E7%A1%AE%E5%91%88%E7%8E%B0%E5%BC%95%E6%96%87.png)
$\cite{}\ 和 $\citep{}$ 的年份括号引用无法正确显示,并出现Undefined control sequence
错误。我该如何让其正常工作并正确格式化?
\documentclass{paper}
\usepackage[style=authoryear]{biblatex}
\addbibresource{bibliog.bib}
\begin{document}
This should be Giorgi (2002): \cite{Giorgi:WsBBLFIL}\\
This should be (Giorgi 2002): \citep{Giorgi:WsBBLFIL}\\
This should be (Giorgi 2002, Blodgett et al. 2008): \citep{Giorgi:WsBBLFIL,Blodgett:2008jg}\\
This is a book: \citep{Glesne:r1QiTFGB}
\printbibliography
\end{document}
书目目录
@article{Giorgi:WsBBLFIL,
author = {Giorgi, Amedeo},
title = {{The Question of Validity in Qualitative Research}},
journal = {Journal of Phenomenological Psychology},
year = {2002},
volume = {33},
number = {1},
pages = {1--18},
month = mar
}
@article{Blodgett:2008jg,
author = {Blodgett, Jeffrey G and Bakir, Aysen and Rose, Gregory M},
title = {{A test of the validity of Hofstede's cultural framework}},
journal = {Journal of Consumer Marketing},
year = {2008},
volume = {25},
number = {6},
pages = {339--349},
month = sep
}
@book{Glesne:r1QiTFGB,
author = {Glesne, Corrine and Peshkin, Alan},
title = {{Becoming qualitative researchers : an introduction}},
publisher = {White Plains, N.Y. : Longman},
year = {1992}
}
答案1
显然这符合你的要求:
手册中写道biblatex
:“这些(\cite
和\Cite
命令)是裸引用命令。它们打印引用而不添加任何附加内容(例如括号)”,因此您可能应该使用\citet
。
要更改名称年份分隔符,您必须重新定义\nameyeardelim
:
\DeclareDelimFormat{nameyeardelim}{\addspace}
要更改多作者分隔符,请重新定义\multicitedelim
:
\renewcommand*{\multicitedelim}{\addcomma\space}
它应该可以工作。
\RequirePackage{filecontents}
\begin{filecontents}{bibliog.bib}
@article{Giorgi:WsBBLFIL,
author = {Giorgi, Amedeo},
title = {{The Question of Validity in Qualitative Research}},
journal = {Journal of Phenomenological Psychology},
year = {2002},
volume = {33},
number = {1},
pages = {1--18},
month = mar
}
@article{Blodgett:2008jg,
author = {Blodgett, Jeffrey G and Bakir, Aysen and Rose, Gregory M},
title = {{A test of the validity of Hofstede's cultural framework}},
journal = {Journal of Consumer Marketing},
year = {2008},
volume = {25},
number = {6},
pages = {339--349},
month = sep
}
@book{Glesne:r1QiTFGB,
author = {Glesne, Corrine and Peshkin, Alan},
title = {{Becoming qualitative researchers : an introduction}},
publisher = {White Plains, N.Y. : Longman},
year = {1992}
}
\end{filecontents}
\documentclass{paper}
\usepackage[style=authoryear,natbib=true,citestyle=authoryear,maxcitenames=2]{biblatex}
\addbibresource{bibliog.bib}
\DeclareDelimFormat{nameyeardelim}{\addspace}
\renewcommand*{\multicitedelim}{\addcomma\space}
\begin{document}
This should be Giorgi (2002): \citet{Giorgi:WsBBLFIL}\\
This should be (Giorgi 2002): \citep{Giorgi:WsBBLFIL}\\
This should be (Giorgi 2002, Blodgett et al. 2008): \citep{Giorgi:WsBBLFIL,Blodgett:2008jg}\\
This is a book: \citep{Glesne:r1QiTFGB}
\printbibliography
\end{document}
答案2
正如评论中所建议的,natbib=true
可以使用natbib
引用命令。此代码还演示了如何使用 Biblatex 自己的命令来实现相同的结果。
\textcite
和\autocite
依赖于样式。因此,如果您需要除 之外的其他内容authoryear
,格式将相应地进行调整。\parencite
逻辑性较差,外观标记较多。
我还调整了引用标签中使用的标点符号和名称数量。此外,我还更正了文件.bib
。虽然这里的问题没有导致您询问的任何问题,但它们确实导致了一些不一致,并会在其他情况下导致问题。
\begin{filecontents}{\jobname1.bib}
@article{Giorgi:WsBBLFIL,
author = {Giorgi, Amedeo},
title = {The Question of Validity in Qualitative Research},
journal = {Journal of Phenomenological Psychology},
year = {2002},
volume = {33},
number = {1},
pages = {1--18},
month = mar
}
@article{Blodgett:2008jg,
author = {Blodgett, Jeffrey G and Bakir, Aysen and Rose, Gregory M},
title = {A Test of the Validity of {Hofstede}'s Cultural Framework},
journal = {Journal of Consumer Marketing},
year = {2008},
volume = {25},
number = {6},
pages = {339--349},
month = sep
}
@book{Glesne:r1QiTFGB,
author = {Glesne, Corrine and Peshkin, Alan},
title = {Becoming Qualitative Researchers: An Introduction},
address = {White Plains, N.Y.},
publisher= {Longman},
year = {1992}
}
\end{filecontents}
\documentclass{paper}
\usepackage[style=authoryear,natbib=true,maxcitenames=1]{biblatex}
\addbibresource{\jobname1.bib}
\renewcommand*{\multicitedelim}{\addcomma\space}% corrected in light of moewe's comment
\DeclareDelimFormat{nameyeardelim}{\space}
\begin{document}
This should be Giorgi (2002): \textcite{Giorgi:WsBBLFIL}\\
This should be (Giorgi 2002): \autocite{Giorgi:WsBBLFIL}, \parencite{Giorgi:WsBBLFIL} or, with the \verb|natbib=true| option, \citep{Giorgi:WsBBLFIL}\\
This should be (Giorgi 2002, Blodgett et al. 2008): \citep{Giorgi:WsBBLFIL,Blodgett:2008jg}\\
This is a book: \citep{Glesne:r1QiTFGB}
\printbibliography
\end{document}