# Markdown

## 導入：Markdownとは

markdownはテキストでメモ書きするための取り決めです．目次はこう書きましょう，リストはこう書きましょうというルール集だと言え，windows標準のメモ帳でも書けるので導入しやすい優しさがあります．markdown自体は記述ルールですが，便利なソフトウェアが開発されており，きれいに表示することができますのでメモに限らず短い文書にも使えます．GitHub, Qiitaなど様々なサービスもあり，高度なエコシステムが構築されています．

覚えることも少なく役に立つので,txt拡張子を多用している人はぜひmd拡張子に乗り換えましょう！ちなみにこのWebサイトはmarkdownで記載したファイルを静的なHTMLへ変換することで，コンテンツをmarkdownで書けるようにしています．このページのmdファイルは[こちら](./md/others/markdown.md)にあります (md拡張子で開き方がわからなければメモ帳にドラッグアンドドロップ！もしくはTyporaをインストール！)．

記法はmarked，Typoraで扱えるものを想定し，おそらくMarkdownの方言の一種であるGitHub Flavored Markdownにほぼ準拠しているように思います．

## Markdown記法

### 目次: ファイルの始まりは`#`

文書=ファイルの1行目に`# タイトル` (#の後は半角スペースを入れる) とタイトルを書きます．`##`で章のタイトル，`###`でさらに小さい区切りの節のタイトルを書きます．`#`の数を増やせばさらに小さく区切れますが，いくつまで対応しているかはわかりません．markdownで長い文書は書かない方が良いので，多くても4つ`####`までにしておくのが良いように思います．

```markdown
# タイトル

## 章立て1

### 節1-1

### 節1-2

## 章立て2

### 節2-1
```

のような感じで構成します．タイトル行の前後は空白行を入れるルールがあるようです．

### 段落は一行開ける

```markdown
第１段落はこれ

第２段落がこれ
```

とすれば，

第１段落はこれ

第２段落がこれ

のように段落が区切られます．

```markdown
第１段落はこれ
第２段落がこれ
```

のように詰めると，

第１段落はこれ
第２段落がこれ

と，**基本的には**改行が無視されます．基本外が多くあり，Typoraは`<br>`の改行タグ扱いします．

### リストは`*`と`1.`！番号は自動で増える！

階層にすることもでき，
```markdown
* 1つめ
  - itm1-1
  - itm1-2
    1. a
    2. b
    3. c
* 2つめ

1. 1つめ
b
  1. 1-1
  1. 1-2
  1. 1-3
1. 2つめ
a
  - itm1-1
  - itm1-1
  - itm1-2
1. 3つめ
aa
```

は

* 1つめ
  - itm1-1
  - itm1-2
    1. a
    2. b
    3. c
* 2つめ

1. 1つめ
b
  1. 1-1
  1. 1-2
  1. 1-3
1. 2つめ
a
  - itm1-1
  - itm1-1
  - itm1-2
1. 3つめ
aa

のように，ビューワを使えば表示されます．`1.` (番号は好きなもので良い) とすれば勝手に表示番号が調整されます．`*`記号と`-`記号はどちらでも構いませんが，階層を見やすくするために，階層ごとに交互に使うのが良いのではないでしょうか．

#### 空白行を含むリスト

各項目が長文になったりした場合の処理のため，少しだけ扱いが異なります．`<p>`タグが挿入されます．markdown考案者のサイトかどこかに説明がありましたが，結構実装にばらつきがあるようで，環境に左右さます．

```markdown
1. 1つめ
b

  1. 1-1
  1. 1-2
  1. 1-3
1. 2つめ
a
  - itm1-1
  - itm1-1
  - itm1-2
1. 3つめ
aa
```

は

1. 1つめ
b

  1. 1-1
  1. 1-2
  1. 1-3
1. 2つめ
a
  - itm1-1
  - itm1-1
  - itm1-2
1. 3つめ
aa



### 強調は`*`か`**`で囲む！`~~`で打ち消し線

*abc*とか**あいう**のようになります．`*`は斜体ですが，日本語ではほとんど使わないでしょうね．アンダーラインは・・・ありません！`<u>文字</u>`と<u>htmlタグ</u>で書いてください．打ち消し線などは~~確か~~あります．`~~`で囲んでください．

### コードは｀=Shift+@で囲む．複数行は｀｀｀

行内なら｀code｀と書き，`code`と表示されます．

```markdown
｀｀｀Python
print("hoge")
print("hoge")
print("hoge")
print("hoge")
｀｀｀
```

と書くと (表示の都合上囲み文字を全角にしています)，

```Python
print("hoge")
print("hoge")
print("hoge")
print("hoge")
```

こうなります．一行目のPythonと書いているのは，コードの種類を指定するもので，Syntax highlight つまり色付けをしてくれる場合がありますので忘れないように書いておきましょう．

### リンクと画像

`[markdown](markdown.md)`と書けば[markdown](markdown.md)と表示されます．`[表示文字](url)`です．

画像も似たような書き方で表示できます．`![画像が表示されない時の文字](url)`大きさ調整をしたい場合はhtmlのimgタグを使えば良いようです．その他にも記法はあると思いますが，他は解説サイトを見てください．

### 表を書く

```markdown
| 項目１ | 項目２ |
| :---  | :---  |
| あ | い |
| う | え |
```

と書けば，

| 項目１ | 項目２ |
| ---  | ---  |
| あ | い     |
| う | え |


と表示されます．2行目の`-`は一つ以上あれば良いようです．1行目の説明欄は必須．`:---`は左寄せ，`:---:`は中寄せ，`---:`は右寄せと，align指定ができます．

### 横線を引く

`---`と書けば，

---

のように引かれます．

### コメント（非表示文）を書きたい

Markdown自体にはコメント機能はありません．一応htmlで`<!-- 表示されない -->`とすることも可能です．

### いざとなったらhtmlタグを直接書ける

markdownのビューワでは，htmlへの変換を通してきれいな表示を実現します．htmlタグはそのままhtmlとして扱われます．推奨されてはいないかもしれませんが，markdownはかしこまったものでない文書を書く目的が主なので，臨機応変に対応したら良いのではないでしょうか．

### 特殊記法は避けた方が良い

章立てをまとめて表示したりするTOC機能などの拡張を提供しているソフトがありますが，複数の環境で閲覧することを想定すると綺麗に表示されない場合が多くあるので，基本記法だけで記載するのが良いように思います．無法状態にならないようにしましょう．

### とは言いつつも数式は使いましょう！

数式はおそらく標準ではありませんが，かなり多くのソフトウェアで対応していますし，書けないと不便ですのでぜひ覚えて使いましょう．`$`や`$$`で囲んだ部分にLatex数式で書きますが，詳細は追って書きます．

状態量を$x\in \mathbb{R}^n$とした運動方程式
$$
\dot{x} := \frac{dx}{dt} = f(x)
$$
について考えましょう．のように書けます．きれいに表示されると気持ちいいですね．本サイトではMathJaxで表示しています．ver 3.0からかなり表示が早くなったとの噂で，確かに早い．

## おすすめmarkdownエディタ

* [Obsidian](https://obsidian.md/)
* [MarkText](https://www.marktext.cc/) 
* [Typora](https://typora.io/)
が閲覧，編集におすすめです．
