私は、LyX と Mendeley から生成された Bibtex ファイルを使用した Biblatex-APA/Biber を使用しています。問題なく参考文献を作成できますが、inproceedings/booktitle の参照スタイルを変更したいと思います。現時点では、私の参照は次のようになっています。
Cole, R., Purao, S., Rossi, M. & Sein, M. (2005). Being proactive: Where action research meets design research. In Proceedings of the 26th international conference on information systems.
私のBibtexファイルから:
@inproceedings{Cole2005,
author = {Cole, Robert and Purao, Sandeep and Rossi, Matti and Sein, Maung},
booktitle = {Proceedings of the 26th International Conference on Information Systems},
title = {{Being proactive: Where action research meets design research}},
year = {2005}
}
ここで、inproceedings/booktitle の大文字表記を維持して、次のようになります。
Cole, R., Purao, S., Rossi, M. & Sein, M. (2005). Being proactive: Where action
research meets design research. In Proceedings of the 26th International Conference
on Information Systems.
以下のことを試してみましたが、成功しませんでした。
\DeclareFieldFormat[inproceedings]{booktitle}{#1}
助言がありますか?
答え1
参考文献スタイルファイルからapa.bbx
、
\DeclareFieldFormat[inproceedings]{booktitle}{#1}
は動作しません。booktitle
フィールドが で設定されており\printfield[apacase]{booktitle}
、apacase
書式指定が次のように定義されているためです。
\DeclareFieldFormat{apacase}{\MakeSentenceCase*{#1}}
booktitle
エントリ タイプのフィールドのソースの大文字と小文字を保持するには、参考文献マクロまたはドキュメントのプリアンブルのディレクティブ@inproceedings
を再定義します。後者のアプローチの例は次のとおりです。booktitle
apacase
\DeclareFieldFormat{apacase}{%
\ifboolexpr{ test {\ifentrytype{inproceedings}}
and ( test {\ifcurrentfield{booktitle}}
or test {\ifcurrentfield{booksubtitle}} ) }
{#1}{\MakeSentenceCase*{#1}}}
origtitle
オリジナルのタイトル( )とタイトルアドオン以外では、文の大文字小文字を避けるには、
\DeclareFieldFormat{apacase}{#1}
biblatex-apa
代わりに、は星印の付いたバリアントのみに依存するため、プリアンブルに追加し、ファイル内のフィールドを利用する\MakeSentenceCase*
ことで、すべての文の大文字と小文字の区別を回避できます。\DeclareCaseLangs{}
hyphenation
bib
フィールドを使用して、一部の単語を小文字化から保護しないようにすることができますsubtitle
。例:
title = {Being proactive},
subtitle = {Where action research meets design research},
答え2
疑問文の文字を中括弧で囲むだけで、大文字表記をそのまま維持することができます。
@inproceedings{Cole2005,
author = {Cole, Robert and Purao, Sandeep and Rossi, Matti and Sein, Maung},
booktitle = {{Proceedings} of the 26th {International} {Conference} on {Information} {Systems}},
title = {{Being proactive: Where action research meets design research}},
year = {2005}
}
で十分です。しかし、ほとんどの場合、タイトルの場合と同じように、行全体を中括弧で囲む方がはるかに簡単です。
答え3
少なくとも自分にとって便利な解決策を探していたので、Mendeley によって生成されたローカルの bib ファイルを解析する小さな Python スクリプトを作成しました。このスクリプトは、書籍のタイトルを 2 つの中括弧で囲みます。
import re
import fileinput
library = 'path/to/file'
import re
def re_sub_verbose(pattern, replace, string):
def substitute(match):
return match.expand(replace)
result = re.sub(pattern, substitute, string)
return result
for line in fileinput.input(library, inplace=1):
print re_sub_verbose("booktitle = \{(.*)\},", "booktitle = {{\\1}},", line)