使用 Biblatex,我如何以不同方式引用不同的来源?

使用 Biblatex,我如何以不同方式引用不同的来源?

我正在编写一份文档,希望以一种特定方式引用一个来源,并以另一种方式引用所有其他来源。更具体地说,我想像这样引用名为“drama”的来源:

“戏剧中的一些引文” (第 54 页)

所有其他来源均应如此引用:

“现在是别的东西了”(莎士比亚,《哈姆雷特》,第 123 页)

我怎样才能实现这个目标?

目前,我所有的引用都是通过\autocite命令完成的。

答案1

您可以尝试抑制某部作品的所有引用输出。但您必须小心,只引用该作品的页码。

在下面的例子中,我们抑制了sigfridsson。这里的实现是针对authoryear样式的。其他样式可以类似地处理(至少在原则上),但确切的实现看起来会有所不同,并且可能要复杂得多。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}

\newcommand*{\ifhidecite}{\iffieldequalstr{entrykey}{sigfridsson}}

\renewbibmacro*{cite}{%
  \ifhidecite
    {}
    {\iffieldundef{shorthand}
       {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
          {\usebibmacro{cite:label}%
           \setunit{\printdelim{nonameyeardelim}}}
          {\printnames{labelname}%
           \setunit{\printdelim{nameyeardelim}}}%
        \usebibmacro{cite:labeldate+extradate}}
       {\usebibmacro{cite:shorthand}}}}

\renewbibmacro*{postnote}{%
  \iffieldundef{postnote}
    {\ifhidecite
       {\PackageWarning{biblatex}{%
          Hidden citation without postnote.\MessageBreak
          The citation outout may look weird}}
       {}}
    {\setunit{\printdelim{postnotedelim}}%
     \printfield{postnote}}}

\addbibresource{biblatex-examples.bib}


\begin{document}
\autocite[45]{sigfridsson}

\autocite[380]{worman}

\printbibliography
\end{document}

(第 45 页)

答案2

您可能不想在索引中包含对戏剧主题的所有页面引用。在这种情况下,您可以使用类似以下代码片段的 hack:

......来自戏剧”(第 ~54 页)

相关内容