设置 minted 和 tcolorbox 以包含源代码和设置标题时出现问题

设置 minted 和 tcolorbox 以包含源代码和设置标题时出现问题

对于我的博士论文,我使用minted软件包来列出源代码。我想有一个自定义命令,\mylisting类似于

\mylisting[Name in title]{filename of source code}

或 \mylisting{Hello world}{hello_world.java}

我尝试阅读tcolorbox手册,而最接近的就是以下无法正常工作的简单示例:

\documentclass{article}
\usepackage[most,minted]{tcolorbox}
\newtcbinputlisting{\mylisting}[2][]{%
    listing engine=minted,minted language=java,minted style=colorful,
    listing file={#2},
    title=Listing (\thetcbcounter) of #2,
listing only,breakable,#1}

\begin{document}
\section{Test}

\mylisting[Hello world]{hello_world.java}  % problematic line!!
\mylisting{Hello world}{hello_world.java}  % problematic line!! 

\end{document}

但由于我对 TeX 缺乏了解,这失败了并产生了很多错误。我发现甚至很难从位于hello_world.java与 .txt 文件同一目录中的文件中包含源代码mnwe

public class HelloWorld {
    // A 'Hello World' in Java
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

这可能是什么问题?我该如何解决?

答案1

代码有两个问题

  1. 可选参数只是作为一般参数传递tcolorbox。但是,它似乎被用作标题参数,因此#1不应直接写出,而应作为选项的值title
  2. title=Listing (\thetcbcounter) of #2实际上使用第二个参数(文件名)作为标题。示例中的文件名包含下划线_,这具有特殊含义。

在评论中,你希望

\newtcbinputlisting{\mylisting}[2][]{%
  listing engine=minted, minted language=java, minted style=colorful,
  listing file={#2}, listing only,
  title={#1},
  breakable}

你的 MWE 现在给出了

在此处输入图片描述

如预期的。

相关内容