Markdown

2025年9月15日

はじめに

Markdownは、テキストベースの軽量マークアップ言語で、簡単な構文で書式付きのドキュメントを作成できる。HTMLのような複雑なタグを使わずに、見出し、リスト、リンクなどの基本的な書式を記述できる。Markdownという名前には、HTMLのような複雑なマークアップ(Markup)言語よりも単純という意味が込められている。

Markdownには標準機能と拡張機能がある。Markdownの拡張子は.mdが一般的である。

Markdownエディタ

ここではMarkdownエディタとして Remarkable を用いる。Ubuntu 22.04 LTS を想定する。

$ sudo apt install ./remarkable_1.95.deb
N: ファイル '/home/penguin/remarkable_1.95.deb' がユーザ '_apt' からアクセスできないため、ダウンロードは root でサンドボックスを通さずに行われます。 - pkgAcquire::Run (13: 許可がありません)

なんかエラーが出たので、個別に入れる。

$ sudo dpkg -i remarkable_1.95.deb

見出し

Markdownの見出しは、1~6段階の階層構造を持つことができ、以下のように記述する。

# 見出し1(最上位レベル)
## 見出し2(2段階目)
### 見出し3(3段階目)
#### 見出し4(4段階目)
##### 見出し5(5段階目)
###### 見出し6(最下位レベル)

# の数で階層を表現する。なお、単に # 自体を1文字目に書きたい場合は \# と書く。

水平線

水平線は3つ以上のアスタリスク(***)、ハイフン(---)、アンダースコア(___)を使用して作成できる。

# セクション1

このテキストはセクション1の内容です。

---

# セクション2

このテキストはセクション2の内容です。

段落

普通の文章は普通に書けばよい。

普通の文章は普通に書けばよい。

段落を区切るには、空行を入れる。

段落1

段落2

文字の装飾

太字

**太字** または __太字__

太字 または 太字

斜体

*斜体* または _斜体_

斜体 または 斜体

太字+斜体

***太字+斜体*** または ___太字+斜体___ または **_太字+斜体_** または __*太字+斜体*__

太字+斜体 または 太字+斜体 または 太字+斜体 または 太字+斜体

打消線

~~打消線~~

打消線

リスト

順序付きリスト(番号付きリスト)

順序付きリストは数字とドット(.)で記述する。

1. リスト項目1
2. リスト項目2
3. リスト項目3
  1. リスト項目1
  2. リスト項目2
  3. リスト項目3

順序なしリスト(箇条書きリスト)

順序なしリストはハイフン(-)、アスタリスク(*)、プラス記号(+)のいずれかで記述できる。

- リスト項目1
- リスト項目2
- リスト項目3
  • リスト項目1
  • リスト項目2
  • リスト項目3

リスト項目はインデント(半角スペース4つ)で入れ子にできる。

1. 親リスト項目1
    - 子リスト項目1
    - 子リスト項目2
2. 親リスト項目2
    - 子リスト項目1
        - 孫リスト項目1
  1. 親リスト項目1
    • 子リスト項目1
    • 子リスト項目2
  2. 親リスト項目2
    • 子リスト項目1
      • 孫リスト項目1

タスクリスト

Markdownエディタによっては、タスクリストに対応している場合がある。

- [x] タスク1(完了)
- [ ] タスク2(未完了)
- [ ] タスク3(未完了)

定義リスト

Markdownエディタによっては、定義リストに対応している場合がある。

用語1
: 用語1の説明

用語2
: 用語2の説明
用語1
用語1の説明
用語2
用語2の説明

リンクと画像

リンクは[表示テキスト](URL)の形式で記述する。

[リンクテキスト](https://example.com)
[リンクテキスト](https://example.com "タイトルテキスト")

タイトルテキストはブラウザのツールチップとして表示される。

画像は![代替テキスト](画像URL)の形式で記述する。

![代替テキスト](https://example.com/image.jpg)
![代替テキスト](https://example.com/image.jpg "タイトルテキスト")

引用

引用を作成するには、各行の先頭に>を付ける。

> これは引用されたテキストです
> これは2行目の引用です

これは引用されたテキストです これは2行目の引用です

引用を入れ子にすることもできる。

> 外側の引用
>> 内側の引用
>>> さらに深い引用

外側の引用 > 内側の引用 >> さらに深い引用

引用内でMarkdownを使うこともできる。

> これは**太字**のテキストと*斜体*のテキストを含む引用です
>
> 1. 番号付きリスト
> 2. もう一つの項目
>
> ```python
> print("コードブロック")
> ``` 

これは太字のテキストと斜体のテキストを含む引用です

  1. 番号付きリスト
  2. もう一つの項目
print("コードブロック")

コード

コードを記述する方法には、インラインコードとコードブロックの2種類がある。どちらもバッククォート(`)を使用する。

これは `print("Hello")` のようなコードを埋め込む方法です。

これは print("Hello") のようなコードを埋め込む方法です。

コードブロックの場合、開始はバッククォート3つ(```)で行い、開始のバッククォート3つの後ろにシンタックスハイライトのための言語名(例:python)を記述できる。

```python
def hello():
    print("Hello, World!")
```
def hello():
    print("Hello, World!")

インデントもコードブロックとして認識される。ただし、言語の指定はできない。

    def hello():
        print("Hello, World!")
def hello():
    print("Hello, World!")

表

Markdownエディタによっては、表の作成に対応しているものがある。

| 列1のヘッダー | 列2のヘッダー | 列3のヘッダー |
|---------------|---------------|---------------|
| セル1         | セル2         | セル3         |
| セル4         | セル5         | セル6         |
| セル7         | セル8         | セル9         |
列1のヘッダー 列2のヘッダー 列3のヘッダー
セル1 セル2 セル3
セル4 セル5 セル6
セル7 セル8 セル9

数式

Markdownエディタによっては、数式の記述に対応しているものがある。数式はLaTeX形式で表現する。

インラインの数式は$E = mc^2$というように書く。

インラインの数式は\(E = mc^2\)というように書く。

$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$

\[ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} \]

HTMLタグ

大抵の場合、HTMLタグも受け付けるようになっている。

<ul>
<li>リスト項目1</li>
<li>リスト項目2</li>
<li>リスト項目3</li>
</li>
  • リスト項目1
  • リスト項目2
  • リスト項目3

変換

HTML

Remarkableであれば、HTMLなどに出力できる (PDFの出力もできることになっているが、うまくいかなかった)。

pandocを使う方法もある。

$ sudo apt install pandoc
$ pandoc input.md -o output.html --mathjax -r markdown-auto_identifiers

HTMLが使えるということは、HTMLのコメントも入れられるということだが、このコメントを取り除きたい場合は--strip-commentsを用いる。

HTMLが少し雑なのが気になるなら、tidy で整形する。

$ sudo apt install tidy
$ pandoc input.md -o tmp.html --mathjax -r markdown-auto_identifiers
$ cat tmp.html | tidy -indent -wrap 0 -quiet -xml - > output.html

まあ、気にしないことにしたほうが早いかもしれない。

PDF

PDF化するには、以下のようにする(texliveが入っているものとする)。

$ pandoc input.md -o output.tex -s -r markdown-auto_identifiers --pdf-engine=lualatex --highlight-style=tango
$ ptex2pdf -l -u output.tex

ただ、これだとコードブロックの1行が長いとはみ出るので、折り返しを入れる( 参考)。ヘッダーファイルを作る。

% header.tex
\usepackage{fvextra}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{%
  breaklines,%
  commandchars=\\\{\},%
  fontsize=\small%
}

pandoc実行時にヘッダーを指定する。

$ pandoc input.md -o output.tex -s -r markdown-auto_identifiers --pdf-engine=lualatex -V documentclass=jlreq --highlight-style=tango --include-in-header=header.tex
$ ptex2pdf -l -u output.tex