はじめに
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. リスト項目1
2. リスト項目2
3. リスト項目3
- リスト項目1
- リスト項目2
- リスト項目3
順序なしリスト(箇条書きリスト)
順序なしリストはハイフン(-)、アスタリスク(*)、プラス記号(+)のいずれかで記述できる。
- リスト項目1
- リスト項目2
- リスト項目3
リスト項目はインデント(半角スペース4つ)で入れ子にできる。
1. 親リスト項目1
- 子リスト項目1
- 子リスト項目2
2. 親リスト項目2
- 子リスト項目1
- 孫リスト項目1
- 親リスト項目1
- 親リスト項目2
タスクリスト
Markdownエディタによっては、タスクリストに対応している場合がある。
- [x] タスク1(完了)
- [ ] タスク2(未完了)
- [ ] タスク3(未完了)
定義リスト
Markdownエディタによっては、定義リストに対応している場合がある。
用語1
: 用語1の説明
用語2
: 用語2の説明
- 用語1
-
用語1の説明
- 用語2
-
用語2の説明
リンクと画像
リンクは[表示テキスト](URL)の形式で記述する。
[リンクテキスト](https://example.com)
[リンクテキスト](https://example.com "タイトルテキスト")
タイトルテキストはブラウザのツールチップとして表示される。
画像はの形式で記述する。


引用
引用を作成するには、各行の先頭に>を付ける。
> これは引用されたテキストです
> これは2行目の引用です
これは引用されたテキストです これは2行目の引用です
引用を入れ子にすることもできる。
> 外側の引用
>> 内側の引用
>>> さらに深い引用
外側の引用 > 内側の引用 >> さらに深い引用
引用内でMarkdownを使うこともできる。
> これは**太字**のテキストと*斜体*のテキストを含む引用です
>
> 1. 番号付きリスト
> 2. もう一つの項目
>
> ```python
> 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>
変換
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 で整形する。
$ 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
|