LaTeX: \newenvironment только с одним необязательным аргументом (и не обязательно)


Я пытаюсь установить новую среду внутри класса, которая будет принимать только необязательный аргумент или ни одного.

Это будет использоваться так:

\begin{myEnv}          -->  "Label:"  

или же

\begin{myEnv}[myLabel] -->  "Label: myLabel"

Я пытаюсь определить эту среду с помощью основных макросов. Я бы предпочел не использовать пакет xparse.

Я нашел несколько примеров \newenvironment с необязательным аргументом вместе с обязательным. Но мне не нужен обязательный аргумент!

Есть ли способ сделать это с помощью макросов \newenvironment или \def?

1 ответ

Нет проблем, просто объявите среду с одним аргументом и сделайте это необязательным:

\documentclass{minimal}
\newenvironment*{myEnv}[1][]{%
  Label: #1%
  \par
  \ignorespaces
}{%
  \par
  end%
  \par
  \ignorespacesafterend
}
\begin{document}
\begin{myEnv}
  abc
\end{myEnv}
\begin{myEnv}[myLabel]
  abc
\end{myEnv}
\end{document}
Другие вопросы по тегам