清单:破折号的过度使用

清单:破折号的过度使用

-在我的语言中,我在三种不同的语境中使用破折号字符。

  1. 作为操作员,例如5 - 1
  2. 作为减号,例如-10
  3. 作为关键字的一部分,例如some-keyword

我想让每件物品都有不同的风格。可以吗?

我迄今已尝试过什么。让我从最简单的最小例子开始。

\documentclass{article}

\usepackage{listings}
\usepackage{xcolor}

\lstdefinelanguage{MyLang}{
keywords={},
otherkeywords={+,-}, % operators
morekeywords=[2]{akeyword, other-keyword}, % keywords
}

\lstset{
  keywordstyle=\color{magenta}, % operators
  keywordstyle=[2]{\color{violet}}, % keywords
  language=MyLang
}

\begin{document}

\begin{lstlisting}
5 - 1 + -10   akeyword   some-keyword
\end{lstlisting}

\end{document}

这会导致所有破折号都被设置为运算符。但是,我希望第二个破折号呈现为黑色,第三个破折号呈现为紫色。请注意,包含破折号的关键字根本无法识别。

幼稚的

对于减号,我找到了一种使用literate选项的解决方法listings。例如,通过添加literate={_}{\textminus}1,到语言定义,我可以将示例程序重写为5 - 1 + _10 akeyword some-keyword以下内容。

解决方法

当然,这并不理想,因为我必须手动用下划线替换每个减号,但就我而言,我认为这是可以接受的。不过,如果有解决方案,那就加分了。:)

对于关键字,我理解为这个答案添加alsoletter=-,应该可以解决问题,但这似乎不起作用。

答案1

通过使用被视为alsoletter={-}字母-。这样,像-1(或任何数字)这样的内容就变成了未知关键字,因此不会突出显示为单个关键字。此外,这样它就可以用在您想要定义的另一个关键字中间morekeywords

\documentclass{article}

\usepackage{listings}
\usepackage{xcolor}

\lstdefinelanguage{MyLang}{
alsoletter={-},
keywords={-}, % operators
otherkeywords={+},
keywords=[2]{akeyword,some-keyword}, % keywords
}

\lstset{
  keywordstyle=[1]\color{magenta}, % operators
  keywordstyle=[2]{\color{violet}}, % keywords
  language=MyLang
}

\begin{document}

\begin{lstlisting}
5 - 1 + -10   akeyword   some-keyword
\end{lstlisting}

\end{document}

警告: 在5-1-不会突出显示为二元运算符(需要空格)。

输出:

在此处输入图片描述

相关内容