先ほど導入したBMQuoteプラグインのドキュメントを読んでみた。
変数の値を変更するだけで、拡張フォーマットでの引用ができるらしい。
が、そこで参考にしている「XHTMLでの引用方法」のリンクが切れていたので、検索してみた。

御覧のように、《cite属性+title属性》では、かなり詳しい情報を書くことができます。本の場合、機械向けには、《cite属性+title属性》で厳密な引用を行い、人間向けには、cite 要素で、読者の利便性を優先した簡潔な引用をするというような差別化をすると有意義かもしれません。

なかなか勉強になる。
が、とりあえずは拡張フォーマットではなく、スタンダードで使うことにした。

さて、BMQuoteのソースを見てみると、簡単に改造できそうだったので、少し変更することにしました。
変更するのは、「_make_html_std」というサブルーチン。
元のソースでは、テキストを選択していなくても「引用」を示す「blockquote」でマークアップされますが、それがいまいち気に入らなかったので。

1
2
3
4
5
6
7
8
9
10
sub _make_html_std {
my ($title, $url, $sel_text) = @_;
my $html = <<"HTML";
<div class="quotetitle"><a title="$title" href="$url" target="_blank">$title</a></div>\n
HTML
$html .= <<"HTML" if $sel_text ne "";
<blockquote>$sel_text</blockquote>\n
HTML
$html;
}

とりあえず、これで私は満足。
ただ、テスト中に問題が。
HTMLソースを記述している部分を引用すると、HTMLとして引用されてしまうので、そのあたりは実体参照に変更したほうが良いのかもしれません。
ということで、やっつけで手直し。

1
2
3
4
5
6
7
8
9
10
11
12
use HTML::Entities;
sub _make_html_std {
my ($title, $url, $sel_text) = @_;
my $html = <<"HTML";
<div class="quotetitle"><a title="$title" href="$url" target="_blank">$title</a></div>\n
HTML
$sel_text = encode_entities($sel_text, '<>&"');
$html .= <<"HTML" if $sel_text ne "";
<blockquote>$sel_text</blockquote>\n
HTML
$html;
}

これでとりあえず安心です。
まあ、あまりHTMLソースを引用することは無いとは思いますが…。