[英]Newcommand hangs LaTeX compilation
我在LaTeX中为lstlisting
定义新命令时遇到问题。 结果是编译挂起而没有错误消息,只是一个*
。
这挂起了LaTeX编译:
\documentclass[10pt,a4paper,ssfamily]{exam}
\usepackage{listings}
\newcommand{\cs}{\begin{lstlisting}}
\newcommand{\ce}{\end{lstlisting}}
\begin{document}
\cs
program test
! This is a commentary
end program test
\ce
\end{document}
但是这个没有:
\documentclass[10pt,a4paper,ssfamily]{exam}
\usepackage{listings}
\begin{document}
\begin{lstlisting}
program test
! This is a commentary
end program test
\end{lstlisting}
\end{document}
唯一的区别在于,开始和endmargin的和的端lstlisting
在一个新的命令,在第一个地方所定义。 例如,对于lstlisting
会发生此问题,而对于\\begin{center}
不会发生此问题。
好吧,我发现了一个类似的问题,在这里报告:
似乎不可能做我想要的事情,因为\\ begin {lstlisting}的编译需要搜索相应的\\ end {lstlisting}并且new命令会破坏它。
但是,定义新的lst环境可以获得相同的结果,例如:
\\lstnewenvironment{code}{\\lstset{language=[90]Fortran, xleftmargin=1.5cm }}{}
例如。 然后,可以定义代码段的许多属性,并且语法更容易(\\ begin {code},\\ end {code})。
在我的例子中,完整的新环境是:
\\lstnewenvironment{code}{\\lstset{language=[90]Fortran, basicstyle=\\ttfamily, keywordstyle=\\color{blue}, commentstyle=\\color{gray}, xleftmargin=1.5cm, morecomment=[l]{!\\ }% Comment only with space after ! }}{}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.