このパッケージは、BibTex ファイルに保存された情報にアクセスするための メソッドを提供します。パース時に、データの検証を行うこともできます。 さらに、BibTex 文字列を作成したり RTF 文字列を作成したりすることもサポートしています。
BibTex ファイルを読み込み、パース結果を配列で表示する
<?php
require_once 'Structures/BibTex.php';
$bibtex = new Structures_BibTex();
$ret = $bibtex->loadFile('foo.bib');
if (PEAR::isError($ret)) {
die($ret->getMessage());
}
$bibtex->parse();
echo '<pre>';
print_r($bibtex->data);
echo '</pre>';
?>
オプションは、コンストラクタで設定するか、あるいは setOption() メソッドで設定します。 コンストラクタで設定する場合は、連想配列形式で指定します。 以下のようなオプションがあります。
stripDelimiter (デフォルト: true)
エントリの前後の区切り文字を取り除きます。
validate (デフォルト: true)
パース時に内容を検証します。
unwrap (デフォルト: false)
パース時に、ワードラップを解除します。
wordWrapWidth (デフォルト: false)
1 より大きい数値を指定すると、その文字数でエントリをワードラップします。
wordWrapBreak (デフォルト: \n)
改行に使用する (行に追加される) 文字。
wordWrapCut (デフォルト: 0)
0 を指定すると、条件を満たすように空白の位置で改行されます。
1 を指定すると、指定した文字数ちょうどの位置で改行されます。
removeCurlyBraces (デフォルト: false)
true を指定すると、波括弧が削除されます。
コンストラクタでオプションを設定する例です。
コンストラクタでのオプションの設定
<?php
$bibtex = new Structures_BibTex(array('validate'=>false, 'unwrap'=>true));
?>
setOption() メソッドでオプションを設定する例です。
setOption を使用したオプションの設定
<?php
$bibtex = new Structures_BibTex();
$bibtex->setOption('validate', false);
$bibtex->setOption('unwrap', true);
?>
データは、クラス変数 data
に保存されます。
この変数はリストになっており、各エントリが、ひとつの bibtex
エントリを表すハッシュテーブルとなっています。
ハッシュテーブルのキーが bibtex のキーを表し、
それに対応する値がハッシュテーブルの値となります。
次のようなキーがあります。
cite
- LaTeX のソースで引用する際に使用されるキー。
entryType
- エントリの種類。例えば techreport、book など。
author
- 著者。
このエントリの値自体がハッシュテーブルのリストとなり、
各ハッシュテーブルが著者を表します。ハッシュテーブルの内容については後で説明します。
title
- エントリのタイトル。
先ほど説明したように、著者の情報はリストに保存されます。 各エントリがそれぞれひとりの著者を表し、それぞれがハッシュテーブルを持っています。 ハッシュテーブルは first、von、last そして jr の 4 つのキーで構成されます。 それぞれのキーについて説明します。
first
- 著者のファーストネーム。
von
- 中には、名前に 'von'
のような部分が含まれる人もいます。これは、通常は貴族の印です。
last
- 著者の姓。
jr
- 中には、父と同じ名前の著者もいます。
その場合、この値が jr となります。逆に、
息子と同じ名前の著者の場合は、この値が sen となります。
エントリを追加するには、必要なキーおよび値を指定したハッシュテーブルを作成して addEntry() メソッドをコールします。
エントリの追加
<?php
$bibtex = new Structures_BibTex();
$addarray = array();
$addarray['entryType'] = 'Article';
$addarray['cite'] = 'art2';
$addarray['title'] = 'Titel of the Article';
$addarray['author'][0]['first'] = 'John';
$addarray['author'][0]['last'] = 'Doe';
$addarray['author'][1]['first'] = 'Jane';
$addarray['author'][1]['last'] = 'Doe';
$bibtex->addEntry($addarray);
?>