将可选参数从 \newenvironment 解析为 \newmdenv

将可选参数从 \newenvironment 解析为 \newmdenv

我想将自定义 \newenvironment{example} 中的可选变量解析为嵌套在 mdframed 环境 \mytextbox 中例子环境。

我想要实现的是

例 1.1[可选示例标题]

其余文字位于方框内。

到目前为止,我已经获得了所需的 mdframed 格式(间距、“示例 XX”等),但我不知道如何正确输入可选标题。它被打印到 mdframed 测试区域而不是标题区域。

这可能是一个简单的疏忽,我对宏和环境的了解有限,这是我第一次使用它们,这就是我在这里的原因:)

下面是 MWE 和示例输出。

\documentclass[12pt,oneside]{report}
\usepackage[a4paper,width=170mm,top=25mm,bottom=25mm]{geometry}

\usepackage{lipsum}

\usepackage{tikz}
\usepackage{mdframed}

\newcounter{exampleCounter}[section]
\newmdenv[
        linewidth=1pt,%
        frametitlerule=true,%
        backgroundcolor=black!3,%
        innerleftmargin=10mm,%
        innerrightmargin=10mm,%
        innerbottommargin=10mm,%
        ]
    {mytextbox}
\newenvironment{example}
[1][]
    {\refstepcounter{exampleCounter}
        \begin{mytextbox}[frametitle={Example~\thechapter.\theexampleCounter.~##1}]
    }
    {\end{mytextbox}}

\usepackage{setspace}
    \setlength{\parindent}{0mm}
    \setlength{\parskip}{1em}

\begin{document}
\chapter{First Chapter}

\lipsum[1]
\begin{example}{\textit{Optional example title}}
    \lipsum[2]
\end{example}
\lipsum[3]

\end{document}

在此处输入图片描述

答案1

我将##1其改为#1。此外,在调用中,需要使用方括号来表示可选参数:\begin{example}[\textit{Optional example title}]

\documentclass[12pt,oneside]{report}
\usepackage[a4paper,width=170mm,top=25mm,bottom=25mm]{geometry}

\usepackage{lipsum}

\usepackage{tikz}
\usepackage{mdframed}

\newcounter{exampleCounter}[section]
\newmdenv[
        linewidth=1pt,%
        frametitlerule=true,%
        backgroundcolor=black!3,%
        innerleftmargin=10mm,%
        innerrightmargin=10mm,%
        innerbottommargin=10mm,%
        ]
    {mytextbox}
\newenvironment{example}[1][]
    {\refstepcounter{exampleCounter}
        \begin{mytextbox}[frametitle={Example~\thechapter.\theexampleCounter.~#1}]
    }
    {\end{mytextbox}}

\usepackage{setspace}
    \setlength{\parindent}{0mm}
    \setlength{\parskip}{1em}

\begin{document}
\chapter{First Chapter}

\lipsum[1]
\begin{example}[\textit{Optional example title}]
    \lipsum[2]
\end{example}
\lipsum[3]

\end{document}

在此处输入图片描述

相关内容