如何在使用 minted 包时在 json 文件中使用 escapeinside

如何在使用 minted 包时在 json 文件中使用 escapeinside
\documentclass{article}

\usepackage{minted}

\begin{document}

    This is a python
    \begin{minted}[escapeinside=||]{py}
    def f(x):
      y = x|\colorbox{green}{**}|2
      return y
    \end{minted}

    This is a json
    \begin{minted}[escapeinside=||]{json}
      {
        "hello":"world|\colorbox{green}{**}|"
      }
    \end{minted}
\end{document}

遇到一个问题,我在 python 代码中可以显示绿色框,但在 json 代码中却无法显示绿色框。我猜是因为 json 的花括号。我试过了,\{ \}但不起作用。 在此处输入图片描述

还有关于 json 颜色的另一个问题。

    This is a normal json
    \begin{minted}{json}
{
  "hello":"world",
  "hell":"worl",
  "hello1":"world1"
}
    \end{minted}

    This is a json with color problem
    \begin{minted}[escapeinside=||]{json}
{
  "hello":|\colorbox{green}{**}|"world",
  "hell":"worl",
  "hello1":"world1"
}
    \end{minted}

    This is a json with color problem but without green box
    \begin{minted}[escapeinside=||]{json}
{
  "hello":"world",
  "hell":"worl",
  "hello1":"world1"
}
    \end{minted}

注意这三个json的颜色 颜色问题

答案1

铸造的文档说“请注意 escapeinside 在字符串中不起作用。”(第 20 页)。由于"world"是字符串,因此您不能在其中放置任何转义代码。

它确实可以在字符串之外工作。但是,escapeinside 仍然(错误地)导致结尾被突出显示为语法错误。您可以通过在 minted 环境中}重新定义命令来关闭错误的颜色框。\fcolorbox

\documentclass{article}
% from https://tex.stackexchange.com/questions/14166/red-box-drawn-around-question-mark-operator-in-minted-erlang-code
\usepackage{etoolbox}
\AtBeginEnvironment{minted}{%
  \renewcommand{\fcolorbox}[4][]{#4}}

\usepackage{minted}
\begin{document}
    This is a python
    \begin{minted}[escapeinside=||]{py}
    def f(x):
      y = x|\colorbox{green}{**}|2
      return y
    \end{minted}

    This is a json
    \begin{minted}[escapeinside=||]{json}
      {
        "hello":|\colorbox{green}{**}|"world"
      }
    \end{minted}
\end{document}

在此处输入图片描述

相关内容