我需要在 LaTeX 中突出显示包含参数行及其值的文件的语法。假设我有以下文件:
# some comment
parameter1 = value of parameter1
parameter2 = some another value
# and so on ...
是否可以用三种颜色来着色:一种用于注释,一种用于参数名称,一种用于其值?
答案1
如果有人感兴趣的话,这里有一个 ConTeXt 解决方案。vim模块使用 vim 编辑器提供语法高亮,它支持大量语言,因此无需创建自己的解析样式。
\usemodule[vim]
\definevimtyping[INI][syntax=dosini]
\starttext
\startINI
# some comment
parameter1 = value of parameter1
parameter2 = some another value
# and so on ...
\stopINI
\stoptext
这使
vim 模块自动缓存结果,因此不会造成明显的性能损失。
答案2
为了给你一个起点,我制作了以下 MWE 来展示包的可能性listings
。第一个例子展示了如何在包中使用现有的语言listings
,第二个例子展示了如何定义一种新的语言username
与包一起使用listings
来突出显示代码。
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor,showframe}
\lstdefinestyle{ConfigFiles}{% define own style
language={[LaTeX]TeX},
basicstyle=\small\ttfamily,
linewidth=0.9\linewidth,
breaklines=true,
keywordstyle=\color{blue}\bfseries,
identifierstyle=\color{magenta},
commentstyle=\color{cyan},
backgroundcolor=\color{yellow!10},
tabsize=2,
morekeywords = {parameter},
}
\lstdefinelanguage{username}{% new language for listings
morekeywords={parameter1,parameter2,wert},
sensitive=false,
morecomment=[l]{\#}, % comment
morestring=[b]", % string def
}
\begin{document}
First example with \texttt{lstlisting} and language \LaTeX:
\begin{lstlisting}[style=ConfigFiles]
% File name.tex
\documentclass{article}
\usepackage{listings}
\lstdefinestyle{ConfigFiles}{
language={[LaTeX]TeX}, % comment
keywordstyle=\color{blue}, % comment
basicstyle=\small\ttfamily,
tabsize=2,
parameter=wert,
morekeywords = {parameter},
}
\begin{document} % comment
Text "text" text % comment
\end{document}
\end{lstlisting}
Second example with new language \texttt{username}:
\begin{lstlisting}[language={username},keywordstyle=\color{blue},stringstyle=\color{green}]
# some comment
parameter1 = value of parameter1
parameter2 = some another value
parameter3 = wert
# and so on "and so on" ...
\end{lstlisting}
\end{document}