有多个键引用相同的参考书目条目

有多个键引用相同的参考书目条目

是否有多个键引用同一篇参考书目条目(使用biblatex+Biber)?

例如,我希望\cite{Tolkien:1954:LordOfTheRings}\cite{lotr}在文档中使用时具有完全相同的效果(并且当两者在同一个文档中使用时仅生成单个参考书目条目)。

答案1

使用较新版本的 biblatex (≥2.0) 和 biber (≥0.9.8),您可以按正常方式定义您的条目,并使用“IDS”字段获取额外的引用键:

@BOOK{key,
  IDS = {key2, key3, ..., keyn},
  .
  .
}

然后,您可以使用任意一个键进行引用,也可以使用任意一个键混合在同一节中引用,也可以使用\nocite{*}- 这样不会在参考书目中重复条目。事实上,其他键只是拥有该条目的主键的别名,.bbl并且在发生任何标签生成等之前会重定向到主键。

它还会检测您是否将某个键用作主键,并在其他地方使用别名,在这种情况下,它会禁用别名。它现在还会注意到重复的别名和键。

答案2

以下内容摘自comp.text.tex 上的“BiBTeX 密钥别名”,提供\bibalias{<alias>}{<source>}并应使用\acite{<citation>}而不是\cite{<citation>}

在此处输入图片描述

\documentclass{article}
\usepackage{biblatex}% http://ctan.org/pkg/biblatex
\bibliography{references}

\makeatletter
% \bibalias{<alias>}{<source>} makes \cite{<alias>} equivalent to \cite{<source>}
\newcommand\bibalias[2]{%
  \@namedef{bibali@#1}{#2}%
}

\newtoks\biba@toks
\newcommand\acite[2][]{%
  \biba@toks{\cite#1}%
  \def\biba@comma{}%
  \def\biba@all{}%
  \@for\biba@one:=#2\do{%
    \@ifundefined{bibali@\biba@one}{%
      \edef\biba@all{\biba@all\biba@comma\biba@one}%
    }{%
      \PackageInfo{bibalias}{%
        Replacing citation `\biba@one' with `\@nameuse{bibali@\biba@one}'
      }%
      \edef\biba@all{\biba@all\biba@comma\@nameuse{bibali@\biba@one}}%
    }%
    \def\biba@comma{,}%
  }%
  \edef\biba@tmp{\the\biba@toks{\biba@all}}%
  \biba@tmp
}
\makeatother

\bibalias{Tolkien:1954:LordOfTheRings}{lotr}

\begin{document}
The reference~\acite{Tolkien:1954:LordOfTheRings} is
exactly the same as~\acite{lotr}.

\bibstyle{plain}
\printbibliography
\end{document}

类似于references.bib

@book{lotr,
  author  = "J.R.R. Tolkien",
  title   = "{The Lord of the Rings}",
  address = "New York",
  year    = 1954,
  publisher = "Ballantine Books"
}

答案3

bibtex答案:

将其放在前言中,然后使用\bibalias{new key}{old, long, and cumbersome key}。这是原始的 LaTeX\cite宏,仅由两个未缩进的“魔术”行进行了修改。

% Bib aliases
\makeatletter
\def\@citex[#1]#2{\leavevmode
  \let\@citea\@empty
  \@cite{\@for\@citeb:=#2\do
    {\@citea\def\@citea{,\penalty\@m\ }%
\edef\magic##1{\let##1\expandafter\noexpand\csname bibalias@\@citeb\endcsname}%
\magic\tmp \ifx\tmp\relax\else \let\@citeb\tmp\fi
     \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
     \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
     \@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}%
       \G@refundefinedtrue
       \@latex@warning
         {Citation `\@citeb' on page \thepage \space undefined}}%
       {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
\def\bibalias#1#2{\expandafter\def\csname bibalias@#1\endcsname{#2}}
\makeatother

相关内容