導入
導入 –
Structures_BibTex について
概要
このパッケージは、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() メソッドでオプションを設定する例です。
<?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 つのキーで構成されます。
それぞれのキーについて説明します。
エントリの追加
エントリを追加するには、必要なキーおよび値を指定したハッシュテーブルを作成して
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);
?>