答案1
发生这种情况的原因是 Bash 词法分析器重新定义了反斜杠的 catcode\
以处理 shell 转义序列。这意味着它不能在 escapeinside 序列中用于启动命令。
幸运的是,可以通过以下方法解决:其他字符处于活动状态并使用 csname 定义它以激活其参数。至关重要的是,所选字符不会出现在您的 minted 代码中的其他任何地方。对于此示例,我使用问号?
。当调用命令时,例如\textrm{arg}
,您将改为调用?{textrm}{arg}
,将问号替换为您选择的字符。
\begingroup
用/将整个内容括起来很重要,\endgroup
以确保 catcode 重新定义不会影响文档的其余部分。
\documentclass{article}
\usepackage{minted}
\begin{document}
\begingroup
% REPLACE THE ? WITH YOUR CHOSEN CHARACTER ON BOTH OF THE FOLLOWING LINES
\catcode`\?=\active
\def?#1{\csname #1\endcsname}
\begin{minted}[escapeinside=||]{bash}
#!/bin/bash
echo "Hello world!"
|?{textrm}{Some commentary here}|
\end{minted}
\endgroup
\end{document}