Символ-ромб в конце среды

Символ-ромб в конце среды

Я хочу, чтобы теоремы, леммы, примеры... заканчивались ромбом. Вот так:введите описание изображения здесь

Я узнал, что могу использовать \hfill\mbox{$\diamond$}. Но я уже написал свой документ с сотнями примеров, лемм... Я не хочу устанавливать его вручную. Поэтому я подумал, что могу установить его в \theoremstyle. Где мне нужно это установить? Вот мой 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}

решение1

Вы можете использовать \AtEndEnvironmentавтоматическое добавление вашего кода (или моей слегка адаптированной версии) каждый раз, когда ваша defiсреда завершается.

Поскольку я использую не только \diamonds в конце некоторых окружений, но и \triangle, я лично хочу, чтобы они имели (приблизительно) одинаковый размер, поэтому я добавил окружение, defiBigкоторое добавляет измененный размер \diamond. Это изменение размера затрагивает scalerelпакет. Результат

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

решение2

Чтобы быть последовательным, вот решение с использованием ntheorem. Оно не менялось около 10 лет, не должно иметь проблем с установкой 2017 года. Просто помните, что для стабилизации маркеров требуется несколько компиляций.

Предупреждение: ntheoremEnv с маркерами не любит пустые строки перед \end{env}частью.

Пример кода, включая определение 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}

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

решение3

Более элегантный способ следующий.Кстати, конечный символ лучше выбирать такой же, как символ qed.Как я и говорил о форматах теорем в своей книге, символ qed обозначает «окончание доказательства». Поэтому мы можем в общем случае использовать этот символ для обозначения «переходного окончания некоторых текстов» и расширить его диапазон использования на все виды предложений, определений, замечаний и т. д. без доказательств.

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

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

На следующем изображении показано, как я лично использую символ qed.

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

решение4

Вы могли бы создать среду-оболочку, которая бы добавила ромб в конец среды, определенной amsthm. Что-то около этих строк:

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

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


EDIT. Код основан на стандарте \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}

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