使用不同语言书写时显示不同的 bibtex 字段

使用不同语言书写时显示不同的 bibtex 字段

我既用英文写作,也用中文写作。当我在英文论文中引用中文著作时,我希望同时包含英文转录/翻译和中文原文。但是当我在中文论文中引用中文著作时,我不需要包含转录。有没有一种可能且方便的方法可以在这两种情况之间切换,只要我为每个参考文献只创建一个 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}

在此处输入图片描述

相关内容