我想做类似的事情
\newenvironment{definition}
{
\textit{
}
{
}
}
但它当然不起作用,括号会混淆。(换句话说,我希望在我的环境中,内容被诸如 \textit 或 \textbf 之类的命令包围。)有什么想法吗?
编辑:我的环境现在如下所示:
\newenvironment{definition}
{
\textbf{\underline{Definition.}}
\vspace{12 pt}
\begin{itshape}
}
{
\end{itshape}
}
答案1
答案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}