Símbolo de diamante al final de un entorno.

Símbolo de diamante al final de un entorno.

Quiero que los teoremas, lemas, ejemplos... terminen en un diamante. Como esto:ingrese la descripción de la imagen aquí

Descubrí que puedo usar \hfill\mbox{$\diamond$}. Pero ya escribí mi documento con cientos de ejemplos, lemas... No quiero configurarlo manualmente. Entonces pensé que podría configurarlo en \theoremstyle. ¿Dónde tengo que configurar esto? Aquí está mi MWE:

\documentclass[ngerman, fontsize=11pt, DIV=15, BCOR = 10mm,parskip=half-, twoside]{scrartcl}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}

\newtheoremstyle{definition}{}{}{}{}{\bfseries}{:}{5 pt}{}

\theoremstyle{definition}
\newtheorem{defi}[]{Definition}

\begin{document}
      Here's the example.

\begin{defi}
       Does the diamond appear?
\end{defi}
\end{document}

Respuesta1

Podría utilizar \AtEndEnvironmentpara agregar automáticamente su código (o mi versión ligeramente adaptada) cada vez que defifinalice su entorno.

Como no solo uso \diamonds al final de algunos entornos, sino que también \trianglequiero que tengan (aproximadamente) el mismo tamaño, así que agregué un entorno defiBigque agrega un \diamond. Este cambio de tamaño involucra al scalerelpaquete. Resultado

\documentclass[ngerman, fontsize=11pt, DIV=15, BCOR = 10mm,parskip=half-, twoside]{scrartcl}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{scalerel} % only necessary for the version with big \diamond

\newtheoremstyle{definition}{}{}{}{}{\bfseries}{:}{5 pt}{}

\theoremstyle{definition}
\newtheorem{defi}[]{Definition}
\AtEndEnvironment{defi}{\null\hfill\ensuremath{\diamond}}
% For a bigger \diamond you can use the following:
\newtheorem{defiBig}[defi]{DefinitionBig}
\newlength\myheight  \settoheight\myheight{$\triangle$}
\AtEndEnvironment{defiBig}{\null\hfill\ensuremath{\scaleto{\diamond}{\myheight}}}

\begin{document}
      Here's the example.
      \begin{defi}
             Does the diamond appear?
      \end{defi}
      \begin{defiBig}
             Does the big diamond appear?
      \end{defiBig}
\end{document}

Respuesta2

Para ser coherente, aquí hay una solución que usa ntheorem. No ha cambiado en 10 años, no debería tener problemas con una instalación de 2017. Sólo recuerde que se necesitan varias compilaciones para que los marcadores se asienten.

Advertencia: a los ntheoremenvs con marcadores no les gustan las líneas en blanco antes de la \end{env}parte.

Ejemplo de código que incluye cómo definir proof:

\documentclass[ngerman, fontsize=11pt, DIV=15, BCOR = 10mm,parskip=half-, twoside]{scrartcl}
\usepackage{babel}
\usepackage{amsmath}
%\usepackage{amsthm}
\usepackage{amssymb}
\usepackage[amsmath,thmmarks]{ntheorem}

\theorembodyfont{\normalfont}
\theoremseparator{.}
\theoremsymbol{\enskip\ensuremath{\diamond}}
\newtheorem{defi}{Definition}

% body font is shared from above
\theoremstyle{nonumberplain}
\theoremheaderfont{\itshape}
\theoremsymbol{\enskip\ensuremath{\Box}}
\newtheorem{proof}{Proof}


\begin{document}
Here's the example.

\begin{defi}
  Does the diamond appear?
\end{defi}

\begin{proof}
  Test
\end{proof}
     
\end{document}

ingrese la descripción de la imagen aquí

Respuesta3

Una forma más elegante es la siguiente.Por cierto, es mejor seleccionar el símbolo final igual que el símbolo qed.Tal como dije sobre los formatos de teoremas en mi libro, el símbolo qed indica "el final de una demostración". Así, generalmente podemos utilizar el símbolo para indicar “el final transitorio de algunos textos” y extender su uso a todo tipo de proposiciones, definiciones, observaciones, etc., sin pruebas.

\documentclass{article}

\usepackage{amsthm}
\usepackage{latexsym}%for \Diamond
\renewcommand{\qedsymbol}{$\Diamond$}

\theoremstyle{theorem}
\newtheorem{theorem}{Theorem}
\newenvironment{thm}{\pushQED{\qed}\theorem}{\popQED\endtheorem}

\theoremstyle{definition}
\newtheorem{definition}{Definition}
\newenvironment{defi}{\pushQED{\qed}\definition}{\popQED\enddefinition}

\begin{document}

Here are the examples.

\begin{theorem}
Does the diamond appear? No!
\end{theorem}

\begin{thm}
Does the diamond appear? Yes!
\end{thm}

\begin{definition}
Does the diamond appear? No!
\end{definition}

\begin{defi}
Does the diamond appear? Yes!
\end{defi}

\end{document}

ingrese la descripción de la imagen aquí

La siguiente imagen muestra cómo uso el símbolo qed personalmente.

ingrese la descripción de la imagen aquí

Respuesta4

Podría crear un entorno contenedor que agregaría un diamante al final del entorno definido por amsthm. Algo alrededor de estas líneas:

\documentclass[ngerman, fontsize=11pt, DIV=15, BCOR = 10mm,parskip=half-, twoside]{scrartcl}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}

\newtheoremstyle{definition}{}{}{}{}{\bfseries}{:}{5 pt}{}
\theoremstyle{definition}
\newtheorem{ddefi}[]{Definition}
\NewDocumentEnvironment{defi}{s +b}{%
  \begin{ddefi}
    #2\nolinebreak\IfBooleanT{#1}{\hfill}\enspace$\diamond$
  \end{ddefi}}{}


\begin{document}
Here's the example.
\begin{defi}
  Does the diamond appear
\end{defi}

\begin{defi}*
  Does the diamond appear
\end{defi}
\end{document}

ingrese la descripción de la imagen aquí


EDITAR. El código basado en el estándar \newenvironment:

\documentclass[ngerman, fontsize=11pt, DIV=15, BCOR = 10mm,parskip=half-, twoside]{scrartcl}
\usepackage{babel}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}

\newtheoremstyle{definition}{}{}{}{}{\bfseries}{:}{5 pt}{}
\theoremstyle{definition}
\newtheorem{ddefi}[]{Definition}
\newenvironment{defi}{\begin{ddefi}}{\nolinebreak\hfill\enspace$\diamond$\end{ddefi}}


\begin{document}
Here's the example.
\begin{defi}
  Does the diamond appear
\end{defi}
\end{document}

información relacionada