在 \newenvironment 中使用参数

在 \newenvironment 中使用参数

有没有办法在和\newenvironment{example}[]{}{}之间的文本后使用结构的参数。例如,如何编写一个以文本作者为参数的新环境,并将其写入环境中写入的文本之后?\begin{example}\end{example}

答案1

编辑:更改格式以符合评论的规范。

有两种方法可以做到这一点,要么使用命令,\newenvironment您可以将参数存储在临时宏中(使用\def\renewcommand,但\newcommand在任何一种情况下都先用 初始化它)。或者使用\NewDocumentEnvironment,您可以在其中引用 -part 中的参数\end

\documentclass[]{article}

\newcommand*\exampleARG{}% to assert the name is free
\newenvironment{example}[1]
  {%
    \par\medskip
    \def\exampleARG{#1}%
    \begingroup
      \centering
      \itshape
      \footnotesize
  }
  {%
      \par
    \endgroup
    \leavevmode\hfill\mbox{\textsc{\exampleARG}}\par
    \medskip
  }

\NewDocumentEnvironment{Example}{m}
  {%
    \par\medskip
    \begingroup
      \centering
      \itshape
      \footnotesize
  }
  {%
      \par
    \endgroup
    \leavevmode\hfill\mbox{\textsc{#1}}\par
    \medskip
  }

\usepackage[]{duckuments}

\begin{document}
\begin{example}{a wise duck}
  \blindduck
\end{example}

\begin{Example}{a wise duck}
  \blindduck
\end{Example}
\end{document}

相关内容