我既用英文写作,也用中文写作。当我在英文论文中引用中文著作时,我希望同时包含英文转录/翻译和中文原文。但是当我在中文论文中引用中文著作时,我不需要包含转录。有没有一种可能且方便的方法可以在这两种情况之间切换,只要我为每个参考文献只创建一个 bibtex 记录,而不是两个(中文版 .bib 和英文版)?
我使用 Biblatex + TeXlive2018 + Win10
例子
(Biblatex-Chicago
使用风格)
也就是说:
英文/中文写作中的英文参考 --> 仍为英文
英文写作中的中文引用-->显示英文和中文字段
中文书写的中文参考 --> 仅显示中文字段
答案1
这是一个有限替代方案的概念证明,我相信,很快就会有人发现一个无法修复的缺陷。但我将其作为一个想法提出来。就目前而言,它仅适用于文字字段(我在title
这里用作示例),我不确定是否可以将其扩展到名称和列表。它很可能会产生一些与biblatex
的格式指令有关的问题。这也是一个脆弱的设置,因为我们需要将一些宏直接放在感兴趣的 bibentry 字段中。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{book1,
author = {Author},
title = {\caseenglish{Title}\casebrazilian{Título}},
date = {2000},
location = {Location},
publisher = {Publisher},
addendum = {An entry in Brazilian Portuguese, for which we want both titles
when the language is English and Portuguese title when the langage is
brazilian},
}
@book{book2,
author = {Author},
title = {English title},
date = {2004},
location = {Location},
publisher = {Publisher},
addendum = {An entry in English, which should always be in English},
}
\end{filecontents}
\usepackage{iflang}
\usepackage[brazilian,english]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear]{biblatex}
\addbibresource{\jobname.bib}
\newcommand*{\caseenglish}[1]{#1}
\newcommand*{\casebrazilian}[1]{#1}
\AtBeginBibliography{%
\IfLanguageName{english}{%
\renewcommand*{\casebrazilian}[1]{ #1}%
}{}%
\IfLanguageName{brazilian}{%
\renewcommand*{\caseenglish}[1]{}%
}{}%
}
\begin{document}
\nocite{*}
\printbibliography
\selectlanguage{brazilian}
\printbibliography
\end{document}