我正在编写一份文档,希望以一种特定方式引用一个来源,并以另一种方式引用所有其他来源。更具体地说,我想像这样引用名为“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}
答案2
您可能不想在索引中包含对戏剧主题的所有页面引用。在这种情况下,您可以使用类似以下代码片段的 hack:
......来自戏剧”(第 ~54 页)