1

LaTeX for の新しいコマンドの定義に問題があります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 と of の開始と終了が最初にlstlisting新しいコマンドで定義されることです。たとえば、では問題が発生しますが、では発生しlstlistingません。\begin{center}

4

1 に答える 1

0

さて、私はここで報告された同様の問題を見つけました:

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

\begin{lstlisting} のコンパイルは対応する \end{lstlisting} を検索する必要があり、新しいコマンドがそれを壊すため、私が望むことを行うことはできないようです。

ただし、たとえば次のように使用して、新しい lst 環境を定義しても同じ結果が得られます。

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

例えば。これにより、コード セクションの多くのプロパティを定義することが可能になり、構文が簡単になります (\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 !
}}{}

于 2016-03-22T19:50:54.570 に答える