在我的 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}
,包实际上定义了两个新环境,即foo
和foo*
。
前者不接受任何选项,而后者则需要一个强制参数(在括号中)并minted
评估其他选项,这是我在上面的代码中利用的功能。