
решение1
Это происходит потому, что лексер Bash переопределяет catcode для обратной косой черты \
, чтобы обрабатывать последовательности escape оболочки. Это означает, что его нельзя использовать в последовательности escapeinside для запуска команды.
К счастью, можно обойти эту проблему, сделавдругойактивный символ и определение его с помощью csname для активации его аргумента. Крайне важно, чтобы выбранный символ не встречался больше нигде в вашем коде. Для этого примера я использую вопросительный знак ?
. При вызове команды, например \textrm{arg}
, вместо этого вы вызовете ?{textrm}{arg}
, заменив вопросительный знак выбранным вами символом.
Важно заключить все это в \begingroup
/, \endgroup
чтобы гарантировать, что переопределение кода не повлияет на остальную часть документа.
\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}