向定理环境添加规则

向定理环境添加规则

我有一个文档,里面全是我用一个简单的定理创建的示例。现在的问题是,我试图通过在开头和结尾添加规则来修改示例的外观。这比我想象的要难,但我还是取得了一些进展。这是 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

不要将参数传递到新环境。

b

\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}

相关内容