INI(conf)文件的列表样式

INI(conf)文件的列表样式

我正在尝试使用 listings 包为 Windows INI 文件创建一个简单的样式

我想要这样的结果:

  • 紫色 [部分] 标签
  • 红色赋值运算符(= 和 :)
  • 以 (; 或 #) 开头的灰色注释行

以下是 Notepad++ 突出显示的方式。

Windows INI 突出显示

我尝试改编代码这些 答案

到目前为止,我能够实现紫色的 [标签] 和 ; 注释。但我无法使赋值运算符突出显示,也无法使 # 注释正常工作。

\documentclass{article}

\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{listings}

\lstdefinelanguage{Ini}
{
    basicstyle=\ttfamily\small,
    columns=fullflexible,
    tag=[s]{[]},
    tagstyle=\color{Orchid}\bfseries,
    usekeywordsintag=true,
    morecomment=[l]{;},
    commentstyle=\color{gray}\ttfamily,
    alsoletter={=},
    ndkeywords={=},
    ndkeywordstyle=\color{green}\bfseries
}[html]

\title{INI test}
\author{Me}
\begin{document}
   \maketitle
   INI file highlighting test.

    \begin{lstlisting}[language={Ini}]
    ; comment1
    [section1]
    var1 = val1
    var2 = val2

    #comment2
    [section2]
    var1: val1
    var2: val2
    \end{lstlisting}
\end{document}

答案1

我认为实现这一点的最佳方法是避免使用html样式作为基础:

\lstdefinelanguage{Ini}
{
    basicstyle=\ttfamily\small,
    columns=fullflexible,
    morecomment=[s][\color{Orchid}\bfseries]{[}{]},
    morecomment=[l]{\#},
    morecomment=[l]{;},
    commentstyle=\color{gray}\ttfamily,
    morekeywords={},
    otherkeywords={=,:},
    keywordstyle={\color{green}\bfseries}
}

这满足了要求,但不会突出显示 ini 值中的 html。

你的问题是:

  • #不能指定为注释分隔符,除非对其进行转义(它是一个特殊字符)
  • 突出显示符号而不是更改其类别,最好使用otherkeywords(只有morekeywords在先使用时才能使用,因此morekeywords={}输入)
  • 你滥用了tagswhere morecomment,这已经足够了(你也可以使用moredelim

相关内容