2016-03-22 4 views
1

lstlistingのLaTeXで新しいコマンドの定義に問題があります。その結果、コンパイルはエラーメッセージなしでハングします。ちょうど*です。NewcommandがLaTeXコンパイルをハングアップ

これは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} 

をしかし、この1つはない:

\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}では発生しません。

答えて

0

は、まあ、私はここに報告された同様の問題、見つから:

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

を\のコンパイルが{lstlisting}が検索する必要が始まるので、私がやりたいことは不可能であると思われます対応する\ end {lstlisting}とnewcommandsがそれを壊します。例えば

\lstnewenvironment{code}{\lstset{language=[90]Fortran, 
    xleftmargin=1.5cm 
}}{} 

を:

しかしながら、同じ結果が、例えば、使用して、新しいLST環境を定義することができます。次に、コードセクションの多くのプロパティを定義することができ、構文は簡単です(\ begin {code}、\ end {code})。

フルlstnewenvironmentは、私の場合には、次のとおりです。

\lstnewenvironment{code}{\lstset{language=[90]Fortran, 
    basicstyle=\ttfamily, 
    keywordstyle=\color{blue}, 
    commentstyle=\color{gray}, 
    xleftmargin=1.5cm, 
    morecomment=[l]{!\ }% Comment only with space after ! 
}}{}