Estoy buscando un estilo de teorema como el que se usa en este libro:
Análisis elemental de Ross
Ya tengo la mayoría de las cosas funcionando, excepto que quiero obtener un teorema personalizado como este:
Cuando escribo algo como:
\begin{thm}[Rational Zeros Theorem]
...
\end{thm}
El resto de estilos que quiero son:
- Intercambiar el número y el teorema
- Tener una nueva línea después del encabezado del teorema/definición
- Tener "pruebas". en negrita en lugar de cursiva y una nueva línea después
- Tener también una nueva línea si la prueba comienza con una lista
Ya he estado intentando implementar 1,2 y 3, y si estás interesado, puedes encontrarlo en github:https://github.com/kasperpeulen/Ross-Theorem-Style
Todavía no he resuelto 4, pero encontré otras publicaciones aquí, así que creo que puedo resolverlo yo solo, pero, por supuesto, también agradecería cualquier ayuda con eso.
Respuesta1
Bien, ya lo tengo funcionando, gracias a otras publicaciones en este sitio web, ayuda de percusión en el chat:
Aquí está el código, que también puedes encontrar aquí: 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}
Respuesta2
Aquí hay una solución simple con ntheorem
– que tiene la ventaja de colocar automáticamente el end-of-proof
símbolo (personalizable), incluso cuando la prueba termina en una visualización (grupo de) ecuación(s):
\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}