FC2ブログ

つぶつぶなるままに

物理とかプログラミングとか

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

BibLaTeX で日本語文献と英語文献の混在を扱う(2018年版)

2013年に日本語文献の著者名を調整するマクロを記事にしたが,\DeclareNameFormat 周辺の仕様が変更されたため,あのマクロはもはや使えない。

最新の biblatex で動くコードを次に示す。

\documentclass{ltjsarticle}
\usepackage[backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{demo.bib}
@article{山田2018,
author = {山田, 太郎 and 鈴木, 花子 and 田中, 次郎},
language = {japanese},
journal = {ほげ学会論文集},
pages = {8--15},
title = {〇〇について},
volume = {8},
year = {2018}
}
@article{Smith2018,
author ={Smith, John and Schmidt, Hans},
journal = {Int. J. Hoge},
pages = {3-5},
title = {Piyo is Fuga},
volume = {10},
year = {2018}
}
\end{filecontents}
\addbibresource{demo.bib}

\newbibmacro*{finalnamedelim:{japanese}}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\multinamedelim
}

\renewcommand*{\finalnamedelim}{%
\iflistundef{language}
{\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
\addspace\bibstring{and}\space}
{\usebibmacro*{finalnamedelim:\strlist{language}}}
}

\newbibmacro*{name:given-family:{japanese}}[4]{%
\usebibmacro{name:delim}{#1#2}\usebibmacro{name:hook}{#1#2}#1\bibnamedelimc#2}

\DeclareNameFormat{given-family}{%
\iflistundef{language}{%
\ifgiveninits
{\usebibmacro{name:given-family}{\namepartfamily}{\namepartgiveni}{\namepartprefix}{\namepartsuffix}}
{\usebibmacro{name:given-family}{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}
}
{\usebibmacro*{name:given-family:\strlist{language}}{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}
\usebibmacro{name:andothers}
}

\begin{document}
山田ら\cite{山田2018}は〇〇について××と言っている。
Smith and Hans\cite{Smith2018}は piyo について fuga と言っている。

\printbibliography
\end{document}

これを lualatex でコンパイルすると
コンパイル結果となる。

最新の biblatex では language フィールド(文献がどの言語で書かれているか)がサポートされているので,usera = {Jpn} ではなく,language = {japanese} で日本語文献を指定する。
ただし,language を設定すると(スタイルによっては)上記のように参考文献リスト内に "japanese" が挿入されてしまう。これを避けるには,使用しているスタイルの bbx ファイルで対応する部分を修正する必要がある。(例えば phys.bbx の場合は,\DeclareBibliographyDrive{article} マクロの \printlist{language} をコメントアウトすればよい)。

スポンサーサイト

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。