文書を作成する場合、何を使っているだろう。
ボクは1990年代からLaTeXを主に使っているのだが、マークアップ文字列で埋め尽くされるので本文が読みづらくなってしまう。ちょうどCマガジンに連載されていた結城浩氏のC言語口座にLaTeX文書に変換するフィルタープログラムがありこれを改変して便利に使っていた。たくさんの文書を効率よく作成することができ助かった。
さて、時代が代わって2000年代になるとPandocというものが現れ構造化文書(Markdown記法で書かれた文書)をいろいろなフォーマットの文書に変換することができるようになった。当時はLaTeXに変換できればよかったので作業スタイルを変える必要はなかったが、今ではいろいろな環境があるのでPandocを使うシーンが増えている。
そう例えば、先日PixelにLinuxターミナルが公開されたが、このターミナル上でemacsを使い文書を作成しPandocで変換しpdfやEPub文書としてPixel上で見ることができる。もちろん、別サイトに公開もできる。
※TeXLiveをインストールすると4GBのディスク容量を消費するので💦
Qiita 多様なフォーマットに対応!ドキュメント変換ツールPandocを知ろう HTML Haskell TeX Markdown Pandoc 最終更新日 2020年04月19日 投稿日 2012年12月26日/qiita.com/sky_y/
Pandoc Pandoc User’s Guide 日本語版/pandoc-doc-ja.readthedocs.io/ja/
□文書の作成(Emacsの例)
Emacsにはout-line-modeというアウトラインプロセッサーのパッケージがあるのでこれを使う。設定は.emacsに記述している。これを使うと見出しと本文の表示モードを切り替えられるので一覧性が良く効率的に編集できる。
Windowsを使っていた頃は「秀丸」というEmacsライクのエディターを使っていたので同様のことができた。何度もインストールしたのでパスワードを今もおぼえているくらいだ(お世話になりました)。
例.1 本文中程の「番号付きリスト」の表示例にカーソルがある場合
見出しのみを表示
本文を表示例.2 文書の先頭部分
見出しのみを表示
本文を表示
下の動作確認用のテキストからPandocで生成したEPub文書をReadEraで表示した例です。
例.3 ReadEraでEPub文書を表示する

下は動作確認用のテキストです。
---
title: Markdown記法 サンプル集
tags: Markdown githubflavoredmarkdown
author: tbpgr
slide: false
---
# Markdown記法 サンプル集
## 見出し
1個から6個シャープで<span style="color: red;">見出し</span>を記述する。
※シャープと見出し文字の間には半角スペースを1つ入れること
### 記述例
~~~md
# 見出し1
## 見出し2
### 見出し3
#### 見出し4
##### 見出し5
###### 見出し6
~~~
### 表示例
# 見出し1
## 見出し2
### 見出し3
#### 見出し4
##### 見出し5
###### 見出し6
## 箇条書きリスト
ハイフン、プラス、アスタリスクのいずれかで箇条書きリストを記述可能。
※ハイフン、プラス、アスタリスクと箇条書きの項目の間には半角スペースを1つ入れること
### 記述例
~~~md
- リスト1
- ネスト リスト1_1
- ネスト リスト1_1_1
- ネスト リスト1_1_2
- ネスト リスト1_2
- リスト2
- リスト3
~~~
### 表示例
- リスト1
- ネスト リスト1_1
- ネスト リスト1_1_1
- ネスト リスト1_1_2
- ネスト リスト1_2
- リスト2
- リスト3
## 番号付きリスト
数値+半角ドットで番号付きリストを記述可能。
番号の内容は何でもいい。実際に表示される際に適切な番号で表示される。
そのため、一般的にはすべて `1. 内容` で記載すると変更に強く楽です。
※数値+半角ドットと箇条書きの項目の間には半角スペースを1つ入れること
## チェックリスト
- [ ] これからやるタスク
- [x] 完了したタスクz
### 記述例
~~~md
1. 番号付きリスト1
1. 番号付きリスト1_1
1. 番号付きリスト1_2
1. 番号付きリスト2
1. 番号付きリスト3
~~~
### 表示例
1. 番号付きリスト1
1. 番号付きリスト1_1
1. 番号付きリスト1_2
1. 番号付きリスト2
1. 番号付きリスト3
## 引用
~~~md
> お世話になります。xxxです。
>
> ご連絡いただいた、バグの件ですが、仕様です。
~~~
### 表示例
> お世話になります。xxxです。
>
> ご連絡いただいた、バグの件ですが、仕様です。
## 二重引用
### 記述例
~~~md
> お世話になります。xxxです。
>
> ご連絡いただいた、バグの件ですが、仕様です。
>> お世話になります。 yyyです。
>>
>> あの新機能バグってるっすね
~~~
### 表示例
> お世話になります。xxxです。
>
> ご連絡いただいた、バグの件ですが、仕様です。
>> お世話になります。 yyyです。
>>
>> あの新機能バグってるっすね
## pre記法(スペース4 or タブ)
半角スペース4個もしくはタブで、コードブロックをpre表示できます
### 記述例
~~~md
# Tab
class Hoge
def hoge
print 'hoge'
end
end
---
# Space
class Hoge
def hoge
print 'hoge'
end
end
~~~
### 表示例
class Hoge
def hoge
print 'hoge'
end
end
---
class Hoge
def hoge
print 'hoge'
end
end
## code記法
バッククォートで文字列を囲むことでコードの一部を表示可能です。
### 記述例
~~~md
インストールコマンドは `gem install hoge` です
~~~
### 表示例
インストールコマンドは `gem install hoge` です
## 強調:<em>
アスタリスクもしくはアンダースコア1個で文字列を囲むことで強調します。
見た目は斜体になります。
### 記述例
~~~md
normal *italic* normal
normal _italic_ normal
~~~
### 表示例
normal *italic* normal
normal _italic_ normal
## 強調:<strong>
アスタリスクもしくはアンダースコア2個で文字列を囲むことで強調にします。
見た目は太字になります。
### 記述例
~~~md
normal **bold** normal
normal __bold__ normal
~~~
### 表示例
normal **bold** normal
normal __bold__ normal
## 強調:<em> + <strong>
アスタリスクもしくはアンダースコア3個で文字列を囲むことで <em> と <strong> による強調を両方適用します。
見た目は斜体かつ太字になります。
### 記述例
~~~md
normal ***bold*** normal
normal ___bold___ normal
~~~
### 表示例
normal ***bold*** normal
normal ___bold___ normal
### 訂正
これは ~~訂正~~ です。
## 水平線
アンダースコア、アスタリスク、ハイフンなどを3つ以上連続して記述することで水平線を表示します。
※連続するハイフンなどの間にはスペースがあっても良い
### 記述例
~~~markdown
***
___
---
* * *
~~~
### 表示例
***
___
---
* * *
## リンク
`[表示文字](リンクURL)`形式でリンクを記述できます
~~~md
[Google先生](https://www.google.co.jp/)
~~~
[Google先生](https://www.google.co.jp/)
## 定義参照リンク
Markdownの文書の途中に長いリンクを記述したくない場合は、
同じリンクの参照を何度も利用する場合は、リンク先への参照を定義することができます。
~~~markdown
[こっちからgoogle][google]
その他の文章
[こっちからもgoogle][google]
[google]: https://www.google.co.jp/
~~~
[こっちからgoogle][google]
その他の文章
[こっちからもgoogle][google]
[google]: https://www.google.co.jp/
## GitHub Flavored Markdown(GFM)
GitHub Flavored Markdown(GFM)はGitHubの独自仕様を加えたMarkdown記法。
以降、GFMと記載します。
## GFM:リンクテキスト簡易記法
URLは記述するだけで自動的にリンクになります。
### 記述例
~~~md
https://www.google.co.jp/
~~~
### 表示例
https://www.google.co.jp/
## GFM:取り消し線
チルダ2個で文字列を囲むことで取り消し線を利用できます。
### 記述例
~~~md
~~取り消し線~~
~~~
### 表示例
~~取り消し線~~
## GFM:pre記法(チルダ×3)
### 記述例
```md
~~~
class Hoge
def hoge
print 'hoge'
end
end
~~~
```
### 表示例
~~~
class Hoge
def hoge
print 'hoge'
end
end
~~~
## GFM:pre記法(バッククォート×3)
### 記述例
~~~md
```
class Hoge
def hoge
print 'hoge'
end
end
```
~~~
### 表示例
```
class Hoge
def hoge
print 'hoge'
end
end
```
## GFM:pre記法(シンタックスハイライト)
チルダ、もしくはバッククォート3つの後ろに対象シンタックスの言語名を記述します。
### 記述例
```md
~~~ruby
class Hoge
def hoge
print 'hoge'
end
end
~~~
```
### 表示例
~~~ruby
class Hoge
def hoge
print 'hoge'
end
end
~~~
## GFM:表組み
### 記述例
~~~md
|header1|header2|header3|
|:--|--:|:--:|
|align left|align right|align center|
|a|b|c|
~~~
### 表示例
|header1|header2|header3|
|:--|--:|:--:|
|align left|align right|align center|
|a|b|c|
## GFM:ページ内リンク
GitHubのMarkdownを利用すると、見出し記法を利用した際に
アンカーが自動的に作成されます。
そのアンカーを利用したページ内リンクを簡単に作成できます。
~~~md
## menu
* [to header1](#header1)
* [to header2](#header2)
<!-- some long code -->
[return to menu](#menu)
### header1
### header2
~~~
少し省略してますが、こんなかんじのHTMLになります。
~~~html
<h2><a name="user-content-menu" href="#menu">menu</a></h2>
<a href="#header1">to header1</a>
<a href="#header2">to header2</a>
<!-- some long code -->
<a href="#menu">to menu</a>
<h3><a name="user-content-header1" href="#header1">header1</a></h3>
<h3><a name="user-content-header2" href="#header2">header2</a></h3>
~~~
## 表
| TH(左寄) | TH(中央) | TH(右寄) |
| :---- | :----: | --: |
| TD | TD<br>改行します | TD |
| TD | TD | TD |
## 添付ファイル

## 水平線
---
******
## 注釈 [NG!]
この引用は[^1]
[^1]: 〇〇を参照しています。と注釈を入れられる。
## PlantUML記法 [NG!]
```uml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
```
~~~uml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
~~~
## 数式 [NG!]
```math
x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a}
```
## 参照
[QiitaでのMarkdownの使用について](http://qiita.com/Qiita/items/c686397e4a0f4f11683d)
[Qiitaの目次生成機能について](http://blog.qiita.com/post/77055935852/qiita-toc)
せっかくなので、直接pdfファイルを出力してみた。
$pandoc kiho.md -s -o hoge.pdf --pdf-engine=wkhtmltopdf
Loading page (1/2)
Printing pages (2/2)
Done
PixelのLinuxターミナルでもpdfファイルを出力してみた。chromebookで作成したものと少し違っているところもある(例. 表の横罫線がPixelはあるがchromebookはない)。利用にあたっては各環境での動作確認をしたうえで行ってほしい。
