我目前正在尝试链接两个不同的条目,一个文本及其翻译,以便将它们一起输出。翻译的条目在“usera”字段中给出。如果需要更多代码,请告诉我,目前我只会给出一个抽象的解释。
所以,我们有@inbook{original, … usera = {translation}} and @inbook{translation, …}
。
结果如下:
作者:标题,地点年份[译为:标题,地点年份]。
在参考书目中,我使用修改后的版本输出翻译\fullcite
。这可能是一个残酷的解决方案,但它有效。
除了两个问题:
目前我需要运行两次 LaTeX 和 biber。由于
\fullcite
只有在编写参考书目时才会调用,因此系统translation
在第一次运行时不知道该条目。我尝试了各种方法在第一次运行时将内容交给usera
,biblatex
但失败了。LaTeX 和 biber 运行两次后,我会得到两个翻译条目——一个是原文参考书目条目的一部分,另一个是原文本身的单独条目。我知道我可以使用文档中的类别来过滤它,但我想提出一个解决方案,默认情况下不打印翻译
答案1
我猜\fullcite
翻译器是在 处发布的\finentry
?在这种方法下,我怀疑您希望获得单次运行解决方案的唯一方法是\nocite{*}
在文档主体中调用并过滤\printbibliography
(使用filter
或category
字段: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}