Fortran 77:在 LaTeX 中指定多个注释标识符

Fortran 77:在 LaTeX 中指定多个注释标识符

我正在尝试指定我在 Fortran 77 程序中使用的两种注释样式( ac和 a !)。目前,当前程序只识别!而不能识别c。有谁知道如何让 LaTeX 识别两者并将它们着色(红色)?

这是我的 LaTeX 代码(浓缩版):

\documentclass{article}

\usepackage{listings,xcolor}

\lstset{language=[77]fortran,
  showstringspaces=false,
  keywordstyle=\color{blue},
  stringstyle=\color{purple},
  commentstyle=\color{red},
  morecomment=[s]{!}{c},
  breakatwhitespace=false,
}

\begin{document}

\begin{lstlisting}[language=fortran]
    program main
    implicit integer (A-Z)
c   Asking it to calculate
    x = y+1 !The equation
    end program
\end{lstlisting}

\end{document}

在此处输入图片描述

答案1

您没有在列表中选择 Fortran-77 方言。根据语言定义手册,Fortran-90 及更高版本中删除了c和注释,否则可能会引发注释。Fortran 77 版本未定义注释,我相信您的编译器正在将其作为 Fortran-77 的扩展提供。CCONTAINSlisting!

因此,当您选择 时language=[77]fortran,您不会获得!注释,而当您选择 时language=fortran,您不会获得cC注释。但是,当您为单个列表选择一种语言时,它会重新加载该语言的注释规则并覆盖 中的全局设置\listset。因此,在全局中添加缺失的定义并从单个列表中\lstset删除不必要的定义是可行的:language=

\documentclass{article}
\usepackage{libertinus} % Or your font of choice
\usepackage{listings,xcolor}

\lstset{language=[77]Fortran,
  showstringspaces=false,
  keywordstyle=\color{blue},
  stringstyle=\color{purple},
  commentstyle=\color{red},
  breakatwhitespace=false,
  morecomment=[l]!
}

\begin{document}

\begin{lstlisting}
    program main
    implicit integer (A-Z)
c   Asking it to calculate
    x = y+1 !The equation
    end program
\end{lstlisting}

\end{document}

上市样本

加载语言后添加缺失的注释样式也是如此。请注意,在选项中,任何包含括号的设置都必须用大括号括起来。

\begin{lstlisting}[language={[77]fortran},
                   morecomment={[l]!}]

您应该这样做,如果您混合使用不同语言的列表,则删除morecomment=中的行,并且不应在所有列表中开始注释。如果您必须经常这样做,您可以定义自己的环境来包装它。\lstset!

理论上,您还可以为 Fortran-77 定义自己的 Fortran 列表自定义方言,并使用 Fortran-90 注释。

答案2

您的morecomment设置表明评论以 开头!并以 结尾c。请改为这样做。

morecomment=[l]{!}

C已被定义为 fortran77 样式中的注释,因此您不需要声明它。

所有这些都未经测试。

相关内容