我在 中制作了我的简历,moderncv
其中包括我的出版物和工作论文的列表biblatex
。不过,关于我有两个细节。首先,我用多种语言出版。其次,我的简历也需要多种语言。在我的英文简历中,我希望列出我所有非英文出版物的标题,并在括号中附上英文翻译。例如:
艾尔顿·塞纳。 “关于这一切”。 (关于某事)。出处:Ergo Sum(15 1990)。
我的西班牙语简历中也有同样的内容:
艾尔顿·塞纳。 “关于这一切”。 (关于算法)。頁:Ergo Sum (15 1990)。
我解决这个问题的方法是将两种翻译都包含在titleaddon
bib 条目的两个单独字段中,注释掉我不使用的语言。例如,当我用英语写简历时,我会按如下方式修改条目:
@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-en
,titleaddon
或者更好的是,紧接着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
\DeclareSourcemap
sample.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}