我正在使用 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
而没有使用任何注释命令时,它会编译并正确显示。但在编译之前,编辑器会突出显示该命令并告诉我它是未知的。