我有一个文档,里面全是我用一个简单的定理创建的示例。现在的问题是,我试图通过在开头和结尾添加规则来修改示例的外观。这比我想象的要难,但我还是取得了一些进展。这是 MWE:
\documentclass[tikz]{article}
\usepackage{amsthm}
\usepackage{lipsum}
\newtheorem{FirstExample}{First example}
\newtheorem{SecondExampleImpl}{Second example}
\newtheorem{SecondExample}{}
\renewenvironment{SecondExample}[1]{
\par\nobreak\noindent\rule{\textwidth}{3pt}\par\addvspace{12pt}
\begin{SecondExampleImpl}{{#1}}}{\end{SecondExampleImpl}\par\nobreak\noindent\rule{\textwidth}{1pt}\par\addvspace{12pt}}
\begin{document}
\begin{FirstExample}[First example] \label{ex:first}
This is a first example...
\end{FirstExample}
\lipsum[1]
Ref to first example~\ref{ex:first}.
\begin{SecondExample}[Second example] \label{ex:second}
This is a second example...
\end{SecondExample}
\lipsum[1]
Ref to second example~\ref{ex:second}.
\end{document}
因此,有 2 个定理定义示例。定理FirstExample
是旧定理,定理SecondExample
是新定理。乍一看,新定理似乎在发挥作用,但实际上您可以注意到定理标题写得不正确。就好像参数没有以正确的方式传递给另一个宏。此外,我不确定引用新宏是否总是正确的,尽管在这个 MWE 中它似乎有效。
答案1
不要将参数传递到新环境。
\documentclass[tikz]{article}
\usepackage{amsthm}
\usepackage{lipsum}
\newtheorem{FirstExample}{First example}
\newtheorem{SecondExampleImpl}{Second example}
\newtheorem{SecondExample}{}
\renewenvironment{SecondExample} % changed <<<<<<<<<<<<<
{\noindent\rule{\textwidth}{3pt}\par\addvspace{12pt}\begin{SecondExampleImpl}}
{\end{SecondExampleImpl}\noindent\rule{\textwidth}{1pt}\par\addvspace{12pt}}
\begin{document}
\begin{FirstExample}[First example A] \label{ex:first}
This is a first example...
\end{FirstExample}
\lipsum[1]
Ref to first example~\ref{ex:first}.
\begin{SecondExample}[Second example B] \label{ex:second}
This is a second example...
\end{SecondExample}
\lipsum[1]
Ref to second example~\ref{ex:second}.
\end{document}