如何使使用 newtcblisting 创建的环境与使用 minted 环境创建的环境行为相同?

如何使使用 newtcblisting 创建的环境与使用 minted 环境创建的环境行为相同?

我已经在这样的类文件中声明了一个新的环境(完整的文件存在这里):

\renewcommand{\theFancyVerbLine}{\parbox{10pt}{\centering\footnotesize\arabic{FancyVerbLine}}}

\newtcblisting{codebox}[2]{
    listing only,
    listing engine=minted,
    minted language=#2,
    breakable,
    enhanced,
    colback=white,
    coltitle=black,
    colbacktitle=white,
    top=0pt,
    bottom=0pt,
    sharp corners,
    title=\textbf{#1:},
    minted options = {
        linenos,
        breaklines,
        escapeinside=||,
        xleftmargin=10pt,
    },
    overlay={%
        \begin{tcbclipinterior}
            \draw [line width=1pt] (frame.north west) rectangle ([xshift=18pt]frame.south west);
        \end{tcbclipinterior}
    }}

\BeforeBeginEnvironment{codebox}{\vspace*{-18pt}}

但是当我在主 tex 文件中使用此环境时,如下所示:

\documentclass{ipu-c}

\begin{document}
    \begin{codebox}{Program}{c}
#include <stdio.h>

int main() {
    printf("Hello, World!");
    return 0;
}
    \end{codebox}
    \begin{codebox}{Output}{text}
Hello, World!
    \end{codebox}
\end{document}

我的 IDE(带有 TeXiFy IDEA 的 PyCharm)一直向我尖叫,好像环境中的代码codebox是乳胶代码并试图将其格式化为乳胶代码,但当我使用 minted 环境时不会发生这种情况。我对此有两个问题:

  • 如何修复此问题,以便我的 IDE 将其识别为逐字环境(或任何由 minted 创建的环境类型)?
  • 另外,是否可以通过tcolorbox或删除添加的尾随换行符minted,如下图所示(我已经在 minted 中尝试了 stripnl 和 stripall 选项,但它们不起作用):乳胶输出

更新:我尝试了autogobbleminted 中的选项,它确实解决了第 2 点中的问题,但我认为它做的比我想要的要多得多,除了前导和尾随换行符之外,我不希望它触及任何其他东西。

更新 2:第 1 点中的问题似乎与 texify idea 插件本身有关,确保环境名称以“code”结尾似乎可以解决该问题。

相关内容