我想将自定义 \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}