listings-package 自定义语言使用空格作为注释分隔符

listings-package 自定义语言使用空格作为注释分隔符

我正在使用 LaTeX 创建自定义语言定义列表该包应该呈现 Java 的 Jar-Manifest 文件(key: value对),以便人们可以轻松区分keyvalue

我的方法(“有点老套”,但对我的问题来说没问题)是将空格字符声明为注释的分隔符(就像//在 Java 等中一样),并将注释样式设为普通文本,将普通文本(第一个空格之后的所有内容 - 尤其是key:)设为关键字。因此,我甚至可以正确地为多行条目(按照以空格开头的规范)设置样式。全部通过一行语言定义完成。

示例清单文件的一部分

Manifest-Version: 1.0
Bundle-Description: The realization of the context bus on top of Sodapop
 7 as part of the universAAL Middleware (OSGi)

我的语言定义

\lstdefinelanguage{manifest}{
    morecomment=[l] % <-- this is the problem
}

我的问题是:我如何将空格字符声明为注释的分隔符?

使用前面的反斜杠进行转义(如使用#,&或其他 TeX 保留字符时推荐的)不起作用。使用 unicode 表示U+0020和 inputenc 包也不起作用。

编辑:最小工作示例

\documentclass{scrreprt}

\usepackage[utf8]{inputenc}
\usepackage{listings}

\lstdefinelanguage{manifest}{
    morecomment=[l]: % works only for single-line entries, need 'space', not ':'
}

\begin{document}
\begin{lstlisting}[language=manifest, 
    basicstyle=\bfseries, 
    commentstyle=\normalfont]
Manifest-Version: 1.0
Bundle-Description: The realization of the context bus on top of Sodapop
 7 as part of the universAAL Middleware (OSGi)
\end{lstlisting}
\end{document}

答案1

尝试一下单行注释:

morecomment=[l]{\ }

相关内容