如何使所有类似定理的环境都有一个结束符号?

如何使所有类似定理的环境都有一个结束符号?

我有一个关于制作结束符号的问题。

LaTex 默认每个证明环境都有一个结束符号。我想让每个定理类环境(例如示例环境)也有一个结束符号。但如何手动设置呢?具体来说,我想让所有这些环境都以方形符号结束。

\newtheorem{thm}{Theorem}
\newtheorem{lem}[thm]{Lemma}
\newtheorem{cor}[thm]{Corollary}
\newtheorem{pro}[thm]{Proposition}
\newtheorem{assump}{Assumption}
\newtheorem{axiom}{Axiom}
\newtheorem*{conj}{Conjecture}
\theoremstyle{definition}
\newtheorem{defi}[thm]{Definition}
\newtheorem{exam}{Example}
\newtheorem{exer}{Exercise}
\newtheorem*{rem}{Remark}
\newtheorem*{notation}{Notation}
\newtheorem*{note}{Note}

我怀着感激之心寻找一个全面的设置。

答案1

假设您正在使用\newtheoremamsthm这里\newtheorem定义了新的定理类环境并以 结束它们\@endtheorem。后者最初定义为\def\@endtheorem{\endtrivlist\@endpefalse },您可以在此处插入结束符号。

\documentclass{article}
\usepackage{amsthm}
\usepackage{manfnt}
\makeatletter
    \def\@endtheorem{\hfill\dbend\endtrivlist\@endpefalse }
\makeatother
\begin{document}
    \newtheorem{thm}{Theorem}
    \begin{thm}
        Zigzagging is dangerous.
    \end{thm}
\end{document}

(想法成形这里

警告!

正如下面 egreg 和 barbara beeton 所提到的,这种结构并不完美。它也不如proof中的环境好amsmath。其中一个致命缺陷是

如果文本恰好在右边距附近结束,则符号将与左对齐,而不是与右对齐。

因此,如果您想要一个与 完全相同的结束符号proof,则需要(有关详细信息,请参阅 egreg 的回答)

  • 处理胶水和罚款。

  • \pushQED{your symbol}通过添加before 和after来打包您的定理类环境\popQED。它amsthm提供了这两个命令来处理所有事情。(您甚至可以使用\qedhere)。

答案2

\tmark使用我的答案中定义的命令的变体将对象移动到右边距

\documentclass{article}
\usepackage{amsthm}
\makeatletter
\renewcommand\@endtheorem{\vvv@endmarker\endtrivlist\@endpefalse}
\newcommand\vvv@endmarker{%
  {\unskip\nobreak\hfil\penalty50
  \hskip2em\vadjust{}\nobreak\hfil\openbox
  \parfillskip=0pt \finalhyphendemerits=0 \par
  \penalty 10000 \parskip=0pt\noindent}\ignorespaces}
\makeatother

\newtheorem{thm}{Theorem}

\begin{document}

\begin{thm}
Zigzagging is dangerous.
\end{thm}
\begin{thm}
Zigzagging is very dangerous.
Zigzagging is very very dangerous.
\end{thm}

I want to show that the \verb|\hfill| approach can fail.

\makeatletter
\def\vvv@endmarker{\hfill\openbox}
\makeatother

\begin{thm}
Zigzagging is dangerous.
\end{thm}
\begin{thm}
Zigzagging is very dangerous.
Zigzagging is very very dangerous.
\end{thm}

\end{document}

我添加了一个例子来表明简单的\hfill方法可能会失败。

在此处输入图片描述

允许在末尾列出逐项列表或显示方程式,并使用正确标记的方法\qedhere

\documentclass{article}
\usepackage{amsthm}

\newcommand{\newmarkedtheorem}[1]{%
  \newenvironment{#1}
    {\pushQED{\qed}\csname inner@#1\endcsname}
    {\popQED\csname endinner@#1\endcsname}%
  \newtheorem{inner@#1}%
}

\newmarkedtheorem{thm}{Theorem}[section]

\begin{document}

\section{Test}

\begin{thm}
Zigzagging is dangerous.
\end{thm}

\begin{thm}
Zigzagging is very dangerous.
Zigzagging is very very dangerous.
\end{thm}

\begin{thm} These activities are dangerous.
  \begin{itemize}
  \item Zigzagging
  \item Jaywalking\qedhere
  \end{itemize}
\end{thm}

\end{document}

该命令\newmarkedtheorem的语法与 相同\newtheorem

在此处输入图片描述

相关内容