如何在使用点参数化新创建的环境

如何在使用点参数化新创建的环境

在我的 tex 文件中,我目前有以下针对各种 Java 代码列表的新定义。

\newminted[javacode]{java}{%
    tabsize=4,
    fontsize=\footnotesize,
    xleftmargin=30pt,
    linenos
}

\newminted[javacodeNoLines]{java}{%
    tabsize=4,
    fontsize=\footnotesize,
    xleftmargin=30pt
}

然后我可以做\begin{javacode}\begin{javacodeNoLines}

但是如果我要更改javacode定义中的某些参数,我也必须更改它们javacodeNoLines。两者的唯一区别是前者多了一个选项(linenos)。如果可能的话,我希望只拥有javacodeNoLines并在使用时选择是否传递附加选项。

我尝试了以下操作,但是没有效果。

\begin{javacodeNoLines}{linenos=}
...
\being{javacodeNoLines}[linenos=]

答案1

您可以根据一个来定义“编号行”版本NoLines

\documentclass{article}
\usepackage{minted}

\newminted[javacodeNoLines]{java}{%
    tabsize=4,
    fontsize=\footnotesize,
    xleftmargin=30pt
}

\newenvironment{javacode}
 {\VerbatimEnvironment\begin{javacodeNoLines*}{linenos}}
 {\end{javacodeNoLines*}}

\begin{document}

\begin{javacode}
/* This is a simple Java program. 
   FileName : "HelloWorld.java". */
class HelloWorld 
{ 
    // Your program begins with a call to main(). 
    // Prints "Hello, World" to the terminal window. 
    public static void main(String args[]) 
    { 
        System.out.println("Hello, World"); 
    } 
}
\end{javacode}

\begin{javacodeNoLines}
/* This is a simple Java program. 
   FileName : "HelloWorld.java". */
class HelloWorld 
{ 
    // Your program begins with a call to main(). 
    // Prints "Hello, World" to the terminal window. 
    public static void main(String args[]) 
    { 
        System.out.println("Hello, World"); 
    } 
}
\end{javacodeNoLines}

\end{document}

在此处输入图片描述

当您这样做时\newminted[foo]{language},包实际上定义了两个新环境,即foofoo*

前者不接受任何选项,而后者则需要一个强制参数(在括号中)并minted评估其他选项,这是我在上面的代码中利用的功能。

相关内容