Markdown Extraの改造
Markdown記法をHTMLへ変換してくれるPHPライブラリーは、記法名と同じ名前のMarkdownライブラリーがあります。Markdownの記法を拡張したMarkdown Extraもあります。
当サイトでは、Laravelを利用しており、Markdownで書かれたドキュメントを表示するために予め入っていた、Markdownをそのまま流用しました。調べてみたらExtraの方でした。
Extraでは、特にテーブルとコードブロックの指定が便利になっています。詳しくはMarkdown Extraをご覧ください。
コードブロックの場合、オリジナルなMarkdownでは、先頭に4つ以上のスペースかタブを入れることになっています。これをブラウザのテキストエリアで指定するのは面倒です。そこでExtraでは、~を3つ以上続けることでコードブロックを指定できるようになっています。
~~~~ <?php これでコードブロックになります ~~~~
多分意図的なものだと思われますが、先頭に空白をつける方法と~を使用する方法では、生成されるコードが異なります。空白をつける方法では<pre class="prettyprint linenums>
と</pre>
に変換され、Googleのpretty printを使用するコードが生成されます。
一方の、~を4つつなげた行で挟む方法では、<pre><code>
と</code></pre>
に変換されます。意味合い的にはこちらのほうが正しいのですが、pretty printの標準のcssでは、コードハイライトされません。
もし、pretty printとMarkdown Extraの拡張コード記法を使用したい場合、Markdownライブラリーを改造し、クラスを付けましょう。Markdownライブラリーが行なっているのは原則置換ですから、意外とコードは簡単です。
- markdown.phpをエディターで開きます。
<code>
で検索しましょう。- 2580行あたりに、
$codeblock = "<pre><code>$codeblock</code></pre>";
というコードがあります。見たまま、この行で変換が行われています。 $codeblock = "<pre class=\"prettyprint linenums\">$codeblock</pre>";
と書き換えます。(もしくはお好きなように変更しましょう。)
生成結果を見て、気に入らないところや、クラスを付け加えたい箇所は、このように修正しましょう。残念ながら、設定ファイルでお手軽に変更できるようにはなっていませんが、単純な置き換えのコードですから、生成場所を見つけるのも、改造もやりやすいです。
Markdownは直接タグを書くことも許しています。ほんの数箇所であれば、直接タグを書けば済みます。しかし、読みやすさが損なわれますし、毎回タグを書くのはおしゃれでないですからね。