hack のためのネタ帳, etc,,,

状況

LaTeX でマークシート形式の試験問題を作問しているのだが、python のコードを minted 環境に貼る際、以下のような感じで escapeinside を使って回答用の空欄を埋め込むと、それ以降のシンタックスハイライトが腐る。
\begin{minted}[fontsize=\small,escapeinside=@@]{python}
print(@\qfbox{?}@)
\end{minted}

調査

Microsoft Copilot に「VisualStudioCode で LaTeX のソースを編集する際、minted で escapeinside=@@ を理解してくれないらしく syntax highlighting が腐るんだけど、何か方法はない?」って聞いてみた結果は以下。 Visual Studio Code の構文解析は静的なので無理って話で、以下の issue が参照されていた。 「vscode の文法は純粋に静的なので escapeinside に対応する方法はない」って言い切ってて、問答無用に issue close されてる始末。

"visual studio code" latex minted escapeinside」でググってみたが、こちらの耳寄りな情報はなし。

解法

とりあえず、上記の通り、現時点では根本的な解決策はないという話。
対処療法としては、上記 vscode の issue を vscode-latex-basics の方に立て直した以下の issue
で紹介されてる minted 抜けた後で、\if 0 で無効化した終端を食わせて構文解析を誤魔化す方法。
\begin{minted}[fontsize=\small,escapeinside=@@]{python}
print(@\qfbox{?}@)
\end{minted}
\if 0
)
\end{minted}
\fi
結果はこんな感じ


別解としては、minted 環境の部分(\begin{minted} 〜 \end{minted} まで)を丸ごと別ファイル(例えば hoge.py.tex 等)に切り出してしまう方法もある。
その場合、以下のように \input{} で include させる。
\input{hoge.py.tex}

当初、\include{} で include させると、余分な改行や改ページが入ってレイアウトが乱れて困ったのだが、これは Copilot が \input{} 使うといいよと教えてくれた。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます