noteでKaTeX数式を書く時の注意点と改善してほしい点(随時更新)
どうも.コジです.
3週間毎日noteに7000字程度の記事を投稿してみて,何となく使い勝手が分かってきました.まとめ記事を載せることができるだけでなく,つぶやき機能はTwitter上では(TL汚しをしてしまうため)やりにくい長文の投稿をしやすい(しかもタグ付きで!)UIなのも魅力ですね.
さて,今回は,使い始めに原因が分からずストレスを感じたエラーとその対策を,備忘録もかねてまとめて行きたいと思います.
また,俺が知らないだけかもしれませんが,対策のしようがない改善してほしい点も載せていきます.
(もしその解決方法を知っていたら,コメントにて教えていただければ幸いです.)
1.全角・半角のエラー
この画面で文字を打っていると,変換のアンダーラインが表示されないことがあります.そのうえ,半角・全角が似ている文字が多いものが多いです.
例えば,+と+,=と=など,並べてみれば違いが分かるかもしれませんが,雑多なコードの中では見分けは難しいです.
コレの何が問題なのかというと,気づかずに\を¥と打ってしまうことがあります.¥が含まれていると一発アウトでエラーです.
他のサービスでも数式を入力していたりすると,この違いに気づけなくて一生間違い探しする羽目になります.
(そもそも自動プレビューがあれば良い話なのですがね.)
2.ディスプレイ数式のエラー①
次の数式をご覧ください.
$$
\begin{aligned}
\boldsymbol a \times (\boldsymbol b \times\boldsymbol c)
& = \varepsilon_{ijk}a_j(\varepsilon_{ki'j'}b_{i'}c_{j'})\\
& = \varepsilon_{ijk}\varepsilon_{i'j'k}a_{j}b_{i'}c_{j'}\\
& = (\delta_{ii'}\delta_{jj'}-\delta_{i'j}\delta_{ij'})a_{j}b_{i'}c_{j'}\\
& = \delta_{ii'}\delta_{jj'}a_{j}b_{i'}c_{j'} - \delta_{i'j}\delta_{ij'}a_{j}b_{i'}c_{j'}\\
& = b_{i}a_{j}c_j - c_ia_{j}b_{j}\\
& = \boldsymbol b(\boldsymbol a \cdot \boldsymbol c) - \boldsymbol c(\boldsymbol a \cdot \boldsymbol b).
\end{aligned}
$$
と言っても,エラーで見えていないはずです.
本来であれば以下のように表示されます.
$$
\begin{aligned}
\boldsymbol a \times (\boldsymbol b \times\boldsymbol c)
& = \varepsilon_{ijk}a_j(\varepsilon_{ki'j'}b_{i'}c_{j'})\\
& = \varepsilon_{ijk}\varepsilon_{i'j'k}a_{j}b_{i'}c_{j'}\\
& = (\delta_{ii'}\delta_{jj'}-\delta_{i'j}\delta_{ij'})a_{j}b_{i'}c_{j'}\\
& = \delta_{ii'}\delta_{jj'}a_{j}b_{i'}c_{j'} - \delta_{i'j}\delta_{ij'}a_{j}b_{i'}c_{j'}\\
& = b_{i}a_{j}c_j - c_ia_{j}b_{j}\\
& = \boldsymbol b(\boldsymbol a \cdot \boldsymbol c) - \boldsymbol c(\boldsymbol a \cdot \boldsymbol b).
\end{aligned}
$$
下書きで確認するとこのようになっています.
これは,コードを見やすくするため改行した際に数式が2つのブロックに分かれてしまったことで起こっています.二回連続で改行を押すと起こりがちです.クリックすると図1のように数式が同一ブロックに入っていないことが分かります.
プレビューでエラーが起こったときはまずコードのミスよりコレを疑いましょう.(合っているコードを無限に確認していても無駄なので.)
俺はこの対策として,数式の中にできるだけ改行を入れないようにしています.見栄えは悪いですが,原因不明のエラーにイライラするよりはマシなので.(そもそも自動プレビューがあれば良い話なのですがね!!)
3.ディスプレイ数式のエラー②
さて,①を踏まえて次の数式をご覧ください.
$$
\begin{aligned}
(\boldsymbol a \times\boldsymbol b)\cdot(\boldsymbol a' \times\boldsymbol b')
& = \varepsilon_{ijk}a_jb_k \ \varepsilon_{ij'k'} a'_{j'}b'_{k'}\\
& = \varepsilon_{jki}\varepsilon_{j'k'i}a_jb_ka'_{j'}b'_{k'}\\
& = (\delta_{jj'}\delta_{kk'} - \delta_{j'k}\delta_{jk'})a_jb_ka'_{j'}b'_{k'}\\
& = \delta_{jj'}\delta_{kk'}a_jb_ka'_{j'}b'_{k'} - \delta_{j'k}\delta_{jk'}a_jb_ka'_{j'}b'_{k'}\\
& = a_ja'_{j}b_kb'_{k} - a'_kb_ka_{j}b'_{j}\\
& = (\boldsymbol a \cdot\boldsymbol a')(\boldsymbol b \cdot\boldsymbol b')
- (\boldsymbol a' \cdot\boldsymbol b)(\boldsymbol a \cdot\boldsymbol b')
\end{aligned}
$$
①と同じエラーでないことを主張するため,敢えて改行を消去しています.
とは言っても,これまたエラーで見えていないはずです.
本来であれば以下のように表示されます.
$$
\begin{aligned}
(\boldsymbol a \times\boldsymbol b)\cdot(\boldsymbol a' \times\boldsymbol b')
& = \varepsilon_{ijk}a_jb_k \ \varepsilon_{ij'k'} a'_{j'}b'_{k'}\\
& = \varepsilon_{jki}\varepsilon_{j'k'i}a_jb_ka'_{j'}b'_{k'}\\
& = (\delta_{jj'}\delta_{kk'} - \delta_{j'k}\delta_{jk'})a_jb_ka'_{j'}b'_{k'}\\
& = \delta_{jj'}\delta_{kk'}a_jb_ka'_{j'}b'_{k'} - \delta_{j'k}\delta_{jk'}a_jb_ka'_{j'}b'_{k'}\\
& = a_ja'_{j}b_kb'_{k} - a'_kb_ka_{j}b'_{j}\\
& = (\boldsymbol a \cdot\boldsymbol a')(\boldsymbol b \cdot\boldsymbol b')
- (\boldsymbol a' \cdot\boldsymbol b)(\boldsymbol a \cdot\boldsymbol b')
\end{aligned}
$$
下書きで確認するとこのようになっています.
改行もないし,数式も同一のブロックに入っていることが確認できると思います.どこが原因か分かりますか?
正解は,
.
.
.
正解は,最初の「さて,①を踏まえて次の数式をご覧ください.」という一文が数式と同ブロックに入っているからです.
特に,数式を入力し終え,文章を書く際にマジで起こりやすいんです.
対策としては,数式を入力し終えたらEnterを2回打ち,新しいブロックにする癖をつけましょう.
一番タチが悪いのは次のエラーです.
$$
\begin{aligned}
(\boldsymbol a \times\boldsymbol b)\cdot(\boldsymbol a' \times\boldsymbol b')
& = \varepsilon_{ijk}a_jb_k \ \varepsilon_{ij'k'} a'_{j'}b'_{k'}\\
& = \varepsilon_{jki}\varepsilon_{j'k'i}a_jb_ka'_{j'}b'_{k'}\\
& = (\delta_{jj'}\delta_{kk'} - \delta_{j'k}\delta_{jk'})a_jb_ka'_{j'}b'_{k'}\\
& = \delta_{jj'}\delta_{kk'}a_jb_ka'_{j'}b'_{k'} - \delta_{j'k}\delta_{jk'}a_jb_ka'_{j'}b'_{k'}\\
& = a_ja'_{j}b_kb'_{k} - a'_kb_ka_{j}b'_{j}\\
& = (\boldsymbol a \cdot\boldsymbol a')(\boldsymbol b \cdot\boldsymbol b')
- (\boldsymbol a' \cdot\boldsymbol b)(\boldsymbol a \cdot\boldsymbol b')
\end{aligned}
$$
下書きで確認するとこのようになっています.
今までのエラーを踏まえて,どこがおかしいか分かりますか?
正解は,
.
.
.
ブロックの$$(本文)$$の外に空白が入ってしまっていることで起こっています.(理不尽)
何度も言いますが,プレビューでエラーが起こったときはまずコードのミスよりコレを疑いましょう.(合っているコードを無限に確認していても無駄なので.)
対策のしようはあまりないと思います.誤タイプした空白は見えないのでどうしようもありません.
コードを確認する前に数式本文をコピーしておいて,ブロックを作り直すことを推奨します.
(そもそも自動プレビューがあれば良い話なのですがね!!!!!!)
4.まとめ
以上をまとめると,エラーを未然に防ぐための対策は,
数式の中にできるだけ改行を入れないようにする.
数式打ち終えたらEnterを2回押す癖をつける.
エラーが起こった際は,
①が起こってないか検証する.
②が起こってないか検証する.(本文をコピーして,エラーを消して,新しくブロックを作り,$$ $$にペーストする 等.)
ここで初めて,コードのミスを検証する.
という手順をとると良いと思います.
(そもそも自動プレビューがあれば良い話なのですがね!!!!!!!!)
5.改善してほしい点
ここまでであれば,大抵のエラーは上記の工夫で避けられます.ですが,手の施し様(利用してきた3週間のうちでは気づけなかった)がなく,ストレスを感じる点がいくつかあるので,列挙していきたいと思います.
(もしこの中の問題の改善方法知っていたら是非教えて下さい.)
$${\KaTeX}$$じゃなく$${\LaTeX}$$にしてほしい:単純に使いづらい.
使ったタグを一覧から引き継げるようにしてほしい:本文に載せておけば読み取ってくれるが,毎回入力する必要があるし,そうするとタグと重複して見栄えが悪い.
ノートを複製したときに画像も引き継がれるようにしてほしい:別バージョンを作ってちょっと修正して見比べたいときなどでも画像を張りなおす必要がある.
ctrl+yが機能しないことがある.
変換のアンダーラインが表示されないことがある.それか全角半角見分けが付きやすいフォントにして欲しい.
箇条書き・数字リストにインデントや数字の変更をできるようにしてほしい.(この文章自体もリストで改行できないから非常に見にくい!!)
なぜかiOS環境だと\alignや\align*の番号が全部$${(1)}$$になる.
ここからは完全に私怨なのですが
本文で何度も何度も何度も!!!!言っているが,画面の右半分に自動プレビュー機能を付けてほしい.
いちいちプレビュー表示してはエラー探しプレビュー閉じ,プレビュー表示してはエラー探しプレビュー閉じの繰り返しで作業効率が悪すぎます.
そのうえ,上のエラーを知らない者はそれの修正にも苦労します(そもそも自動プレビューがあれば修正や発見に苦労しないエラー).たまに言うこと訊かない小窓のプレビューではなく,ちゃんとした自動プレビュー機能を画面の右半分にでもつけてほしいです.そうしてくれたら効率が上がり一日に沢山の記事が書けるので,noteの記事数や社会に貢献ができます.
ま,数式ユーザーそんなにいないので,公式が動いてはくれるとは思いませんがね.
6.教えて下さい
最後に,このマガジン(ペケとジマの複素解析)だけ,2個目がデカくなっているのですが,直し方を知っている方いましたらコメントで教えて下さい.
(他のマガジンはこのようになっていません.)