いくつかの理由により、biblatex を使用して、LaTeX ドキュメント内で新しいフィールドを持つ新しいドライバーを宣言する必要があります。
たとえば、次の BibTeX エントリを指定できます。
\begin{filecontents}{\jobname.bib}
@aloa{chris,
fu = {Hawaii},
fubo = {Hawaiiboooo},
year = {2015}}
\end{filecontents}
次に、LaTeX ドキュメントで次のようなものを定義します。
\DeclareBibliographyDriver{aloa}{%
\newunit\newblock
\printfield{fu}%
\newunit\newblock
\printfield{fubo}%
\newunit\newblock
\printfield{year}%
\finentry}
そして、参考文献リストに次のように出力されるようにエントリを引用したいと思います。
ハワイ ハワイブー 2015
最小限の例は次のようになります。
\documentclass{article}
\begin{filecontents}{\jobname.bib}
@aloa{chris,
fu = {Hawaii},
fubo = {Hawaiiboooo},
year = {2015}}
\end{filecontents}
\usepackage[backend=bibtex8]{biblatex}
\DeclareBibliographyDriver{aloa}{%
\newunit\newblock
\printfield{fu}%
\newunit\newblock
\printfield{fubo}%
\newunit\newblock
\printfield{year}%
\finentry}
\bibliography{\jobname.bib}
\begin{document}
\nocite{chris}
\printbibliography
\end{document}
これを LaTeX ファイルのみで (biber ではなく bibtex を使用して) 実行することは可能ですか?
答え1
biblatex
がなくても、新しいドライバーと新しいエントリ フィールドを作成することも可能ですbiber
。
バックエンドが でない場合はbiber
、biblatex
は特別な.bst
ファイルを使用して ファイルbiblatex.bst
を生成するため.bbl
、 を変更する必要がありますbiblatex.bst
。手順は次のとおりです。
1)biblatex.bst
それを探してコピーし、コピーの名前を変更して (つまり、mybiblatex.bst
)、名前を変更したコピーを が見つけられる場所に置きますbibtex
(簡単な解決策は、LaTeX ファイルと同じフォルダー/ディレクトリに置くことです)。
2) ローカル コピーでENTRY
、追加するフィールドを見つけて追加します。
ENTRY {
entryset
...
fu
fubo
}
これは、 と がフィールドであるbibtex
ことを示します。fu
fubo
bibtex
3) ローカルコピーを見つけてFUNCTION {output.fields.3}
新しい関数を作成する
FUNCTION {output.myfields} {
"fu" fu output:write:field
"fubo" fubo output:write:field
}
この関数は、bibtex
新しいフィールドの処理方法を指示します。各行の最初の 2 つの引数は新しいフィールドの名前です。3 番目の引数には を使用します。ここで、 はoutput:write:<type>
エントリのデータ型に応じて 、、、のいずれ<type>
かになります。name
field
verb
list
year
4) ローカルコピーで関数を見つけますFUNCTION {output:entry}
。この関数に追加するoutput.myfields
と、次のようになります。
FUNCTION {output:entry}{
...
output.fields.3
output.myfields
output.compat.1
...
}
5) 新しいドライバーごとに<driver>
次の行を追加します。
FUNCTION {<driver>} { type$ output:entry }
この例では、
FUNCTION {aloa} {type$ output:entry}
6) ラテックスソースに以下を追加します。
\makeatletter
\def\blx@auxinit@bibtex#1{%
\blx@auxwrite\blx@auxout@bibtex
{\def\do##1{,\blx@stripbib{##1}}}
{\ifx\blx@auxout@bibtex\@mainaux
\else
\blx@msg@aux
\fi
\string\bibstyle{mybiblatex}\blx@nl
\string\bibdata{%
\blx@ctrlfile@bibtex\blxauxsuffix
\ifx#1\@empty
\else
\dolistloop#1%
\fi}\blx@nl
\string\citation{biblatex-control}}}
\makeatother
これは、デフォルトの代わりにbibtex
を使用するように指示します。mybiblatex.bst
biblatex.bst
MWEの出力は次の通りです