![listings-package 自定义语言使用空格作为注释分隔符](https://linux22.com/image/258917/listings-package%20%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94%A8%E7%A9%BA%E6%A0%BC%E4%BD%9C%E4%B8%BA%E6%B3%A8%E9%87%8A%E5%88%86%E9%9A%94%E7%AC%A6.png)
我正在使用 LaTeX 创建自定义语言定义列表该包应该呈现 Java 的 Jar-Manifest 文件(key: value
对),以便人们可以轻松区分key
和value
。
我的方法(“有点老套”,但对我的问题来说没问题)是将空格字符声明为注释的分隔符(就像//
在 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]{\ }