biblatex-mla で著者と年の両方を引用するにはどうすればよいですか?

biblatex-mla で著者と年の両方を引用するにはどうすればよいですか?

biblatexを使用する場合、の\textciteAuthor (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})}

これには少なくとも 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}

関連情報