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ほど賢いようですが、どういうわけか、すべてのフィールド (特に略語を含むフィールド) が入力されません。手動でハッキングして、ラテン文字の名前から類推して および に次のものを挿入しようとすると、代わりに次のようになります。\foreignlanguage\bibnamedelimblabelnameauthor

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

... 省略形は機能しますが、明らかに、キリル文字のエントリごとにこれを手動で実行したくないので、次のような質問が投げかけられます。biberファイルにいくつかのコマンドを入力するなどして、これを自動的に生成するように誘導することはできますか.bib?

編集2: .bib ファイル内の各著者名を外国語で囲むことも試しました。

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

...これはまったく機能しません (省略形はなく、実際、最終出力ではいくつかの単語がスキップされます)。

編集3: @egreg がコメント (単一オブジェクト) で指摘したように、\foreignlanguage著者名の を削除して、UTF-8 で直接記述してみました。

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

...これで、.bblファイル内の名前コンポーネントが正しく分割されます。

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

...しかし、pdflatex2 回目に実行すると、次のエラーでクラッシュします。

! 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

関連情報