將環境參數傳遞給嵌套環境

將環境參數傳遞給嵌套環境

我有以下環境。

\newenvironment{myenv}[0]{%
  \begin{enumerate}[label = {My Label}]%
}{
  \end{enumerate}
}

我想要一個選修的其參數myenv是傳遞到環境中的選項清單enumerate

例如,類似的東西,

\begin{myenv}{noitemsep, nolistsep, label = {New Label}}
  ...
\end{myenv}

會產生,

\begin{enumerate}[label = {New Label}, noitemsep, nolistsep]
...
\end{enumerate}

請注意,label已被覆蓋,但此功能不是必需的。

這樣的事情可能嗎?

答案1

這絕對是可能的。既然您正在使用enumerate,我建議不要使用固定的,labelMy Label.操作方法如下:

在此輸入影像描述

\documentclass{article}

\usepackage{enumitem}

\newenvironment{myenv}[1][]{%
  \begin{enumerate}[
    label=\arabic*.,ref=\arabic*,% Default enumerate options
    #1% Any additional content (could override default options)
  ]
}{%
  \end{enumerate}
}

\begin{document}

Some content before \verb|myenv| (no optional parameter).
\begin{myenv}
  \item First
\end{myenv}
Some content after \verb|myenv|.

Some content before \verb|myenv| (with an optional parameter).
\begin{myenv}[noitemsep, nolistsep, label={N\arabic*.}, ref={N\arabic*}]
  \item First
\end{myenv}
Some content after \verb|myenv|.

\end{document}

您也可以透過新清單本機執行此操作:

\usepackage{enumitem}

\newlist{myenv}{enumerate}{1}
\setlist[myenv,1]{% Default options for myenv
  label=\arabic*.,
  ref=\arabic*
}

相關內容