Übergeben Sie Umgebungsargumente an die verschachtelte Umgebung

Übergeben Sie Umgebungsargumente an die verschachtelte Umgebung

Ich habe folgende Umgebung.

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

Ich hätte gerne eineOptionalArgument hierfür myenvist eine Liste von Optionen, die an die enumerateUmgebung übergeben werden.

Zum Beispiel so etwas wie:

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

würde produzieren,

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

Beachten Sie, dass dies labelüberschrieben wurde, diese Funktionalität jedoch nicht erforderlich ist.

Ist so etwas möglich?

Antwort1

Das ist definitiv möglich. Da Sie verwenden enumerate, würde ich vorschlagen, kein festes labelwie zu verwenden My Label. So geht's:

Bildbeschreibung hier eingeben

\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}

Sie können dies auch nativ über eine neue Liste tun:

\usepackage{enumitem}

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

verwandte Informationen