@thesis
我的文件中的条目中包含了.bib
以论文当地语言书写的机构名称和类型。我需要将这些内容翻译成英语。例如,我需要翻译机构名称,例如
奥斯陆大学
卑尔根大学
阿格德的高中
到
奥斯陆大学
卑尔根大学
阿格德尔大学学院
并翻译类型名称,如
霍维多普盖夫
重型设备搬运
马斯特奥普盖夫
到
主干论文
主干论文
硕士论文
根据我做过的类似转换(将参考书目 (biblatex) 中的美国邮政编码 (CA) 更改为 AP 样式手册缩写 (加利福尼亚州)),我模糊地知道该怎么做,但我不知道如何准确地实现它:
\DeclareSourcemap{
\maps[datatype = bibtex]{
\map{
\step[fieldsource = institution,
match = , % <- strings like "Universitetet i Oslo", "Universitetet i Bergen"
replace = ] % <- strings like "University of Oslo", "University of Bergen"
}
\map{
\step[fieldsource = type,
match = , % <- strings like "Hovedoppgave", "Masteroppgave"
replace = ] % <- strings like "Main subject thesis", "MA thesis"
}
}
}
编辑
当我需要替换的字符串包含非 ASCII 字符时,这样做似乎有问题,例如æøå
:
\documentclass{article}
\usepackage[style = authoryear-comp]{biblatex}
\usepackage{fontspec,filecontents}
\begin{filecontents}{\jobname.bib}
@THESIS{aasen2004,
AUTHOR = "Anita Aasen",
INSTITUTION = "Universitetet i Oslo",
TITLE = "Språklig nivellering i Oslo-regionen",
TYPE = "Hovedfagsoppgave i nordisk språk og litteratur",
YEAR = "2004",
SUBTITLE = "Ungdommers valg av språklige varianter i Follo"}
\end{filecontents}
\DeclareSourcemap{
\maps[datatype = bibtex]{
\map{
\step[fieldsource = type,
match = {Hovedfagsoppgave i nordisk språk og litteratur},
replace = {Main subject thesis}]
}
}
}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
答案1
这是一个使用\regexp
s 的解决方案
\DeclareSourcemap{
\maps[datatype = bibtex]{
\map{
\step[fieldsource = institution,
match = \regexp{Universitetet(\s)i},
replace = \regexp{University$1of}]
\step[fieldsource = institution,
match = \regexp{Høgskolen(\s)i(\s)(.*)},
replace = \regexp{$3$1University$2College}
]
}
\map{
\step[fieldsource = type,
match = {Hovedoppgave},
replace = {Main subject thesis} ]
\step[fieldsource = type,
match = {Hovedfagsavhandling}
replace = {Main subject thesis}]
\step[fieldsource = type,
match = {Masteroppgave},
replace = {MA Thesis}]
}
}
}
答案2
我不会为此使用正则表达式。为本地字符串定义命令并将它们放在不同的 tex 文件中不是更容易吗?例如:
swedish.tex:
\newcommand*{\strhogskolen}{Høgskolen i Agder}
english.tex:
\newcommand*{\strhogskolen}{Agder University College}
在您的主 texfile 中,您只需通过包含本地文件\input{swedish}
并在 biblatex 文件中使用它,如下所示:
@book{somebook,
author={an author},
title={title},
location={\strhogskolen}
}