使用 BibLatex 编写复杂的引文 - 需要“&”而不是“and”

使用 BibLatex 编写复杂的引文 - 需要“&”而不是“and”

我尝试使用以下BibLatex风格apa引用一些参考文献:

... 稍微改编了 Biggs (1987, 1999; 类似模型请参阅 Marsick, Watkins, & O'Conner, 2011) 的模型......

我尝试获得以下结果(MWE)

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[style=apa, backend=biber, sortcites=true]{biblatex}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{biggs1987,
    location = {Melbourne},
    title = {Student approaches to learning and studying},
    publisher = {Australian Council for Educational Research},
    author = {Biggs, J.},
    date = {1987}
}

@book{biggs1999,
    location = {Buckingham},
    title = {Teaching for quality learning at university. What the student does},
    publisher = {Society for Research into Higher Education},
    author = {Biggs, J.},
    date = {1999}
}

@incollection{marsick2011,
    location = {London},
    title = {Researching workplace learning in the United States},
    pages = {198--209},
    booktitle = {The international handbook of workplace learning},
    publisher = {Sage},
    author = {Marsick, Victoria and Watkins, Karen and O'Conner, Bridget N.},
    editor = {Malloch, M. and Cairns, L. and Evans, K. and O'Conner, Bridget N.},
    date = {2011}
}

\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\ldots slightly adapted Biggs' (\citeyear{biggs1987, biggs1999}; see for a similar model \citeauthor{marsick2011}, \citeyear{marsick2011}) model of  \ldots

\end{document}

但是输出只有:

... 稍微改编了 Biggs (1987, 1999; 类似模型请参阅 Marsick、Watkins 和 O'Conner, 2011) 的模型......

正如您所见,BibLatex 打印出““ 而不是 “&“。似乎\citeauthor只被认为是用作文内引用(那里有““ 是正确的)。

我想我可以通过使用以下选项让我的生活更轻松一点natbib(参见这里)然而,这改变了一些我不希望改变的阵型。

因此我的问题是:如何将“&”符号放入我的引文中,而无需全局更改用于文内引用?

答案1

我们需要\finalnamedelim在这里产生暂时的影响。

显而易见的解决方案是

\AtNextCite{%
  \renewcommand{\finalnamedelim}{%
    \ifnum\value{liststop}>2
       \finalandcomma
    \fi
    \addspace\&\space}}

在违规引用之前。

由于这段内容很长并且在文档正文中看起来很奇怪,您可能需要为此定义一个新命令。

\newcommand{\switchtoparencite}{%
  \AtNextCite{%
    \renewcommand{\finalnamedelim}{%
      \ifnum\value{liststop}>2
        \finalandcomma
      \fi
      \addspace\&\space}}}

然后简单使用\switchtoparencite\cite{marsick2011}就可以了。

当然,您也可以定义一个新的引用命令\nparencite,其行为就像括号引用一样,但没有括号。

\DeclareCiteCommand{\nparencite}
  {\renewcommand{\finalnamedelim}{\ifnum\value{liststop}>2 \finalandcomma\fi\addspace\&\space}%
   \usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {}
  {\usebibmacro{postnote}%
   \usebibmacro{cite:post}}

然后你会说\nparencite{marsick2011}

我猜,您更喜欢哪一种解决方案取决于具体情况;我个人认为第二种解决方案非常巧妙。

MWE(显示两种解决方案)

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[style=apa, backend=biber, sortcites=true]{biblatex}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{biggs1987,
    location = {Melbourne},
    title = {Student approaches to learning and studying},
    publisher = {Australian Council for Educational Research},
    author = {Biggs, J.},
    date = {1987}
}

@book{biggs1999,
    location = {Buckingham},
    title = {Teaching for quality learning at university. What the student does},
    publisher = {Society for Research into Higher Education},
    author = {Biggs, J.},
    date = {1999}
}

@incollection{marsick2011,
    location = {London},
    title = {Researching workplace learning in the United States},
    pages = {198--209},
    booktitle = {The international handbook of workplace learning},
    publisher = {Sage},
    author = {Marsick, Victoria and Watkins, Karen and O'Conner, Bridget N.},
    editor = {Malloch, M. and Cairns, L. and Evans, K. and O'Conner, Bridget N.},
    date = {2011}
}

\end{filecontents*}
\addbibresource{\jobname.bib}

\newcommand{\switchtoparencite}{%
  \AtNextCite{%
    \renewcommand{\finalnamedelim}{%
      \ifnum\value{liststop}>2
        \finalandcomma
      \fi
      \addspace\&\space}}}

\DeclareCiteCommand{\nparencite}
  {\renewcommand{\finalnamedelim}{\ifnum\value{liststop}>2 \finalandcomma\fi\addspace\&\space}%
   \usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {}
  {\usebibmacro{postnote}%
   \usebibmacro{cite:post}}

\begin{document}
\ldots slightly adapted Biggs' (\citeyear{biggs1987, biggs1999}; see for a similar model \switchtoparencite\cite{marsick2011}) model of \ldots

\citereset

\ldots slightly adapted Biggs' (\citeyear{biggs1987, biggs1999}; see for a similar model \nparencite{marsick2011}) model of \ldots

\end{document}

在此处输入图片描述

相关内容