我想添加一些关键词

我想添加一些关键词

我想添加一些关键词

我想添加一些 C 语言的关键字,但遇到了困难。我想添加的关键字有、、、bool等。我希望这些关键字仅适用于 C 语言。simdomprestrict

直接编辑样式

我想将这些“更新”到文档序言中的语言样式定义中,但似乎没有一个很好的界面来实现这一点。我当前的解决方案是直接调整设置,
/usr/local/texlive/2019/texmf-dist/tex/latex/listings/lstlang1.sty
我将它们添加到ANSI C第 251 行左右的定义中,方法是将这些添加到和中,morekeywords例如otherkeywords

\lst@definelanguage[ANSI]{C}{%
morekeywords={auto,break,...etc...,volatile,while,omp,simd,restrict},%
otherkeywords={\#pragma},% <-- Added to catch indented #pragma
...
}

这给出了所需的输出

在此处输入图片描述

为了

\documentclass{article}
\usepackage{listings}
\begin{document}
\begin{lstlisting}[language=C]
#pragma omp simd
void foo(int * restrict a, int n, int n_simd)
{
    #pragma omp simd
    for (int i = 0; i < n; i++)
    {
        a[i] *= 2; /* Computation */
    }
}
\end{lstlisting}
\end{document}

能在指南中添加些什么吗?

最终,我希望有一些更便携的东西,可以放在文档的序言中,但以下尝试都没有成功:

\lstset{otherkeywords={\#pragma,omp,simd}}
\lstdefinestyle{C}{morekeywords={restrict}}
\lstset{%
    language={C},%
    morekeywords={auto,...
...
}

新环境/语言/风格

我最好避免创建一种新的语言或风格,例如myC或类似,而宁愿只声明,language=C因为这似乎是更好的做法,并避免重构我的代码。

相关问题

答案1

我认为你可以定义一种自定义风格:

\documentclass{article}
\usepackage{listings}
\lstdefinestyle{C}{
language=C,
morekeywords={omp,simd,restrict},
otherkeywords={\#pragma}
}
\begin{document}
\begin{lstlisting}[style=C]
#pragma omp simd
void foo(int * restrict a, int n, int n_simd)
{
    #pragma omp simd
    for (int i = 0; i < n; i++)
    {
        a[i] *= 2; /* Computation */
    }
}
\end{lstlisting}
\end{document}

相关内容