\documentclass{article}
\usepackage{listings}
\newenvironment{hello}{\begin{lstlisting}[language=sh]}{\end{lstlisting}}
\begin{document}
\begin{hello}
ls
\end{hello}
\end{document}
该代码无法通过 xelatex 编译,编译器已挂起。
根本原因是什么?
答案1
listings
本质上是一个逐字环境,它关闭正常的乳胶处理,特别\end{hello}
是不会结束环境。
该软件包具有定义自定义环境的功能,请参阅列表手册第 4.16 节。
\documentclass{article}
\usepackage{listings}
\lstnewenvironment{hello}{\lstset{language=sh}}{}
\begin{document}
\begin{hello}
ls
\end{hello}
\end{document}