Skip to content

拡張機能

数式

数式を使うことができます.いくつか設定が必要になります.まず、javascriptファイルを用意します.ここでは docs/js/mathjax.js とします.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
window.MathJax = {
  tex: {
    inlineMath: [["\\(", "\\)"]],
    displayMath: [["\\[", "\\]"]],
    processEscapes: true,
    processEnvironments: true
  },
  options: {
    ignoreHtmlClass: ".*|",
    processHtmlClass: "arithmatex"
  }
};

document$.subscribe(() => {
  MathJax.typesetPromise()
})

次にmkdocs.ymlでjavascriptファイルを追加します.

1
2
3
4
extra_javascript: 
  - js/mathjax.js
  - https://polyfill.io/v3/polyfill.min.js?features=es6
  - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js

そして、数式拡張機能を有効にします.

1
2
3
markdown_extensions:
  - pymdownx.arithmatex:
      generic: true

これで設定完了です.数式は、ブロックの場合 $$...$$\[...\]、インラインの場合 $...$ や '\(...\)' とします.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$$
P\cdot Q = \|P\|\|Q\|\cos\alpha \tag{1}
$$

\[
P\cdot Q = \|P\|\|Q\|\cos\alpha
\]

てすと $P\cdot Q = \|P\|\|Q\|\cos\alpha$.

$$
\text{$a=1$}
$$

\[
\begin{cases}
a = 1 && \text{$a=1$} \\[2ex]
b = 0 && \text{if $a=0$}
\end{cases}
\]

$$
\begin{cases}
a = 1 && a=1 \\[2ex]
v = 0 && \text{if $a=0$}
\end{cases}
$$

$$
aaaa
$$
\[ P\cdot Q = \|P\|\|Q\|\cos\alpha \tag{1} \]
\[ P\cdot Q = \|P\|\|Q\|\cos\alpha \]

てすと \(P\cdot Q = \|P\|\|Q\|\cos\alpha\)

\[ \text{$a=1$} \]
\[ \begin{cases} a = 1 && \text{$a=1$} \\[2ex] b = 0 && \text{if $a=0$} \end{cases} \]
\[ \begin{cases} a = 1 && a=1 \\[2ex] v = 0 && \text{if $a=0$} \end{cases} \]
\[ aaaa \]

注釈

1
2
markdown_extensions:
  - admonition

注釈は次のように使います.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
!!! Note
    これはノートです。

!!! Tip
    ヒントです。

!!! Warning
    これは警告です。

!!! Danger
    これは危険です

!!! Success
    これは成功です。

!!! Failure
    これは失敗です。

!!! Bug
    これはバグです。

!!! summary
    これは概要です。

Note

これはノートです。

Tip

ヒントです。

Warning

これは警告です。

Danger

これは危険です

Success

これは成功です。

Failure

これは失敗です。

Bug

これはバグです。

Summary

これは概要です。

詳細ブロック

注釈拡張機能に似ていますが、こちらは折り畳みブロックです.

1
2
markdown_extensions:
  - pymdownx.details

次の用に使います.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
??? Note
    これはノートです。

??? Tip
    ヒントです。

??? Warning
    これは警告です。

??? Danger
    これは危険です

??? Success
    これは成功です。

??? Failure
    これは失敗です。

??? Bug
    これはバグです。

??? summary
    これは概要です。
Note

これはノートです。

Tip

ヒントです。

Warning

これは警告です。

Danger

これは危険です

Success

これは成功です。

Failure

これは失敗です。

Bug

これはバグです。

Summary

これは概要です。

定義リスト

1
2
markdown_extensions:
  - def_list

定義リストは次のように使います.

1
2
定義語
:   ここに説明を書きます
定義語
ここに説明を書きます

脚注

1
2
markdown_extensions:
  - footnotes

脚注は次のように使います.

1
2
3
4
Mkdocs とは静的サイトジェネレータです。
コンテンツは基本的に markdown[^1] 形式で記述したソースファイルになります。

[^1]: 文書を記述するための軽量マークアップ言語のひとつ

Mkdocs とは静的サイトジェネレータです。 コンテンツは基本的に markdown1 形式で記述したソースファイルになります。

アイコンと絵文字

ドキュメント中にアイコンや絵文字を使うことができます.アイコンには以下のものが使えます.

有効にするためには、次のようにします.

1
2
3
4
5
markdown_extensions:
  - attr_list
  - pymdownx.emoji:
      emoji_index: !!python/name:materialx.emoji.twemoji
      emoji_generator: !!python/name:materialx.emoji.to_svg
1
2
3
4
5
:material-at: 
:woman_gesturing_no:
:simple-dogecoin:
:fontawesome-regular-face-laugh-wink:
:octicons-link-external-16: [MkDocs](http://www.mkdocs.org/)

🙅‍♀️ MkDocs

絵文字は次のように使います.

1
ここに \:smile: と記述すると :smile: になります

ここに :smile: と記述すると 😄 になります

特殊シンボル

1
2
markdown_extensions:
  -  pymdownx.smartsymbols
  • (tm) : ™
  • (c) : ©
  • (r) : ®
  • c/o : ℅
  • +/- : ±
  • --> : →
  • <-- : ←
  • <--> : ↔
  • =/= : ≠
  • 1.4, etc. : 1.4, etc.
  • 1st 2nd etc. : 1st 2nd etc.

キーボードキー表示

PCでのキーボード操作を説明するときにキーコードを解りやすく装飾してくれる拡張機能です。ただし、material テーマのみ使えます。使用するには拡張機能リストに pymdownx.keys を追加します。

1
2
markdown_extensions:
  - pymdownx.keys

++ctrl+alt+delete++ と記述すると Ctrl+Alt+Del と表示されます。

コードハイライト

1
2
3
4
5
6
markdown_extensions:
  - pymdownx.highlight:
      use_pygments: true
      noclasses: true
      pygments_style: monokai
      linenums: true
1
2
3
4
#include <iostream>
void main() {
  std::cout << "Hello world!" << std::endl;
}

コード番号の表示をブロックごとに変えたい場合は linenums を使います.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 ```c++ linenums="1"
 #include <iostream>
 void main() {
   std::cout << "Hello world!" << std::endl;
 }
 ```
 ```c++ linenums="0"
 #include <iostream>
 void main() {
   std::cout << "Hello world!" << std::endl;
 }
 ```
1
2
3
4
#include <iostream>
void main() {
  std::cout << "Hello world!" << std::endl;
}
#include <iostream>
void main() {
  std::cout << "Hello world!" << std::endl;
}

また、個別に行をハイライト表示できます.hl_linesで行を指定します.

1
2
3
4
#include <iostream>
void main() {
  std::cout << "Hello world!" << std::endl;
}

Warning

use_classesと相性が悪いようです.

コードフェンス

さまざまなブロックをネストして使用できるようになります.

1
2
markdown_extensions:
  - pymdownx.superfences

コードフェンスを使えば次のような書き方ができます.

1
2
3
4
5
6
7
!!! Note
    ここは注釈ブロックです.

    ```yml
    markdown_extensions:
      - pymdownx.superfences
    ```

Note

ここは注釈ブロックです.

1
2
markdown_extensions:
  - pymdownx.superfences

また、コードフェンスの機能を使ってMermaidで作図できます.

1
2
3
4
5
6
markdown_extensions:
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: !!python/name:pymdownx.superfences.fence_code_format

次のように使います.

1
2
3
4
5
6
graph LR
  A[Start] --> B{Error?};
  B -->|Yes| C[Hmm...];
  C --> D[Debug];
  D --> B;
  B ---->|No| E[Yay!];
graph LR
  A[Start] --> B{Error?};
  B -->|Yes| C[Hmm...];
  C --> D[Debug];
  D --> B;
  B ---->|No| E[Yay!];
1
2
3
4
5
6
7
8
9
sequenceDiagram
  Alice->>John: Hello John, how are you?
  loop Healthcheck
      John->>John: Fight against hypochondria
  end
  Note right of John: Rational thoughts!
  John-->>Alice: Great!
  John->>Bob: How about you?
  Bob-->>John: Jolly good!
sequenceDiagram
  Alice->>John: Hello John, how are you?
  loop Healthcheck
      John->>John: Fight against hypochondria
  end
  Note right of John: Rational thoughts!
  John-->>Alice: Great!
  John->>Bob: How about you?
  Bob-->>John: Jolly good!

タスクリスト

1
2
3
4
markdown_extensions:
  - pymdownx.tasklist:
      custom_checkbox: true
      clickable_checkbox: true

custom_checkboxを有効にするとチェックボックスの見た目が良くなります(推奨らしいです).clickable_checkboxを有効にするとクリックで切り替えられるようになります(どこかに保存されるわけではないのでページを再読み込みすればリセットされます).

1
2
3
4
5
6
- [x] Lorem ipsum dolor sit amet, consectetur adipiscing elit
- [ ] Vestibulum convallis sit amet nisi a tincidunt
    * [x] In hac habitasse platea dictumst
    * [x] In scelerisque nibh non dolor mollis congue sed et metus
    * [ ] Praesent sed risus massa
- [ ] Aenean pretium efficitur erat, donec pharetra, ligula non scelerisque
  • Lorem ipsum dolor sit amet, consectetur adipiscing elit
  • Vestibulum convallis sit amet nisi a tincidunt
    • In hac habitasse platea dictumst
    • In scelerisque nibh non dolor mollis congue sed et metus
    • Praesent sed risus massa
  • Aenean pretium efficitur erat, donec pharetra, ligula non scelerisque

タブブロック

ドキュメント内でタブがついたブロックを作ることができます.

1
2
3
markdown_extensions:
  - pymdownx.tabbed:
      alternate_style: true

次のように使います.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
=== "Unordered list"

    * Sed sagittis eleifend rutrum
    * Donec vitae suscipit est
    * Nulla tempor lobortis orci

=== "Ordered list"

    1. Sed sagittis eleifend rutrum
    2. Donec vitae suscipit est
    3. Nulla tempor lobortis orci
  • Sed sagittis eleifend rutrum
  • Donec vitae suscipit est
  • Nulla tempor lobortis orci
  1. Sed sagittis eleifend rutrum
  2. Donec vitae suscipit est
  3. Nulla tempor lobortis orci

ボタン

1
2
markdown_extensions:
  - attr_list

次のように使います.

1
[Subscribe to our newsletter](#){ .md-button }

Subscribe to our newsletter

1
[Subscribe to our newsletter](#){ .md-button .md-button--primary }

Subscribe to our newsletter


  1. 文書を記述するための軽量マークアップ言語のひとつ