Biblatex, biber 및 비라틴어(키릴 문자) UTF-8 이름 파트 II

Biblatex, biber 및 비라틴어(키릴 문자) UTF-8 이름 파트 II

나는 라틴어/그리스어/키릴 문자가 혼합된 문서를 biblatex사용 하는 예제를 찾고 있었습니다 . biber나는 찾았다biblatex biber 비라틴어(키릴 문자) UTF-8 이름그리고biblatex: firstinits 옵션을 사용하여 키릴 문자 저자 이름을 축약합니다., 그러나 둘 중 어느 것도 결정적이지 않습니다(그리고 닫혀 있습니다). 그래서 저는 pdflatex test.tex; biber test; pdflatex test.tex; pdflatex test.tex(TexLive 2014를 사용하여) 컴파일하고 다음을 생성하는 MWE(아래)를 생각해냈습니다 .

/tmp/test.png

대부분 예상대로 보입니다. 제 질문은 다음과 같습니다.

  • 이것이 biblatex/biber에서 키릴 이름/제목을 사용하는 올바른 방법입니까? (즉, \foreignlanguage?)
  • 위 게시물처럼 키릴 이름은 축약되지 않은 반면 라틴어 이름은 축약되지 않습니다. 어떻게 하면 둘 다 축약할 수 있나요?

편집: 축약하지 않은 이유는 파일에서 볼 수 있습니다 .bbl.

\name{author}{1}{}{%
  {{hash=3bd6100cde97ee45844a484f7fc7612b}{Goethe}{G\bibinitperiod}{Johann\bibnamedelima Wolfgang}{J\bibinitperiod\bibinitdelim W\bibinitperiod}{von}{v\bibinitperiod}{}{}}%
...
\name{author}{1}{}{%
  {{hash=c78e01570c60a06ba7419ac38e11ab99}{\foreignlanguage{russian}{Фёдор\bibnamedelimb Михайлович\bibnamedelimb Достоевский}}{\\bibinitperiod}{}{}{}{}{}{}}%

겉보기에 biblatex/는 키릴 문자 이름에 대한 를 삽입하기 biber위해 를 꿰뚫어 볼 만큼 똑똑 하지만, 어쨌든 모든 필드(특히 약어가 포함된 필드)를 채우지는 않습니다. 수동으로 해킹하려고 하고 라틴어 이름인 and 를 유추하여 삽입하면 다음과 같습니다.\foreignlanguage\bibnamedelimblabelnameauthor

    {{hash=c78e01570c60a06ba7419ac38e11ab99}{\foreignlanguage{russian}{Достоевский}}{\foreignlanguage{russian}{Д\bibinitperiod}}{\foreignlanguage{russian}{Фёдор\bibnamedelima Михайлович}}{\foreignlanguage{russian}{Ф\bibinitperiod\bibinitdelim М\bibinitperiod}}{}{}{}{}}%

... 그런 다음 축약 작업을 수행합니다. 그러나 분명히 각 키릴 문자 항목에 대해 수동으로 이 작업을 수행하고 싶지 않으므로 질문이 제기될 수 있습니다. biber파일에 일부 명령을 입력하여 어떻게든 자동으로 생성하도록 동축할 수 있습니까 .bib?

EDIT2: 또한 .bib 파일에서 각 저자 이름 단어를 외국어로 래핑해 보았습니다.

author={\foreignlanguage{russian}{Фёдор} \foreignlanguage{russian}{Михайлович} \foreignlanguage{russian}{Достоевский}},

... 이것은 전혀 작동하지 않습니다(약어가 없으며 실제로 최종 출력에서 ​​일부 단어가 생략되었습니다).

EDIT3: @egreg가 주석(단일 개체)에서 지적했듯이 \foreignlanguage작성자 이름을 제거하고 UTF-8로 직접 작성해 보았습니다.

author={Фёдор Михайлович Достоевский},

... 이제 파일에서 이름 구성 요소가 올바르게 분할됩니다 .bbl.

  \name{author}{1}{}{%
    {{hash=e3c9a72252d468ac324a38026797e091}{Достоевский}{Д\bibinitperiod}{Фёдор\bibnamedelima Михайлович}{Ф\bibinitperiod\bibinitdelim М\bibinitperiod}{}{}{}{}}%

... 하지만 pdflatex두 번째로 실행되면 다음과 같이 충돌이 발생합니다.

! LaTeX Error: Command \CYRF unavailable in encoding T1.

... 분명히 글꼴 인코딩 스위치가 여전히 필요합니다.


코드는 다음과 같습니다.

\documentclass{article}
\usepackage{filecontents} % tlmgr install filecontents
\begin{filecontents*}{\jobname.bib}
@BOOK{von1841faust,
  title={Faust: Eine Tragödie. Erster Theil},
  author={Johann Wolfgang von Goethe},
  url={http://books.google.dk/books?id=zF8-AAAAYAAJ},
  year={1841},
  publisher={Hermann Passarge}
}

% see: https://tex.stackexchange.com/questions/215447/using-cyrillic-with-tex-gyre-pagella-and-pdflatex
% if fonts are properly set-up, there's no need for separate \fontencoding{T2A}\selectfont, as in:
%   title={\fontencoding{T2A}\selectfont \foreignlanguage{russian}{Двойник}},
% else - with or without \fontencoding{T2A}\selectfont:
% ! LaTeX Error: Command \CYRD unavailable in encoding T1.
% with \foreignlanguage and \fontencoding{T2A}:
% LaTeX Font Warning: Font shape `T2A/qpl/m/n' undefined
% (Font)              using `T2A/cmr/m/n' instead on input line 48.
% kpathsea: Running mktexmf larm1000
% ! I can't find file `larm1000'.
% <*> ...ljfour; mag:=1; nonstopmode; input larm1000
% mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input larm1000' failed to make larm1000.tfm.
% ! Font T2A/cmr/m/n/10=larm1000 at 10.0pt not loadable: Metric (TFM) file not found.

@book{dostoevskij2014dvoinik,
  title={\foreignlanguage{russian}{Двойник}},
  author={\foreignlanguage{russian}{Фёдор Михайлович Достоевский}},
  isbn={9785000640227},
  url={http://books.google.dk/books?id=OR7BAQAAQBAJ},
  year={2014},
  publisher={Aegitas}
}

\end{filecontents*}

\usepackage[utf8]{inputenc}
\usepackage[T2A, T1]{fontenc} % before babel!
\usepackage[russian,greek,english]{babel} % tlmgr install babel-russian

\usepackage[sc]{mathpazo}
\usepackage{paratype} % tlmgr install paratype
\usepackage{tgpagella}

% T2A for cyrillic - paratype
\usepackage{substitutefont}
\substitutefont{T2A}{\rmdefault}{PTSerif-TLF}

\usepackage{siunitx}

\usepackage[%
  style=ieee,
  isbn=true,
  url=true,
  defernumbers=true,
  sorting=nyt, % "Sort by name, year, title."
  %sorting=none, % "Do not sort at all. All entries are processed in citation order." (order of appearance)
  bibencoding=utf8,
  backend=biber
]{biblatex}
\bibliography{\jobname}

\begin{document}

From \si{\mega\ohm} to \si{\micro\watt} -- consider "Faust" \cite{von1841faust}, which is in (extended) Latin script; or "\foreignlanguage{russian}{Двойник}" \cite{dostoevskij2014dvoinik}, which is in Cyrillic script.

\printbibliography

\end{document}

답변1

\foreignlanguage파일에는 필요하지 않습니다 .bib. 대신 biblatex 옵션을 사용하십시오 autolang=other. 환경 에서 bib 항목을 자동으로 래핑합니다 otherlanguage. 이것이 작동하려면 파일 langid에 필드 도 필요합니다 .bib.

이것은 수정된 MWE입니다(글꼴 설정을 제거했는데 어떤 이유로 내 컴퓨터에서는 작동하지 않습니다 --- 하지만 다른 문제인 것 같습니다).

\documentclass{article}
\usepackage{filecontents} % tlmgr install filecontents
\begin{filecontents*}{\jobname.bib}
@BOOK{von1841faust,
  title={Faust: Eine Tragödie. Erster Theil},
  author={Johann Wolfgang von Goethe},
  url={http://books.google.dk/books?id=zF8-AAAAYAAJ},
  year={1841},
  publisher={Hermann Passarge},
  langid={german},
}

@book{dostoevskij2014dvoinik,
  title={Двойник},
  author={Фёдор Михайлович Достоевский},
  isbn={9785000640227},
  url={http://books.google.dk/books?id=OR7BAQAAQBAJ},
  year={2014},
  publisher={Aegitas},
  langid={russian},
}

\end{filecontents*}

\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc} % before babel!
\usepackage[russian,greek,german,english]{babel} % tlmgr install babel-russian

\usepackage{siunitx}

\usepackage[%
  style=ieee,
  isbn=true,
  url=true,
  defernumbers=true,
  sorting=nyt, % "Sort by name, year, title."
  %sorting=none, % "Do not sort at all. All entries are processed in citation order." (order of appearance)
  bibencoding=utf8,
  backend=biber,
  language=auto,    % get main language from babel
  autolang=other,
]{biblatex}
\bibliography{\jobname}

\begin{document}

From \si{\mega\ohm} to \si{\micro\watt} -- consider "Faust" \cite{von1841faust}, which is in (extended) Latin script; or "\foreignlanguage{russian}{Двойник}" \cite{dostoevskij2014dvoinik}, which is in Cyrillic script.

\printbibliography

\end{document}

산출:

테스트.png

관련 정보