![掩蔽 \end{lstlisting}](https://linux22.com/image/241681/%E6%8E%A9%E8%94%BD%20%5Cend%7Blstlisting%7D.png)
我不确定标题中的措辞是否正确。基本上我需要的是使用 listing 包添加以下源。
在序言中:
\usepackage{listings}
然后当我遇到问题时就在这里:
\begin{lstlisting}
\begin{lstlisting}
\end{lstlisting}
\end{lstlisting}
但我得到了Package Listings Error: Extra \endlstlisting
。
我怎样才能“掩盖”第一个\end{lstlisting}
?我已经看过文档了,但我还是迷茫了。
答案1
如果要展示lstlisting
其自身的例子,请定义不同的环境:
\lstnewenvironment{TeXlstlisting}{\lstset{language=[LaTeX]TeX}}{}
然后
\begin{TeXlstlisting}
\begin{lstlisting}
...
\end{lstlisting}
\end{TeXlstlisting}
会起作用。当必须管理两种或多种编程语言的列表时,此策略也很有用。
答案2
您可以使用mathescape=true
列表选项来逃避数学,但不执行任何操作,欺骗listings
破坏控制序列任何地方分成两个不同的部分。在下面的 MWE 中,我使用了\$$end{lstlisting}
,将其分成\
和end{lstlisting}
;第一个$
打开并退出到数学模式,而第二个$
关闭数学模式并返回到列表。否则listings
将控制序列识别\end{lstlisting}
为结尾。
\documentclass{article}
\usepackage{listings}% http://ctan.org/pkg/listing
\begin{document}
\begin{lstlisting}[mathescape=true]
\begin{lstlisting}
Hello world!
\$$end{lstlisting}
\end{lstlisting}
\end{document}
答案3
我认为您不能在lstlisting
环境中嵌套。由于这是一个 verbatin 环境,因此第二个环境\begin{lstlisting}
将被忽略,而第一个环境\end{lstlisting}
将导致外部终止\begin{lstlisting}
并留下一个额外的\end{lstlisting}
。
如果您提供有关您想要做什么的更多详细信息,也许我们可以提供一种实现该目标的方法。
如果你只想使用环境显示 LaTeX 输出listings
,我会使用包裹showexpl
:
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{showexpl}
\lstdefinestyle{demoLatexStyle}{
basicstyle=\small\ttfamily,
numbers=left, numberstyle=\tiny, stepnumber=2, numbersep=5pt,
frame=none,
basicstyle=\small\ttfamily,% print whole listing small
}
\lstloadlanguages{[LaTeX]TeX}
\begin{document}
\begin{LTXexample}[pos=b,style=demoLatexStyle]
\begin{lstlisting}
blah blah
\end{lstlisting}
\end{LTXexample}
\enddocument}