はてな記法で脚注のエスケープ方法

はてなブログは、はてなダイアリーの特徴を受け継いだブログサービスです。

はてなダイアリーでは「はてな記法」という特殊な編集方法を提供しています。

例として、半角丸括弧で二重に囲むと脚注を付けることができます。*1

ただし、当然ながら文章中で二重の丸括弧を使いたいときには困ってしまいます。

ということで、以下の記事で脚注機能をエスケープすることができるようになったようです。ずいぶん前のことです。

脚注機能のエスケープ - はてなダイアリー日記

  1. 三重以上の丸がっこで囲まれた部分は脚注になりません
    例 (((三重カッコ)))
  2. 明示的にエスケープする場合には、「)((」と「))(」で囲みます
    例 「)((カッコの中))(」 -> 「((カッコの中))」

 基本的なエスケープ方法は上記の通りですが、昨日書いた記事中で以下の文字列を表示する際に困りました。

)((hoge))((fuga))((piyo))(

実際は拙い正規表現ですが、括弧の数で意味が大きく変わってしまいます。

ひとまず、三重括弧エスケープは意味が変わってしまうので、2番目のエスケープを試すために両端を逆括弧で囲んでみると、

ソース上:)((hoge))((fuga))((piyo))(

表示上:)((hoge))fuga((piyo))(

と、真ん中の丸括弧が消えてしまいます。

これは、"fuga"を囲む丸括弧が"hoge"と"piyo"を囲む二重丸括弧のエスケープに使われてしまうためですね。

これを受けて、両端の二重丸括弧をしっかりエスケープするように括弧を増やしてみると、

ソース上:)((hoge))(((fuga)))((piyo))(

表示上:)((hoge))((fuga))((piyo))(

と、真ん中の丸括弧まで二重になってしまいます。

これは原理がよくわからなかったのですが、単語の間の"))(("というのが左右のエスケープを兼ねてしまっているのかもしれません。

 

ということで、八方塞りではてなブログに問い合わせてみました。

はてなブログ - お問い合わせ - はてな

 

結論。

)((hoge))(<span>(fuga)</span>)((piyo))(

(゚д゚)

びっくりするほどシンプルな解決方法でした。

要するに表示上、記述しても問題のない<span>タグのようなものをソース上に挿入することで、表示上ではくっついているけどソース上は離れている状況を作れば良いようです。

ということで解決しました。お問い合わせの回答も24時間以内にしていただけました。ありがとうございます。これからもはてなブログで書いていこうと思います。

*1:←こんなのです