在环境定义中使用命令

在环境定义中使用命令

我想做类似的事情

\newenvironment{definition}
{
    \textit{
}
{
    }
}

但它当然不起作用,括号会混淆。(换句话说,我希望在我的环境中,内容被诸如 \textit 或 \textbf 之类的命令包围。)有什么想法吗?

编辑:我的环境现在如下所示:

\newenvironment{definition}
{
    \textbf{\underline{Definition.}}
    \vspace{12 pt}
    \begin{itshape}
}
{
    \end{itshape}
}

答案1

在给定的示例中,您可以定义

\newenvironment{myenv}{\itshape}{}

实际上,环境的工作方式是,你可以使用

\begin{itshape} <content> \end{itshape}

但不要这样做,最好用有意义的语义方式命名环境,比如说

\newenvironment{emphasize}{\itshape}{}
\begin{emphasize} <content> \end{emphasize}

如果你确实需要使用需要参数的宏(如\textit),你可以使用environ包及其\BODY宏为沃纳证明

答案2

在一般情况下,您希望将整个环境捕获到一个宏中,然后将该宏作为参数传递给另一个宏。这正是environ套餐提供:

在此处输入图片描述

\documentclass{article}
\usepackage{environ}% http://ctan.org/pkg/environ
\NewEnviron{myenv}[1][\textit]{%
  #1{\BODY}%
}
\begin{document}
\begin{myenv}
Hello World!
\end{myenv}

\begin{myenv}[\textbf]
Hello World!
\end{myenv}

\begin{myenv}[\slshape]
Hello World!
\end{myenv}

\begin{myenv}[]
Hello World!
\end{myenv}
\end{document}

environ允许您将环境内容捕获到宏中\BODY,然后可用于任何目的。我的定义\textit默认使用 打印它,但您可以使用不同的宏或字体开关进行修改。

上述定义myenv足够通用,允许使用宏或开关格式化环境内容(如第 3 个示例中所示)。提供一个空的(可选)参数将删除任何格式。

答案3

\documentclass{article}
\newenvironment{myenv}{\fontshape{it}\selectfont}{\fontshape{n}\selectfont}
\begin{document}
Before the environment

\begin{myenv}
Testing in the environment
\end{myenv}

Out of the environment
\end{document}

相关内容