包括我的书目条目标题的翻译

包括我的书目条目标题的翻译

我在 中制作了我的简历,moderncv其中包括我的出版物和工作论文的列表biblatex。不过,关于我有两个细节。首先,我用多种语言出版。其次,我的简历也需要多种语言。在我的英文简历中,我希望列出我所有非英文出版物的标题,并在括号中附上英文翻译。例如:

艾尔顿·塞纳。 “关于这一切”。 (关于某事)。出处:Ergo Sum(15 1990)。

我的西班牙语简历中也有同样的内容:

艾尔顿·塞纳。 “关于这一切”。 (关于算法)。頁:Ergo Sum (15 1990)。

我解决这个问题的方法是将两种翻译都包含在titleaddonbib 条目的两个单独字段中,注释掉我不使用的语言。例如,当我用英语写简历时,我会按如下方式修改条目:

@article{senna1990etwas,
    author      = {Senna, Ayrton},
    title       = {\"Uber etwas},
    titleaddon  = {(About something)},
    %titleaddon = {(Acerca de algo)},
    %titleaddon = {(A proposito di qualcosa)},
    %titleaddon = {(Sobre algo)},
    %titleaddon = {(\'A propos de quelque chose)},
    journal     = {Ego Sum},
    year        = {1990},
    issue       = {15},
}

但是,每次我想用不同的语言创建简历时都修改条目显然不是一个好习惯。因此,我宁愿为每个翻译设置单独的字段,如下所示:

@article{senna1990etwas,
    author      = {Senna, Ayrton},
    title       = {\"Uber etwas},
    title-en    = {(About something)},
    title-es    = {(Acerca de algo)},
    title-it    = {(A proposito di qualcosa)},
    title-por   = {(Sobre algo)},
    title-fr    = {(\'A propos de quelque chose)},
    journal     = {Ego Sum},
    year        = {1990},
    issue       = {15},
}

有了这样的条目,我想使用一个可选translate字段,\printbibliography以便\printbibliography[translate=title-en]返回包含内容的条目title-entitleaddon或者更好的是,紧接着titleaddon打印的位置。

这是一个最低限度可工作的示例:

\documentclass{moderncv}
\usepackage[utf8]{inputenc}

\moderncvstyle{casual}

% PERSONAL DATA
\name{Ayrton}{Senna}
\title{Pilot}

\usepackage{biblatex}
\addbibresource{sample.bib}

\begin{document}

\makecvtitle

% PUBLICATIONS
\nocite{*}

% Titles translated into English
\printbibliography[translate=title-en]

% Titles translated into Spanish
%\printbibliography[translate=title-es]

% Titles translated into Italian
%\printbibliography[translate=title-it]

% Titles translated into Portuguese
%\printbibliography[translate=title-por]

% Titles translated into French
%\printbibliography[translate=title-fr]

\end{document}

最后,如果不translate=title-en使用 中的参数,而是在 之前使用\printbibliography命令,也是完全可以的。\translatetitle{title-en}\printbibliography

答案1

一种方法是使用 以编程方式将title-en字段 (或任何其他title-<lang>) 映射到。使用 的最小代码:titleaddon\DeclareSourcemapsample.bib

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{biblatex}
\addbibresource{sample.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
       \step[fieldsource=title-en, fieldtarget=titleaddon]
    }
  }
}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

作为扩展,我建议babel在选择标题插件时使用语言名称等。以下是修改后的 BIB 资源sample2.bib

@article{senna1990etwas,
    author           = {Senna, Ayrton},
    title            = {\"Uber etwas},
    title-english    = {(About something)},
    title-spanish    = {(Acerca de algo)},
    title-italian    = {(A proposito di qualcosa)},
    title-portuguese = {(Sobre algo)},
    title-french     = {(\'A propos de quelque chose)},
    journal          = {Ego Sum},
    year             = {1990},
    issue            = {15},
}

以下是只需要在调用中更改的代码babel

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{biblatex}
\addbibresource{sample2.bib}

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map{
       \step[fieldsource=title-\languagename, fieldtarget=titleaddon]
    }
  }
}

\begin{document}
\nocite{*}
\printbibliography
\end{document}

事实上,它使用了法语附录:

在此处输入图片描述

答案2

biblatex以下是使用和的实验性多脚本分支的解决方案biber,它们专为此类任务而设计。请注意以下优点:

  • 将语言babel切换为正确的翻译,确保连字符等正确无误。
  • 数据中没有硬编码格式(括号)
  • 需要切换翻译时无需更改数据
\documentclass[a4paper]{article}
\usepackage{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,spanish,italian,portuguese,french,main=ngerman]{babel}
\usepackage{csquotes}
\begin{filecontents}[force]{\jobname.bib}
@article{senna1990etwas,
    langid                = {ngerman},
    author                = {Senna, Ayrton},
    title                 = {Über etwas},
    title_translation_en  = {About something},
    title_translation_es  = {Acerca de algo},
    title_translation_it  = {A proposito di qualcosa},
    title_translation_pt  = {Sobre algo},
    title_translation_fr  = {Á propos de quelque chose},
    journal               = {Ego Sum},
    year                  = {1990},
    issue                 = {15},
}
\end{filecontents}
\usepackage[language=auto,autolang=other,autofieldlang=other]{biblatex}
\addbibresource{\jobname.bib}

\def\trtag{en}% <- change translation here

\newbibmacro*{title}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }
    {}
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}}%
     \newunit
     \printfield[ttitle][translation][\trtag]{title}%
     \newunit}%
  \printfield{titleaddon}}

\DeclareFieldFormat{ttitle}{(#1)\isdot}

\begin{document}

\cite{senna1990etwas}
\printbibliography
\end{document}

相关内容