MTではてな記法のテスト。

『はてな記法』というと、
はてなダイアリーを含めた、はてなの各サービスで利用可能な、
HTMLの省入力機能。
基本的には、wikiでの記法を元に設計されている…んだったっけ?

はてな記法とは – はてなダイアリー

覚えるのに、少し時間は必要だけど、
慣れてしまうと非常に使いやすい。
特に、引用、脚注、見出し、リスト辺りは、覚えるとかなり楽です。


というわけで、これを、
MovableTypeでエントリを書くときにも使えないかな、と探したところ、
やはりありました。
さすが。

プラグインを利用し、
それで自動的に変換する…ということのようですね。
(適当だけど)

開発/配布されているのは、このあたり。


mt-sukeroku2 β3公開 (ささやかなる実験場の開発室)

■ 実際に使ってみる。

紹介しただけで、『じゃ、そんな感じで!』とか終わるのも気持ちが悪いので((端からそんな気はなかったけれども))、
実際に使ってみることにします。




■ インストール

インストールは非常に簡単。

ダウンロードしてきたファイルを解凍すると、以下の通り、
2つのフォルダと、1つのファイルが出てきます。
-extlib
-plugins
-asin_js.cgi
多分、元々あったファイルと名前がかぶることはない…と思うので(多分)、
上記3つを、MTのインストールディレクトリにアップデート。

以上。


まぁ他のプラグインでもそうですが、
特に設定は必要ないみたいですね。
便利。


実際に使える機能については、この辺りのエントリを参照のこと。

mt-sukeroku-plus <はてなダイアリー風TextFormat> 書き込みテスト&書式解説 (ささやかなる実験場の開発室)


全てとは行かないみたいですが、
文章を書く上で必要な要素の殆どは網羅できています。


はてな記法を使ったって、
入力方法を覚える、それを記号的に使うという点で同じじゃないか、とも思うんですが、
(少なくとも僕は思います)
ただ実際に書いてみると、終了タグが要らないだけでも随分と違う。
リストとか。見出しとか。

リストなんか、タグ書くより、はてな記法の方が、
見て、直感しやすいし。



…とか書いておいて、
上手く使えてなかったらこのエントリはボツになるのだけれども…(苦笑)




■ テスト。

何か適当に文章を書き、『改行設定』から、『Sukeroku2(HatenaDiaryLike)』を選択して、保存。
これで、そのエントリは、はてな記法で変換されます。


…お、上手くできました。



しかし、なんだな。
はてな記法に忠実なのは良いのだけど、
改行すると全部、一段落と見なしてしまうんだな。
このサイトでは、<p>は自動的に上下に1emマージンを取ることになってるんで、
行間が空いてしまうな。

ま、これは、CSSで対応しろよ、ってことか。
そうですか。
まぁ、そうだな。


一応、extlib/Text/Sukeroku/HatenaDiary.pmをいじってやれば、
その辺の修正は出来るような気がするけど、
まー影響がえらいでかいので、多分、凄い面倒になると思う(苦笑)

というわけで。おまけ。




■ (追記その1)改行設定で、CSSを使い分ける。

mt-sukeroku2.plの、105行目。

>|
return $text;
||
return '<span class="' . $format . '">' . $text . '</span>';
|<

とすることで、hatenaというクラス名の付いたspanで書き出すことが出来ます。


で、CSSを適用してやれば、一件落着。
他の改行設定で書いたエントリに影響なく、
このエントリのみ、<p>を潰せます。


ま、はてな記法を使おうという人は、
この件(全て<p>で囲まれる)は既に納得済なんだと思いますが。




■ (追記その2)脚注のリンク先を変更

使ってみて、もう一つ、気になったこと。
このプラグイン、リンクのターゲットが一括なんですよね。

Kiseru.pmの中で、targetを指定できるのだけど、
それが全体に反映されるみたい。
んで、デフォルトの設定では、_blankに設定されている。
まぁ、リンクと言えば、大体は、外部リンクなので、
それ自体殆ど問題ないのだけど、
唯一、脚注に関する部分だけは、問題かなぁ、と。
脚注の見るために、別ウィンドウが開くってのはちょっとどうなんでしょうかね。

かといって、設定を_selfに変更してしまうと、
外部リンクも全部、同じウィンドウに表示されてしまうわけで。
これはこれでよろしくない。

というわけで、ちょっといじってみた。


最初、脚注の部分で、targetを指定しようかと思ったのだけど、
それをやっても意味がないので、
(targetが_selfであってなおかつ、JavaScriptで別ウィンドウが開いてしまう)
このリンク作成は、脚注のものですよーっていう引数を渡すことにする。

具体的には、

BaseFormat.pmの、
formatFootnoteAnchor、formatFootnoteBodyの、
下から3行目のところに、

>|

$attr{'targetkey'} = 'footnote';

||

$attr{'onclick'} = "window.open(this.href); return false;";

||

if($attr{'targetkey'} ne 'footnote'){
$attr{'onclick'} = "window.open(this.href); return false;";
}else{
delete $attr{'targetkey'};

}

|<

これを追加。

ま、要するに、脚注に関するリンクの時は、
別ウィンドウを開くスクリプトを入れないようにする、と。


まーもの凄く適当なhackですけどねぇ。

思うとおりに動くから、ま、いっか。




■ 関連リンク

mt-sukeroku2 β3公開 (ささやかなる実験場の開発室)

MovableType用TextFormatプラグイン mt-sukeroku-plus.pl 導入ガイド (ささやかなる実験場の開発室)

mt-sukeroku-plus <はてなダイアリー風TextFormat> 書き込みテスト&書式解説 (ささやかなる実験場の開発室)

はてなダイアリーのヘルプ – はてな記法一覧