일반적으로 이름은 어떤 언어에서든 동일하게 유지됩니다. 그래서 내가 Knuth의 작품을 인용할 때마다 - 그것이 영어 기사이든 독일어 기사이든 - 나는 그를 인용할 것입니다 Donald E. Knuth
.
고대 또는 중세 이름의 경우 항상 그런 것은 아닙니다. 그들은 다른 언어로 다르게 철자를 사용합니다. 영어로 된 두 가지 예 | 독일어 | 프랑스 국민:
- 아리스토텔레스 | 아리스토텔레스 | 아리스토테스
- 토마스 아퀴나스 | 토마스 폰 아퀸 | 토마스 다퀸
즉, 영어 기사를 작성할 때는 bib
영어 이름이 포함된 -file이 필요하지만, 독일어 기사를 작성하려면 bib 파일을 검토하여 그에 따라 이름을 변경해야 합니다. 실제로 영어나 독일어로 출판하는 빈도에 따라 바쁘게 지내고 오류가 발생하기 쉽습니다.
따라서 하나의 단일 bib
파일 에 이미 다른 이름이 포함되어 있고 biblatex
문서에 사용된 기본 언어에 따라 올바른 이름을 선택할 수도 있습니다. 어떤 아이디어가 있나요?
NB: 나는 하나의 문서에서 Aristotle과 Aristoteles라는 철자를 모두 사용하고 싶지 않습니다(다음 MWE를 보면 알 수 있듯이). 물론 기사의 기본 언어가 영어라면 아리스토텔레스에 대한 모든 언급은 그의 이름의 영어 철자를 사용합니다. 그러나 나는 (a) bib
매번 -files를 편집할 필요 없이, 또는 (b) 일반적으로 하나의 단일 bib
-file이 아닌 두 개의 다른 파일을 각 언어별로 하나씩 유지하거나 (c) 없이 다른 언어로 기사를 작성할 수 있기를 원합니다 . ) 하나의 bib
파일 에 두 개의 서로 다른 항목이 있음
MWE
% !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 부분은 진행 중이지만 꽤 많은 작업이 진행 중입니다.