Как создать индивидуальную среду?

Как создать индивидуальную среду?

Я хотел бы записать несколько теорем следующим образом:

\begin{theorem}
    \begin{preconditions}
        $A := \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$\\
        $B := \begin{pmatrix} 2 & 2 \\ 3 & 4 \end{pmatrix}$\\
        $n \in \mathbb{N}$
    \end{preconditions}

    \begin{claim}
        $\sqrt{2} \notin \mathbb{Q}$
    \end{claim}

    \begin{proof}{directly}
        [... the proof ...]
    \end{proof}

\end{theorem}

Это должно выглядеть так:

**Theorem 123**
    **Preconditions**:
        $A := \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$\\
        $B := \begin{pmatrix} 2 & 2 \\ 3 & 4 \end{pmatrix}$\\
        $n \in \mathbb{N}$

    **Claim**: √2 ∉ Q

    **Proof**: directly

        [... the proof ...]
        [.. the end]                 ■

( Theorem 123, Preconditions, Claimи Proofследует выделить жирным шрифтом)

Логика окружающей среды:

  • теоремы должны автоматически получать номер, который начинается с единицы и увеличивается на единицу для каждой теоремы
  • внутри среды теоремы разрешены только среды preconditions, claimиproof
  • внутри теоремы окружение claimи proofдолжно быть ровно один раз.
  • Содержание доказательства и содержание предпосылок должны иметь одно и то же намерение.

Что я пока нашел:

я думал\newenvironmentВозможно, это то, что я ищу:

\newenvironment{name}[num]{before}{after}

но я не смог понять, как пометить внутренние среды как обязательные.


Пакет amsthm, похоже, имеет среды для доказательства (источник), но я не вижу возможности вложить разные среды и заставить их выглядеть так, как я хочу.


nтеоремаКажется, предлагает много возможностей. Я создал 4 новых среды теорем:

\newtheorem{theorem}{Theorem}
\newtheorem{preconditions}{Preconditions}
\newtheorem{proof}{Proof}
\newtheorem{claim}{Claim}

Я использовал код latex, указанный выше, и получил следующее: введите описание изображения здесь

Это не имеет никакого отношения к внутренним средам, внутренние среды пронумерованы, хотя они не должны быть пронумерованы и нетнадгробиенаходится в конце

решение1

Я использовалthmtoolsпакет в качестве интерфейса для amsthmопределения новой Proofсреды; другие две среды были созданы с использованием \newenvironment. Среды Proof, claimи preconditionиспользуют adjustwidthизchangepageпакет для увеличения левого поля. Конечно, не стесняйтесь вносить необходимые изменения в соответствии с вашими потребностями:

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{thmtools}
\usepackage{changepage}
\usepackage[nopar]{lipsum}% just to generate some text

\newlength\Thmindent
\setlength\Thmindent{20pt}

\newenvironment{precondition}
  {\par\medskip\adjustwidth{\Thmindent}{}\normalfont\textbf{Preconditions:}\par\nobreak}
  {\endadjustwidth}
\newenvironment{claim}
  {\par\medskip\adjustwidth{\Thmindent}{}\normalfont\textbf{Claim:}}
  {\endadjustwidth}

\declaretheoremstyle[
  spaceabove=0pt,spacebelow=0pt,
  preheadhook=\adjustwidth{\Thmindent}{},
  prefoothook=\endadjustwidth,
  headpunct=:,
  numbered=no,
  qed=\qedsymbol
]{proof}
\declaretheorem[style=proof]{Proof}

\theoremstyle{plain}
\newtheorem{theorem}{Theorem}

\begin{document}

\begin{theorem}
\lipsum[2]
\begin{precondition}
\begin{itemize}
\item $A := \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$
\item $B := \begin{pmatrix} 2 & 2 \\ 3 & 4 \end{pmatrix}$
\item $n \in \mathbb{N}$
\end{itemize}
\end{precondition}
\begin{claim}
$\sqrt{2}\notin\mathbb{Q}$
\end{claim}
\begin{Proof}
\lipsum[2]
\end{Proof}
\end{theorem}

\end{document}

введите описание изображения здесь

Связанный контент