Pandoc Markdown のあまり知られていない書法
ソフトウェア
- TOP
- Old Archives
- Pandoc Markdown のあまり知られていない書法
これで全部ではないし、どちらかといえばPandocユーザーズガイド日本版に記載されているものはそれを読むほうが早いので、記載されていないものを中心にあまり知られていないものを集めてみた。
上付き文字 (superscript)
^
ではさむ。
30cm^3^
下付き文字 (subscript)
~
ではさむ。
2~16~
打ち消し
~~
で挟む
~~馬鹿な~~一風変わった
ヘッダーのIDを制御する
日本語を使用している場合やかぶる場合、あるいは主導でヘッダーへのフラグメントを書く場合などは名前をつけたいもの。
# とあるヘッダ {#HelloWorld}
これでこのh1
ヘッダのIDはHelloWorld
になる。
divとspan
ユーザーズガイドに記載されていない機能。
div
3つ以上のコロンをフェンスブロックのように使用する。
:::
divの中の段落
:::
span
[]
形式。
[spanで囲む]ことができる。 一部分を
特にspanに関しては{}
を伴わないのは危険かもしれない。
任意にID/クラス/属性を書く
ユーザーズガイドに記載されていない機能。
{...}
という形式でヘッダやコードブロックに限らずIDを明示することができる。
#ID
によるIDと、.class
によるクラス表記ができるほか、attr_name="attr_value"
という形で属性も書くことができる。
これはインラインコード, コードブロック, リンク, 画像, ヘッダ, div, spanなどで利用できる。
[redになっているspan]{.red}ブロック
クラスが
[external属性つきリンク](http://example.com/fire.html){rel="external"}
順序つきリストにラベルをつける
順序つきリストマーカーに(@)
という形式があり、(@label)
と書くことができる。
そして(@label)
として参照できる。
(@) AAA
(@) BBB
(@C) CCC
(@C)の話しをしたい
結果
<ol class="example" type="1">
<li>AAA</li>
<li>BBB</li>
<li>CCC</li>
</ol>
<p>(3)の話しをしたい</p>
シンタックスハイライトニング
フェンスブロックで言語名を書けばよい。 一応、ユーザーズガイドにはないZshなんかも対応している。
```perl
while(<>) {
if (/hello/) { print "world!\n"}
}```
クラスとして言語が指定された場合もそれを認識する。
```{.ruby}
ARGF.each do |line|
puts "world!" if line.include?("hello")
end
```
なお、対応している言語を指定したときだけsourceCode
というクラスが振られるようになっている。
コードに行番号をつける
ユーザーズガイドに記載されていない機能。
コードブロックにnumberSource
というクラスが設定されていると行番号をつける。
numberSourceをつけていなくても必要な情報自体はついているので、CSSを改変すれば必須ということもない。
```{.bash .numberSource}
for i in *
do
sed "s/axe/sword/"
done
```
定義リスト
dt
は普通に先頭からはじめて、dd
側を:
に続けてインデントする。
まずdd
が一行なのであれば、空行をあけずに書けば良い。
用語1
: 定義
用語2 : 定義
複数の段落に渡るような場合は空行をあける。
dd
の最初の行は:
にスペース3つ、以降はスペース4つ。
用語1
: 定義の段落1
段落2
用語2
: 定義
ラインブロック
いわゆるVerb。
単に|
ではじめるだけ。
| 改行と
| スペースの
| 維持された
| 詩的な
| 文章を
| 書くことができる
リストにブロックレベルのコンテンツを含む
定義リストと同じように継続するものが4つのスペースではじまっていると、それは複数のブロックレベル要素を含むものとみなしてくれる。
このため、4つのスペースでコードブロックを表している場合、これをリストの一部だとみなしてしまう。
コメントをいれれば良い、とガイドにはあるのだが、これはHTML以外で困る。 タブを使えば解決するのだが、いくらなんでもスペースでインデントしてからタブを重ねるのは嫌という人もいるだろう。 であれば、フェンスブロックを使えば良い。
YAML front matter
Markdownの先頭にYAMLを置くことでメタデータを書くことができる。
title
, subtitle
, author
,
date
, keywords
はofficialなもの。
---
title: ほげほげ
---
ほげほげほげほげ
テーブルキャプション
ユーザーズガイドに記載されていない機能。
方法その1。手前に:
で始まる行を置く。
: これがキャプションになる
|title|price|
|-----|-----|
|ほげほげ|500|
|ふがふが|1000000|
もうひとつはTable:
という行を後置する。
|title|price|
|-----|-----|
|ほげほげ|500|
|ふがふが|1000000|
Table: これがキャプションになる
コードブロックにキャプションをつける
caption
という属性を書くとdata-caption
が定義されるので、
:after {
precontent: attr(data-caption);
font-weight:bold;
}
とCSSに書いておけば良い。