lstnewenvironment 中的命令不会被忽略

lstnewenvironment 中的命令不会被忽略

我正在使用 lstenvironment 来确保代码位于同一页面上:

\lstnewenvironment{mycode}{}{}

\usepackage{etoolbox}
\BeforeBeginEnvironment{mycode}{\par\noindent\begin{minipage}{\linewidth}\lstset{style=sharpc}}
\AfterEndEnvironment{mycode}{\end{minipage}\par\addvspace{\topskip}}

\begin{mycode}这有效,但我使用时遇到的问题是,和之间的内容\end{mycode}不被视为注释(因此命令不会被忽略,并且会应用拼写检查)。我希望有与lstlisting直接使用时相同的行为。

我尝试使用\comment逐字和注释包的命令,如下所示:

\newenvironment{mycode}{\comment}{\endcomment}

并尝试在里面使用它\BeforeBeginEnvironment,并\AfterEndEnvironment 基于我在相关问题中找到的一些答案(但这并不能解决我的问题)。

但它告诉我命令未知。但当我使用\newcommand{\comment}[1]{}和时,它告诉我它们已经定义。此外,当我尝试使用和时\endcomment也出现错误。begin{comment}\end{comment}

那么有人知道我做错了什么或者如何获得与直接使用 lstlisting 相同的行为吗?

(顺便说一句,如果相关的话我正在使用 TexStudio 2.12.10)

编辑 根据要求这里是我的最小工作代码示例:

\documentclass[12pt,oneside]{report}

\usepackage[svgnames,table,hyperref]{xcolor}
\definecolor{othgray}{RGB}{243, 241, 239}
\usepackage{listings}           % Darstellung von Quellcode
\lstdefinestyle{sharpc}{language=[Sharp]C, basicstyle=\sffamily, keywordstyle={\color{Navy}\bfseries}, commentstyle={\color{DarkGreen}\slshape}, stringstyle={\color{DarkOrange}}, backgroundcolor={\color{othgray}}, numbers=left, numberstyle=\tiny, tabsize=2}

\lstnewenvironment{mycode}[1][]{}{}

\usepackage{etoolbox}
\BeforeBeginEnvironment{mycode}{\par\noindent\begin{minipage}{\linewidth}\lstset{style=sharpc}}
\AfterEndEnvironment{mycode}{\end{minipage}\par\addvspace{\topskip}}

\begin{document}

\chapter{Code}

\begin{mycode}
Excel.Range usedRange = workbook.UsedRange;
Excel.Range firstCell = usedRange[1, 1];
\end{mycode}

\end{document}

编辑2 似乎只是编辑器的问题,因为当在里面使用无意义的命令mycode而没有使用任何注释命令时,它会编译并正确显示。但在编译之前,编辑器会突出显示该命令并告诉我它是未知的。

答案1

TeXstudio 中的语法高亮由以下项控制:.cwl 文件。通过创建一个名为 的新(逐字)环境mycode,让 TXS 知道这一点的方法是使用用户创建的.cwl文件(它只是一个文本文件)。

将其放入你的 cwl 文件中:

\begin{mycode}#V
\end{mycode}

其中#V分类器声明了一个逐字类似的环境(因此所有语法检查都关闭,就像在中一样\lstlisting)。

有关如何使用.cwl文件的信息,请参阅我的先前的答案关于该主题。

相关内容