0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeで圏論をやってみた

0
Last updated at Posted at 2026-04-29

はじめに

気軽に Markdown で知見を共有できるサービスが巷にはあふれています.なかには,LaTex 形式で数式を記述できるものもあります.
ただ,圏論の図式となると数が限られるようですし,まずはローカルの使い慣れた開発環境で記事を書きたい,というニーズもあると思います.

そこで,本記事では下記の環境構成で圏論の図式をかく方法を記述します.(各ソフトウェアのバージョン情報は省略します)

  • エディタ:VSCode 1
    • 拡張機能
      • Markdown Preview Enhanced 2 3
  • 数式描画:MathJax 4
    • 拡張機能
      • XyJax 5 6

(GitHub リポジトリのリンクを追加予定)

環境構築方法

1. VSCode を起動して,拡張機能をインストール

まずは,VSCode を起動しましょう.

VSCode をインストールできていない場合は下記を参照してください.
Setting up Visual Studio Code 7

個人的には,macOS であれば Homebrew,Ubuntu であれば Snap 経由でインストールしています.
また,ターミナルにて対象ディレクトリまで移動して $ code . というコマンドで起動することが多いです.

次に,拡張機能である "Markdown Preview Enhanced" 2 をインストールします.こちらの拡張機能をインストールすることで MathJax の拡張機能を利用できるようになります.

VSCode の拡張機能のインストール方法は下記を参照してください.
Use extensions in Visual Studio Code 8

個人的には,原則として拡張機能をインストールした後は,global では "Disable" にして,ワークスペースごとに "Enable (Workspace)" にしています.

2. 拡張機能の設定

拡張機能の設定をしていきます.

VSCode のワークスペース直下にて,お馴染みの .vscode/settings.json という設定ファイルが存在すれば下記の設定を追加し,無ければファイルを作成します.
※数式のレンダリングに KaTex 9 でなく,MathJax を使うようにします.

.vscode/settings.json
{
+  "markdown-preview-enhanced.mathRenderingOption": "MathJax"
}

行頭の + 記号は不要です.

次に,コマンドパレットを開き,Markdown Preview Enhanced: Open Config Script (Workspace) というコマンドを実行します.

VSCode のコマンドパレットの使い方は下記を参照してください.
Visual Studio Code tips and tricks 10

すると,いくつかのファイルが作成されますが,その中の .crossnote/config.js というファイルを下記のように編集します.
※XyJax(Xy-pic 11 12 という Tex パッケージの MathJax 移植版)5 という MathJax の拡張機能を有効にします.

.crossnote/config.js
({
  katexConfig: {
  "macros": {}
},

  mathjaxConfig: {
  "tex": {
+    packages: {'[+]': ['xypic']}
  },
  "options": {},
  "loader": {
+    load: ['[custom]/xypic.js'],
+    paths: {custom: 'https://cdn.jsdelivr.net/gh/sonoisa/XyJax-v3@3.0.1/build/'}
  }
},

  mermaidConfig: {
  "startOnLoad": false
},
})

行頭の + 記号は不要です.

ここまでの作業で,下記のようなファイル構成になっているはずです.

.
├── .crossnote
│   ├── config.js
│   ├── head.html
│   ├── parser.js
│   └── style.less
└── .vscode
    └── settings.json

3. プレビュー & エクスポート

あとは,お好きなパスに Markdown ファイルを作成して存分に数式を書いてください.
ここでは,例として index.md を用意します.

index.md
index.md
---
puppeteer:
  landscape: false
  format: "A4"
---

# index.md
$$
\begin{xy}
	\xymatrix {
		GF(A) \ar[r]^{GF(f)} & GF(A') \ar[d]^{\eta_{A'}^{-1}} \\
		A \ar[u]^{\eta_A} \ar[d]_{\eta_A} \ar[r]^{f} & A'  \\
		G(FA) \ar[r]_{G(h)} & G(FA') \ar[u]_{\eta_{A'}^{-1}}
	}
\end{xy}
$$

## Definitions
- **_Naturally isomorphic_**
	1. $F, G \in \mathrm{ob}([\mathscr{A}, \mathscr{B}]);\ F \cong G$
		- > $$
			\begin{xy}
				\xymatrix @=4pc {
					\mathscr{A} \rtwocell^{F}_{G}{*[r]{\scriptstyle \alpha}} & \mathscr{B}
				}
			\end{xy}
		$$
	2. $\forall{A \in \mathscr{A}};\ \alpha_A \circ {\alpha_A}^{-1} = 1_{F(A)},\ {\alpha_A}^{-1} \circ \alpha_A = 1_{G(A)}$
		- $$
			\begin{xy}
				\xymatrix {
					F(A) \ar[d]<-.2em>_{\alpha_A} \ar[r]^{F(f)} \ar@(lu, l) []_{1_{F(A)}} & F(A') \ar[d]^{\alpha_{A'}} \\
					G(A) \ar[u]<-.2em>_{{\alpha_A}^{-1}} \ar[r]_{G(f)} \ar@(ld, l) []^{1_{G(A)}} & G(A')
				}
			\end{xy}
		$$

コマンドパレットを開いて,Markdown: Markdown Preview Enhanced: Open Preview というコマンドを実行するとプレビューが開きます.

プレビュー

上記の画像では別ウィンドウで表示していますが,デフォルトでは VSCode 上の別タブとして表示されます.
macOS では Shift + Cmd + V のショートカットが使えます.

プレビュー上で右クリックするとコンテキストメニューが表示されるので,そこから PDF にエクスポートできます.
下記の画像は "Export > Chrome (Puppeteer) > PDF" の順でメニュー選択している様子です.

エクスポート

Chrome を利用して PDF にエクスポートするには,Google Chrome 13 のインストールが必要です.

デフォルトではよくわからないサイズの PDF が出力されますが,Markdown のフロントマターでサイズ指定できます.14

index.md
---
puppeteer:
  landscape: false
  format: "A4"
---

サンプル

(追記予定)
See https://sonoisa.github.io/xyjax/xyjax.html

おわりに

楽しい圏論ライフを!

おまけ

(追記予定)

  1. https://code.visualstudio.com/

  2. https://marketplace.visualstudio.com/items?itemName=shd101wyy.markdown-preview-enhanced 2

  3. https://github.com/shd101wyy/vscode-markdown-preview-enhanced

  4. https://www.mathjax.org/

  5. https://sonoisa.github.io/xyjax-v3/xyjax-v3.html 2

  6. https://github.com/sonoisa/XyJax-v3

  7. https://code.visualstudio.com/docs/setup/setup-overview

  8. https://code.visualstudio.com/docs/getstarted/extensions

  9. https://katex.org/

  10. https://code.visualstudio.com/docs/getstarted/tips-and-tricks#_command-palette

  11. https://ctan.org/pkg/xypic

  12. https://texwiki.texjp.org/?Xy-pic

  13. https://www.google.com/chrome/

  14. https://shd101wyy.github.io/markdown-preview-enhanced/#/ja-jp/puppeteer?id=puppeteer-%e3%81%ae%e8%a8%ad%e5%ae%9a

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?