
我想知道是否有一種有效的方法來引用作者和年份,類似於使用 時使用biblatex
's \textcite
ie Author (year)得到的結果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 同上追蹤器「跟蹤」——我不確定這是好事還是壞事。您需要決定該序列的輸出應該做什麼:
\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}