繁体   English   中英

Newcommand挂断LaTeX编译

[英]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}不会发生此问题。

好吧,我发现了一个类似的问题,在这里报告:

https://tex.stackexchange.com/questions/25597/wrapping-code-listings-verbatim-or-other-method-inside-a-newcommand

似乎不可能做我想要的事情,因为\\ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM