「Qiita, Zenn, note, Jupyter」で数式を簡単に入力するためのツール

## はじめに

Qiita、Zenn、note、Jupyter Labなどでは、LaTeXのコマンドを使用して数式を入力することができます。
今回、これらのサイトで使用できる、ペースターのカスタムメニューを作成したので、ご紹介します。

![2023-03-28_09h41_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/d205bbbe-8617-305c-1fe3-a17b26308e41.png)

ペースターは、Windows用のフリーソフトで「定型文の入力」と「クリップボード履歴の管理」が行えます。下記のサイトからダウンロードできます。

公式サイト：[オータムソフト](https://autumn-soft.github.io)
カスタムメニュー：[各種のカスタムメニュー](https://autumn-soft.github.io/paster.htm#custom_menu)

## 使用方法

### ペースターを使用したことがない方

まだ、ペースターというソフトについてまったく知らない方は、ペースターに付属している**HTMLヘルプ**や**以前公開した下記の記事**を参考にしてみてください。

[Pythonのコードを簡単に入力するためのツール](https://qiita.com/autumn_nsn/items/af762f69f381815cdea2)

### 基本的な使い方

上の画像を見て頂ければ分かると思いますが、基本的には入力したい数式項目をポップアップメニューから選択するだけです。
QiitaでもZennでもnoteでもJupyterでも同じ要領で入力できます。

なお、説明の都合上、この記事ではテキストエディターに貼り付けていますが、実際にはQiitaやZennの文書作成画面で入力します。

ペースターに数式入力用のメニューファイル（MathBasic.txt）を登録して、呼び出し用のキーストロークを設定します。私は[Ctrl]+[Alt]+[E]キーを設定しました。
[Ctrl]+[Alt]+[M]キーは、ペースターのメニュー項目作成用のカスタムメニューで昔から使用しているため、できれば避けてください。

今回作成したメニューファイルは「MathBasic.txt」と「MathTemplate.txt」の２つですが、「MathTemplate.txt」は上記の画像のポップアップメニューの下の方にある「よく使用する数式のテンプレート」を選択すると自動的に呼び出されます。
（「MathTemplate.txt」の方は、はペースターに登録する必要はありません）

ユーザーによって、よく使用する数式のジャンルというのがあると思いますので、各自で自由に作成できるようにテンプレートは別ファイルに分離してあります。
「C++のinclude, Pythonのimport」などに相当する機能です。

![2023-03-27_13h16_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/7ba8064e-14d9-5d8e-7420-67fda3aa5b69.png)

### 数式モードに切り替える

はじめに、「数式モード」メニューの中から該当のサイトに対応した数式モード用の書式を入力します。後は、そのブロックの中に入力したい数式の要素を入力していくだけです。

![2023-03-27_15h29_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/339a65ae-9fb7-35b2-91e9-7587a4f8bf67.png)

### テキスト修飾のタグ

今回のメニューでは、**テキスト修飾のタグ**という機能を多用しています。
これは、テキストエディター上で選択されているテキストに対して、ペースターで加工を行うものです。例えば、「a + b + c」というテキストを選択しておいて、下記のようなメニュー項目を実行すると、いったんクリップボードに切り取られてから「\\{a + b + c\\}」のようなテキストが貼り付きます。

**テキスト修飾のタグを使用しているメニュー項目には、目印として先頭に「[■]」のように表示してあります。**

![2023-03-27_13h32_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/91f4a9c7-e8d5-aa07-25e5-9cef2d122713.png)
下記のように加工されます。
![2023-03-27_13h33_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/19745037-1916-dbe5-a0b1-5af654452485.png)

また、対象となるテキストをまだ入力していない場合には、何も選択していない状態で、上記のメニュー項目を**右クリック**で実行します。
すると、下記のように前後の修飾部分だけが貼り付いて、キャレットが自動的に入力位置に移動します。

![2023-03-27_13h40_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/c500a722-f691-2d0c-127f-a42287e67208.png)

テキスト修飾では、前後のテキストを自由に指定することができます。
例えば、前の部分に「\mathrm{」、後ろの部分に「}」のように指定することができます。

### ユーザー指定のタグ（ウィザード形式）

また、今回のメニューでは使用頻度は少ないですが、ウィザード形式のダイアログを使用して入力する項目もあります。「空白や高さ調節の支柱」－「支柱を入れる（\rule）」コマンドを実行すると、下記のようなダイアログが表示されます。

![2023-03-27_13h49_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/a30e8b8b-3247-422a-fa08-35dac221a945.png)
必要な項目を入力すると、キャレット位置に指定の書式で貼り付きます。
![2023-03-27_13h50_40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/d672684f-7b23-5487-b2f6-bf252f3367d9.png)
メニューファイルでデフォルト値を指定しておくことができるので、その値でよければ[Enter]キーで簡単に次のフィールドを移動していくことができます。

## 数式のサンプル

今回作成した数式用のメニューから貼り付けた数式をいくつか紹介します。


```math
\begin{align*} % "*"は数式番号なし
  f(x) &= (a + b)^3 \\
   &= a^3 + 3a^2b + 3ab^2 + b^3
\end{align*} \\

A = a_1 + \cfrac{1}{a_2 + 
          \cfrac{1}{a_3 + 
          \cfrac{1}{a_4 + \cdots}}} \\

\boldsymbol{v} = \begin{pmatrix}
  a_1 \\
  a_2 \\
  \vdots \\
  a_n
\end{pmatrix} \\[15mm]

A = \begin{bmatrix}
  a & b \\
  c & d
\end{bmatrix}  \\[15mm]

\begin{array}{c|c|c|c|c|c|c|c}
  x & \cdots & -1 & \cdots & 1 & \cdots & 3 & \cdots \\ \hline
  f'(x)  & + & 0 & – & - & - & 0 & + \\ \hline
  f''(x) & - & - & – & 0 & + & + & + \\ \hline
  f(x)   & {}^{\circ} \!\!\! \nearrow & 3 & {\searrow}^{\!\! \circ} 
         & 1 & {}_{\circ} \!\!\! \searrow & 4 & {\nearrow}_{\!\! \circ}
\end{array} \\[15mm]

\displaystyle \int_{0}^{\infty} f(x)\, dx \\
\displaystyle \lim_{n \to \infty} f(x) \\[10mm]

\color{blue}{f(x) = 
\begin{cases}
  x^2 - 1  & (x \geqq 0) \\
  -x       & (x < 0)
\end{cases}}  \\[15mm]

A = \begin{pmatrix}
      a_{ 11 } & a_{ 12 } & \ldots & a_{ 1n } \\
      a_{ 21 } & a_{ 22 } & \ldots & a_{ 2n } \\
      \vdots & \vdots & \ddots & \vdots \\
      a_{ m1 } & a_{ m2 } & \ldots & a_{ mn }
    \end{pmatrix} \\

```



## 注意事項１

**Qiitaのサイト**では、インライン数式（\\$ ～ \\$）の中では、「\\{, \\\\, ...」のように「\」の後に記号が続くものは、Markdownのエスケープと衝突してしまいます。
この場合には、「\\\\{, \\\\\\\\」のように入力します。別行立ての数式では大丈夫です。


## 注意事項２

**noteのサイト**では、「\\{, \\\\, ...」のように「\」の後に記号が続くものをクリップボードから（ペースターから）貼り付けると、先頭の「\」が自動的に削除（エスケープ処理）されてしまいます。
例えば、メニュー項目からarray環境やalign環境のコードを貼り付けると、各行の行末の「\\\\」が「\」のようになってしまいます。このままでは構文エラーになってしまいます。
**QiitaやZennなどではこのようなことはないので、noteのこの仕様は正直辛いです。**

noteをよく利用する場合には、note専用のカスタムメニューを用意した方がいいかもしれません。この場合、メニューファイルには「\\\\{, \\\\\\\\, ...」のように記述します。
なお、「\frac」のように「\」の後にアルファベットが続く場合は大丈夫です。

また、noteでは色の指定はできないようです。

## 注意事項３

今回作成した数式用のメニュー項目では、ポップアップメニューにギリシャ文字（大文字のイタリック）を表示するためにUnicodeの追加多言語面（サロゲート領域）の文字を使用しています。（𝛤、𝛥など）
サロゲート領域の文字に対応していないテキストエディターで今回のメニューファイルを編集すると、これらの文字が正しく表示されないかもしれません。
**ペースターでは「Ver7.30」からサロゲート文字のメニュー表示に対応しています。**

![2023-03-27_14h43_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/262544/efde28e2-9eb6-4ba1-959f-babb9415ea11.png)

## 終わりに

以上、簡単ではありますが「数式用のカスタムメニュー」の紹介をさせて頂きました。
普段からよく数式を入力している方はLaTeXのコマンドは覚えていると思いますが、私のようにたまにしか使用しない場合には、「長めの両端矢印の記号は何だっけ？　数式の場合分けはどうやるんだっけ？」のようになってしまいます。
そのような場合の補助ツールとして使用してもらえると嬉しいです。

また、「注意事項２」についてはnoteのサイトに連絡してありますので、もし改善されるようなことがありましたら、こちらで報告したいと思います。