読者です 読者をやめる 読者になる 読者になる

PHP Markdown Extra テキトー訳 (2)

Markdown AoBane

Markdown Inside HTML Blocks

さっき言ったように、<div>エレメントの中にMarkdown書式は書けない。その訳は、<div>がブロックエレメントであり、素Markdownではそのような要素のなかでは構成するような造りに成っていないからだ。

 

ところが、PHP Markdown Extraではそんなブロックエレメントの中でもMarkdown記法を使えるような方法を提供している。どうだい、イカすだろ?

どうやるかって?それはmarkdownアトリビュートを1に設定するだけさ、こんな感じにな

  <div markdown="1">   
  This is *true* markdown text.
  </div>

 こいつは最終的に次のようなHTMLにされるんだ。

<div>

<p>This is <em>true</em> markdown text.</p>

</div>

 

PHP Markdown Extraはmarkdownアトリビュートを設定してやれば、ブロックエレメントでも思い通りに書くことができる。たとえばmarkdownアビュートを<p>に適応させたいなら、その<p>エレメントはただのspanレベルエレメントを内部的に生成するぜ。ただし、こいつはリストやブロッククオートやコードブロックには通用しない。気をつけろ。

でも、いくつかのケースにおいて上記のルールは曖昧になることがある。例えばこんな場合だ:

<table>
<tr>
<td markdown="1">This is *true* markdown text.</td>
</tr>
</table>

 tableセルはspanもblockエレメントも両方を含むことができる。このような場合、PHP Markdown Extraはspanレベルの方だけ採用するようになっている。もし、ブロック構造を有効にしたければ、markdown="block"と書けばいい。

 

Special Attributes

PHP Markdown Extraでは、id、classアトリビュートを使用することもできる。例えば、ヘッダの後ろ、行末にハッシュであらかじめ決められたidをカーリーブラケットで囲う、こんな感じに:

Header 1 {#header1}
========

##Header 2 ## {#header2}

 で、同じドキュメントの別の場所に次のように書いておくと、Header1やHeader2へのリンクを作ることができるんだ。

 [Link back to header 1](#header1)

また、class名を書くことで、スタイルシートへのフックとして利用することもできる。

## The Site ## {.main}

 このidや複数のclass名は同一のspacial atributeに加えることもできる

## The site ## {.main .shine #the-site}

 このとき、special attributeブロックは次のような要素で使うことができる。

  • headers
  • fenced code blocks
  • links
  • image

imageやlinkではすぐ後ろにspecial attributeブロックを()で囲う

  [link](url){#id .class}
  ![img](url){#id .class}

 もしくは、リファレンススタイルのリンクやイメージを使うには、定義行の最後に書く

  [link][linkref] or [linkref]
  ![img][linkref]

  [linkref]: url "optional title" {#id .class}

 

。。今日はここまで。。