我想知道是否有一种有效的方法来引用作者和年份,类似于使用 时使用biblatex
即\textcite
作者(年份)所获得的方法biblatex-mla
。现在我正在使用一种非常低效的方法:
\begin{filecontents*}{test.bib}
title = {{Seinte Katerine}},
editor = {S.R.T.O. d'Ardenne and E.J. Dobson},
year = {1981},
publisher = {Oxford University Press},
address = {Oxford}
\end{filecontents*}
\documentclass{article}
\usepackage[style=mla,backend=bibtex8]{biblatex}
\bibliography{test}
\begin{document}
According to \citeauthor{katherine} (\citeyear{katherine})...
\end{document}
如果有人知道如何更有效地做到这一点,我们将非常感激您的建议。
答案1
快速浏览一下biblatex-mla
文献,就会发现这种作者年份引用并不是标准引文就 MLA 指南而言,我没有提供任何此类命令,所以我推测这就是为什么没有提供这样的命令。
您可以使用以下命令创建自己的命令:
\newcommand\citeauthyear[1]{\citeauthor{#1} (\citeyear{#1})}
这至少有一个缺点:默认情况下,它无法使用hyperref
——这可能不是什么大问题。它也不会被 MLA ibid-tracker“跟踪”——我不确定这是好事还是坏事。您需要决定此序列的输出应该做什么:
\citeauthyear{<key1>} wrote about this \autocite{<key1>}
我认为这取决于你如何使用这个命令。我对 MLA 规则的模糊记忆(从我多年前的本科时代开始)是 MLA 希望你“括起”你的引文,就像:name ... <ideas from "name"> ... (page)
。如果是这样,那么跟踪可能是一件好事。
因此,另一个解决方案是通过 创建自己的更正统的命令 \DeclareCiteCommand
。这是一个非常基本的命令:
\DeclareCiteCommand{\aycite}
{\usebibmacro{prenote}}%
{\usebibmacro{citeindex}%
\usebibmacro{cite:mla:authyear}}%
{}%
{\usebibmacro{postnote}\citereset}
\newbibmacro*{cite:mla:authyear}%
{\printtext[bibhyperref]{%
\printnames{labelname}\space
\printtext[parens]{\printdate}}}
默认情况下,此处将起作用,并且不会跟踪该命令。您可以通过删除定义中的hyperref
来更改跟踪。\citereset
\aycite
这是一个完整的例子:
\begin{filecontents*}{\jobname.bib}
@book{katherine,
title = {{Seinte Katerine}},
editor = {S.R.T.O. d'Ardenne and E.J. Dobson},
year = {1981},
publisher = {Oxford University Press},
address = {Oxford}
}
\end{filecontents*}
\documentclass{article}
\usepackage[style=mla,backend=bibtex8]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{xcolor}
\usepackage[colorlinks, allcolors=red]{hyperref}
\DeclareCiteCommand{\aycite}
{\usebibmacro{prenote}}%
{\usebibmacro{citeindex}%
\usebibmacro{cite:mla:authyear}}%
{}%
{\usebibmacro{postnote}\citereset}
\newbibmacro*{cite:mla:authyear}%
{\printtext[bibhyperref]{%
\printnames{labelname}\space
\printtext[parens]{\printdate}}}
% This version does not get "tracked" by `biblatex-mla`
\newcommand\citeauthyear[1]{\citeauthor{#1} (\citeyear{#1})}
\begin{document}
\parindent0pt
% Baseline citation
\autocite[100]{katherine} \citereset
% These two paragraphs are equivalent
According to \citeauthor{katherine} (\citeyear{katherine}); \ldots
\autocite[100]{katherine} \citereset
According to \citeauthyear{katherine}; \ldots
\autocite[100]{katherine} \citereset
% These two commands paragraphs produce identical results; if you'd
% rather get the \aycite command tracked, take out the \citereset
% commands in the \aycite definition
According to \aycite{katherine}; \ldots
\autocite[100]{katherine}
\citereset
According to \aycite{katherine}; \ldots
\citereset% <-- this is the difference between this paragraph and the one above
\autocite[100]{katherine}
\printbibliography
\end{document}