環境の終わりのダイヤモンド記号

環境の終わりのダイヤモンド記号

定理、補題、例などはダイヤモンドで終わるようにしたいです。次のようになります。ここに画像の説明を入力してください

\hfill\mbox{$\diamond$} を使用できることがわかりました。しかし、すでに 100 個もの例や補題を含むドキュメントを作成したので、手動で設定するのは避けたいです。そこで、\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

\diamondいくつかの環境の末尾にだけでなく も使用しているため\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 のインストールでは問題は発生しないはずです。マーカーが安定するまでに複数のコンパイルが必要であることを覚えておいてください。

注意:ntheoremマーカー付きの環境では、パーツの前に空白行を置くことはできません\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}

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


編集。標準に基づいたコード\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}

関連情報