在环境中启动环境

在环境中启动环境

基本上我想做这样的事情

\newenvironment{myenv}
{\begin{enumerate}[\bfseries 1.]}
{\end{enumerate}}

如果我省略参数([\bfseries 1.]),它就会起作用,但是如果有参数,当我使用我的环境时,我会得到:

! LaTeX Error: Something's wrong--perhaps a missing \item.

我怎样才能实现这个目标?

对软件包列表 ( \begin{lstlistings}) 执行相同的操作甚至在没有任何参数的情况下也不起作用。这当然与 TeX 的工作方式有关,我真的不了解它的内部原理。请给我讲讲。

答案1

第一个错误与定义无关\newenvironmentenumerate没有可选参数,因此您会得到相同的错误

\documentclass{article}

\begin{document}

\begin{enumerate}[\bfseries 1.]
\item zzz
\end{enumerate}
\end{document}

因为它尝试排版[没有前面任何内容的文本\item

你可以加

\usepackage{enumerate}

或更好,

\usepackage[shortlabels]{enumitem}

定义enumerate使用该语法的版本。(您使用的语法来自包enumerate,但enumitem如果给出选项,将会模拟它shortlabels

的问题listings有所不同。类似逐字的环境不能用于其他命令的参数或定义中。请参阅 listings 包文档以了解其自定义环境定义机制\lstnewenvironment

相关内容