LaTeX: \ newenvironment только с одним необязательным аргументом (и не обязательно) - PullRequest
2 голосов
/ 20 декабря 2010


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

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

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

или

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

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

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

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

1 Ответ

6 голосов
/ 20 декабря 2010

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

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