TL;DR
-
Markdown Preview Enhanced
でコードチャンクを使うと、tikz
などの図を表示することができる。 - Windowsなら
pdf2svg+texlive
をインストールし、PATHを通す(再起動も必要だった)。1 - 日本語を含まないパスにする。
-
latex {cmd=true}
にlatex_zoom=xx
やlatex_width=xx
、latex_height=xx
を追加する。
概要
Markdown Preview Enhanced は、VSCode で Markdown ファイルをプレビューするすごい拡張機能です。
マークダウンの文中で
$$
\begin{equation}
\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_i}\right) - \frac{\partial L}{\partial q_i} = 0
\end{equation}
$$
のように書くと、以下のように表示できます。
$$
\begin{equation}
\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}_i}\right) - \frac{\partial L}{\partial q_i} = 0
\end{equation}
$$
しかし、この状態ではmathjax
のみが動くため、tikz
などの図を表示することができません。
そこで、Markdown Preview Enhanced
の設定から、markdown-preview-enhanced.enableScriptExecution": true
として次のコードチャンクを追加します。
> ```latex {cmd=true}
> \documentclass{standalone}
> \begin{document}
> Hello world!
> \end{document}
> ```
(ただし、左端の>
は不要です。)
するとプレビュー画面でコードにマウスを持っていくと実行ボタンが現れ、しばらく待つとTexのコードが画像に変換されて表示されるはずです。
しかし、うまくいきませんでした。
エラーの解決
まず、次のようなエラーが出ました。
'pdf2svg' �́A�����R�}���h�܂��͊O���R�}���h�A
����\�ȃv���O�����܂��̓o�b�` �t�@�C���Ƃ��ĔF������Ă��܂���B
これはおそらくpdf2svg
が存在しないことを表しています。
ここを参考にして、pdf2svg
をインストールしPATHを通してください。(PATHを通したあとパソコンの再起動をしないと反映されませんでした。(なぜ?))
次に、このようなエラーが出ました。
Unable to open file
この場合、マークダウンファイルのパスに日本語が含まれている可能性があります。日本語を含まないパスに変更してください。
次に、このようなエラーが出ました。
EntryNotFound (FileSystemError): Error: ENOENT: no such file or directory, open <filepath>
この場合、latex {cmd=true}
にlatex_zoom=xx
やlatex_width=xx
、latex_height=xx
を追加してください。1
これで晴れて、図を表示することができます。
> ```latex {cmd=true, latex_zoom=300%, hide=true}
> \documentclass{standalone}
> \usepackage{tikz}
> \begin{document}
> \begin{tikzpicture}[samples=100]
> \draw[->,>=stealth,semithick] (-0.3,0)--(2,0) node[right]{$x$};
> \draw[->,>=stealth,semithick] (0,-0.3)--(0,3) node[above]{$y$};
> \draw (0,0) node[below left]{O};
>
> % 過剰和を赤色、不足和を青色で示す
> \foreach \x in {0.0, 0.2, ..., 1.6}
> \filldraw[fill=red!20] (\x,0) rectangle (\x+0.2,{max(\x*\x,(\x+0.2)*(\x+0.2))});
>
> \foreach \x in {0.0, 0.2, ..., 1.6}
> \filldraw[fill=blue!20] (\x,0) rectangle (\x+0.2,{min(\x*\x,(\x+0.2)*(\x+0.2))});
>
> \draw[domain=-0.3:1.85] plot(\x,{\x*\x});
> \end{tikzpicture}
> \end{document}
> ```
のように書くと、次のように表示されます。