Обычно имя остается неизменным на любом языке. Поэтому, когда я цитирую работу Кнута — будь то в английской статье или немецкой — я буду цитировать его как Donald E. Knuth
.
Это не всегда касается древних или средневековых имен. Они пишутся по-разному в разных языках. Два примера на английском | немецком | французском:
- Аристотель | Аристотель | Аристотель
- Фома Аквинский | Томас фон Аквин | Томас д'Акен
Это означает, что когда я пишу статью на английском языке, мне нужен файл bib
, содержащий английские имена, но когда я хочу написать статью на немецком языке, мне нужно просмотреть свой файл bib и изменить имена соответствующим образом. В зависимости от того, как часто я фактически публикуюсь на английском или немецком языке, это может занять меня и привести к ошибкам.
Итак, я подумал, может быть, я мог бы иметь разные имена, уже включенные в один bib
файл, и позволить biblatex
выбирать правильное имя в соответствии с основным языком, используемым в документе. Есть идеи?
NB: Я не хочу использовать в одном документе оба написания Aristotle и Aristoteles (как может заставить вас подумать следующий MWE). Конечно, если основной язык статьи английский, то все ссылки на Аристотеля будут использовать английское написание его имени. Однако я хочу иметь возможность писать статьи на разных языках, без (a) необходимости редактировать мои bib
-файлы каждый раз или (b) в целом поддерживать не один bib
-файл, а два разных, по одному для каждого языка, или (c) иметь две отдельные записи в одном bib
-файле
МВЭ
% !TEX TS-program = lualatexmk
\documentclass{scrartcl}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Times New Roman}
\usepackage[ngerman, british]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=verbose,abbreviate=false,backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{aristotle:ross:1924,
Author = {Aristotle}, % It is here, I think, that something could be done, e.g., ...
Title = {Metaphysics}, % ... british=Aristotle,ngerman=Aristoteles,french=Aristote
Editor = {William David Ross},
Commentator = {William David Ross},
Introduction = {William David Ross},
Hyphenation = {british},
Location = {Oxford},
Publisher = {Clarendon Press},
Volumes = {2},
Year = {1924}}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\selectlanguage{british}
Some English text.\footcite{aristotle:ross:1924}
\selectlanguage{ngerman}
Etwas Text auf Deutsch.\footcite{aristotle:ross:1924}
\end{document}
решение1
Вот способ:
\begin{filecontents}{\jobname.bib}
@book{aristotle:ross:1924,
Author = {\Aristotle}, % It is here, I think, that something could be done, e.g., ...
Title = {Metaphysics}, % ... british=Aristotle,ngerman=Aristoteles,french=Aristote
Editor = {William David Ross},
Commentator = {William David Ross},
Introduction = {William David Ross},
Hyphenation = {british},
Location = {Oxford},
Publisher = {Clarendon Press},
Volumes = {2},
Year = {1924}}
\end{filecontents}
\documentclass{scrartcl}
\usepackage{fontspec}
\setmainfont[Ligatures=TeX]{Times New Roman}
\usepackage[ngerman,french,british]{babel}
\usepackage[babel]{csquotes}
\usepackage[style=verbose,abbreviate=false,backend=biber]{biblatex}
\addbibresource{\jobname.bib}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\newauthor}{mm}
{
\clint_newauthor:nn {#1} {#2}
}
\tl_new:N \l__clint_author_tl
\cs_new_protected:Npn \clint_newauthor:nn #1 #2
{
\prop_new:c { g_clint_author_#1_prop }
\tl_set:Nn \l__clint_author_tl { #1 }
\keys_set:nn { clint-author } { #2 }
\cs_new:cpn { #1 } { \prop_get:cV { g_clint_author_#1_prop } \languagename }
}
\cs_generate_variant:Nn \prop_get:Nn { cV }
\keys_define:nn { clint-author }
{
unknown .code:n =
\prop_gput:cVn { g_clint_author_ \l__clint_author_tl _prop }
\l_keys_key_tl
{ #1 }
}
\ExplSyntaxOff
\newauthor{Aristotle}{
british=Aristotle,
ngerman=Aristoteles,
french=Aristote
}
\begin{document}
\selectlanguage{british}
Some English text.\footcite{aristotle:ross:1924}
\selectlanguage{ngerman}
Etwas Text auf Deutsch.\footcite{aristotle:ross:1924}
\selectlanguage{french}
Du texte en Français.\footcite{aristotle:ross:1924}
\end{document}
Вы определяете последовательность управления с помощью
\newauthor{Aristotle}{
british=Aristotle,
ngerman=Aristoteles,
french=Aristote
}
Команда будет вызвана \Aristotle
(но строка произвольная). Команду следует использовать в .bib
файле. Возможно, можно использовать biblatex
методы обработки имени автора без его изменения.
решение2
Это не совсем "ответ" как таковой. Однако. Это запланировано для biblatex 4.0/biber 4.0. Вы (надеюсь) сможете определить альтернативы, например:
AUTHOR = {Aristotle},
AUTHOR_translated_ngerman = {Aristoteles},
AUTHOR_translated_french = {Aristote}
а затем выберите их в стиле как:
\printname{author}
\printname[form=translated,lang=ngerman]{author}
\printname[form=translated,lang=french]{author}
вероятно, переключился, \selectlanguage
как показывает @egreg.
Этот тип (опционально, для обратной совместимости) интерфейса формы/языка планируется для любых макросов, работающих с полями, списками или именами. Работа ведется, часть biber уже сделана, часть biblatex в процессе, но это довольно серьезная работа.