用不同数量的参数定义相同的环境

用不同数量的参数定义相同的环境

我想定义两个版本的环境 \begin{mainbox} \end{mainbox},具体取决于我是否提供零个或一个参数。我想像这样使用它们:

\begin{mainbox}
    stuff
\end{mainbox}
\begin{mainbox}{title}
    stuff
\end{mainbox}

主机的定义如下:+

\documentclass{article}
\usepackage{amsthm}
\usepackage{thmtools}
\newenvironment{mainbox}[1]{
    \thmbox[M]{\textbf{#1}}
    \hspace*{-1.9em}\slshape\ignorespaces
    \normalfont
}
{
    \endthmbox\vspace*{.75ex}
}
\newenvironment{mainbox*}{
    \thmbox[M]{$\ $\hspace{33.75pt}$\ $}
    \hspace*{-1.9em}\slshape\ignorespaces
    \normalfont
}
{
    \endthmbox\vspace*{.75ex}
}

在这两种情况下,我都想创建一个框。没有参数的框没有标题,有参数的框有标题。一种解决方法是给它们赋予不同的名称,例如 mainbox 和 mainbox*,但我认为一定有更优雅的方法。有人能帮我吗?

答案1

好吧,我有点笨。其实很简单。下面是解决方案。感谢评论中提出想法的各位!

\newenvironment{mainbox}[1][]{
        \thmbox[M]{\ifblank{#1}{$\ $\hspace{33.75pt}$\ $}{\textbf{#1}}}
        \hspace*{-1.9em}\slshape\ignorespaces
        \normalfont
    }
    {
        \endthmbox\vspace*{.75ex}
    }

相关内容