biblatex:通过一次 biber 运行链接条目

biblatex:通过一次 biber 运行链接条目

我目前正在尝试链接两个不同的条目,一个文本及其翻译,以便将它们一起输出。翻译的条目在“usera”字段中给出。如果需要更多代码,请告诉我,目前我只会给出一个抽象的解释。

所以,我们有@inbook{original, … usera = {translation}} and @inbook{translation, …}

结果如下:

作者:标题,地点年份[译为:标题,地点年份]。

在参考书目中,我使用修改后的版本输出翻译\fullcite。这可能是一个残酷的解决方案,但它有效。

除了两个问题:

  • 目前我需要运行两次 LaTeX 和 biber。由于\fullcite只有在编写参考书目时才会调用,因此系统translation在第一次运行时不知道该条目。我尝试了各种方法在第一次运行时将内容交给userabiblatex但失败了。

  • LaTeX 和 biber 运行两次后,我会得到两个翻译条目——一个是原文参考书目条目的一部分,另一个是原文本身的单独条目。我知道我可以使用文档中的类别来过滤它,但我想提出一个解决方案,默认情况下不打印翻译

答案1

我猜\fullcite翻译器是在 处发布的\finentry?在这种方法下,我怀疑您希望获得单次运行解决方案的唯一方法是\nocite{*}在文档主体中调用并过滤\printbibliography(使用filtercategory字段:options = {skipbib=true})。

可以使用 获得单次运行、无过滤器的替代方案entryset。但是,如果翻译的条目是您的实际来源,我宁愿直接引用它并利用该translator字段。

\documentclass{article}
\usepackage{csquotes}
\usepackage[american]{babel}
\usepackage[backend=biber,style=authortitle]{biblatex}

\NewBibliographyString{translatedas}
\DefineBibliographyStrings{english}{%
  translatedas = {translated as}}

\DeclareBibliographyDriver{set}{%
  \entryset
    {\ifnumequal{\thefield{entrysetcount}}{1}
       {}
       {\setunit{}%
        \bibopenbracket%
        \bibsentence\bibstring{translatedas}\addcolon\space}}
    {\ifnumequal{\thefield{entrysetcount}}{1}
       {\adddotspace}
       {\setunit{}%
        \adddot\bibclosebracket}}%
  \let\finentrypunct=\empty%
  \finentry}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Set{orig:trans,
  entryset = {orig,trans}}
@Book{orig,
  author = {Original Author},
  title = {Original Title},
  publisher = {Original Publisher},
  location = {Original Location},
  year = {1986}}
@Book{trans,
  author = {Translator},
  title = {Translated Title},
  publisher = {Translated Publisher},
  location = {Translated Location},
  year = {1986}}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\cite{orig:trans}
\printbibliography
\end{document}

在此处输入图片描述

相关内容