(1.1 定理) のような定理スタイルと (1.2 中間値定理) のようなカスタム定理

(1.1 定理) のような定理スタイルと (1.2 中間値定理) のようなカスタム定理

私はこの本で使用されているような定理のスタイルを探しています:
ロスによる初等解析

すでにほとんどのことは機能していますが、次のようなカスタム定理を取得したいと考えています。

ここに画像の説明を入力してください

次のように入力すると:

\begin{thm}[Rational Zeros Theorem]
...
\end{thm}

私が欲しい残りのスタイルは次のとおりです。

  1. 数と定理を入れ替える
  2. 定理/定義の先頭の後に改行を入れる
  3. 「証明」を斜体ではなく太字にして、その後に改行を入れる
  4. 証明がリストから始まる場合は改行も必要

私はすでに 1、2、3 を実装しようとしており、興味があれば github で見つけることができます:https://github.com/kasperpeulen/Ross-Theorem-Style

4 はまだ解決していませんが、ここで他の投稿をいくつか見つけたので、自分で解決できると思います。もちろん、その点についても助けていただければ幸いです。

答え1

さて、このウェブサイトの他の投稿とチャットでの percusse さんの助けのおかげで、動作するようになりました。

ここに画像の説明を入力してください

コードはここにあります。また、次の場所でも見つけることができます: https://github.com/kasperpeulen/Ross-Theorem-Style

\documentclass[12pt]{article}
\usepackage{amsmath, amssymb, amsthm}

\newtheoremstyle{theorem}% name
  {}%         Space above, empty = `usual value'
  {}%         Space below
  {\itshape}% Body font
  {}%         Indent amount 
  {\bfseries}% Head font
  {.}%        Punctuation after head
  {\newline}% Space after head: \newline = linebreak
   {\def\temp{#3}\ifx\temp\empty\thmnumber{#2 }\thmname{#1}\else\thmnumber{#2}\thmnote{ #3}\fi}%         Head spec

\theoremstyle{theorem}
\newtheorem{thm}{Theorem}[section]
\newtheorem{prop}[thm]{Proposition}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}

\swapnumbers    
\newtheoremstyle{definition}% name
  {}%         Space above, empty = `usual value'
  {}%         Space below
  {}% Body font
  {}%         Indent amount
  {\bfseries}% Head font
  {.}%        Punctuation after thm head
  {\newline}% Space after head: \newline = linebreak
  {}%         Head spec

\theoremstyle{definition}
\newtheorem{defn}[thm]{Definition}
\newtheorem{example}[thm]{Example}
\theoremstyle{remark}
\newtheorem{remark}[thm]{Remark}

%Makes "Proof." boldface
\makeatletter
\renewenvironment{proof}[1][\proofname] {\par\pushQED{\qed}\normalfont\topsep6\p@\@plus6\p@\relax\trivlist\item[\hskip\labelsep\bfseries#1\@addpunct{.}]\mbox{}\\*}{\popQED\endtrivlist\@endpefalse}
\makeatother

%Fix if theorem starts with a list
\makeatletter
\def\itemfix{%
\if@inlabel
 \noindent \par\nobreak\vskip-\baselineskip\hrule\@height\z@
\fi}

\let\olditemize\itemize
\def\itemize{\itemfix\olditemize}
\makeatother

\makeatletter
\def\enumfix{%
\if@inlabel
 \noindent \par\nobreak\vskip-\baselineskip\hrule\@height\z@
\fi}
\let\oldenumerate\enumerate
\def\enumerate{\enumfix\oldenumerate}

\begin{document}
\section{Some examples}

\begin{defn}
Here is a definition of \emph{something}.
\end{defn}

\begin{thm}[Intermediate Value Theorem]
This is a theorem with a name and with a number.
\end{thm}

\begin{thm}
This is a theorem without name and with a number.
\end{thm}

\begin{proof}
Here is the proof.
\end{proof}

\begin{thm}
\begin{enumerate}
\item Theorem that starts with a list.
\item Which seems to work.
\end{enumerate}
\end{thm}

\begin{thm}
\begin{itemize}
\item Theorem that starts with a list.
\item Which seems to work.
\end{itemize}
\end{thm}

\end{document}

答え2

以下は、 を使用した簡単な解決法です。これには、証明が表示方程式(のグループ)で終了する場合でも、(カスタマイズ可能な)シンボルをntheorem自動的に配置できるという利点があります。end-of-proof

\documentclass[12pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{amssymb}
\usepackage{mathtools, nccmath}
\usepackage{enumitem}
\usepackage[thmmarks, thref, amsmath]{ntheorem}

\makeatletter
\renewtheoremstyle{changebreak}%
  {\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
          ##2\ ##1\theorem@separator}\hbox{\strut}}}]}%
  {\item[\rlap{\vbox{\hbox{\hskip\labelsep \theorem@headerfont
          ##2\ ##3\theorem@separator}\hbox{\strut}}}]}
\makeatother

\theoremstyle{changebreak}
\theoremseparator{. }
\theoremheaderfont{\upshape\bfseries}
\theorembodyfont{\itshape}

\newtheorem{thm}{Theorem}[section]

\theorembodyfont{\upshape}
\newtheorem{defi}[thm]{Definition}
\theoremstyle{nonumberbreak}
\theoremseparator{}
\theoremsymbol{\ensuremath{\blacksquare}}
\newtheorem{proof}{Proof}

\begin{document}

\section{A First Section}

\begin{thm}
 A numbered, unnamed theorem.
\end{thm}

\begin{thm}[Rational Zeros Theorem]
Suppose $ c_0 ,c_1 ,\dots, c_n $ be integers and $ r $ a rational number satisfying the polynomial equation.
\begin{equation}\label{intpol}
  c_n xⁿ + c_{n-1} x^{n-1} + ... +c_1 x + c_0 =0
\end{equation}
where $ n ≥ 1$, $ c_{n} \ne 0$ and $ c_0 \ne 0 $. Let $ r = \mfrac{c}{d}$, where $ c, d $ are integers having no common factors and $ d \ne 0 $. Then $ c $ divides $ c_0 $ and $ d $ divides $ c_n $.
\end{thm}

\begin{proof}
\begin{itemize}[wide = 0pt]
  \item[\em First proof.]
Left as an exercise.

  \item[\em Second proof.] We deduce from the hypothesis that
\begin{align*}
   & c_{n}cⁿ + c_{n-1}c^{n-1}d + ... + c_1 cd^{n-1} + c_0 dⁿ = 0, \\
\intertext{which we may rewrite as}
   & c(c_{n}c^{n-2} + c_{n-1}c^{n-2}d + ... + c_1 d^{n-1}) = -c_0 dⁿ\\
\shortintertext{or}
 & d(c_{n-1}c^{n-1} + ... + c_1 cd^{n-2} + c_0 d^{n-1}) = -c_{n}cⁿ.
\end{align*}
\end{itemize}
\end{proof}

\begin{defi}
  A \textbf{rational function} is the quotient of two polynomial functions.
\end{defi}

\end{document}

ここに画像の説明を入力してください

関連情報