我想结合我在此站点上找到的几个构造来创建一个自定义cases
环境,以便每个案例都能:
- 嵌套在更大的
theorem
环境中; - 以
qedsymbol
没有需要一个proof
环境;并且 - 使用
qedsymbol
由盒装大小写名称组成的自定义名称。
这听起来很多,所以让我说得更精确一些。
我希望我的文档的一般格式如该 MWE 所示:
\documentclass{article}
\usepackage{amsthm,xpatch}
\theoremstyle{plain}
\newtheorem{thm}{Theorem}
\newtheoremstyle{underline}% name
{-1.5mm} % Space above, empty = `usual value'
{} % Space below
{} % Body font
{\parindent} % Indent amount (empty = no indent, \parindent = para indent)
{} % Thm head font
{:} % Punctuation after thm head
{1.5mm} % Space after thm head: \newline = linebreak
{{\underline{\thmname{#1}\thmnumber{ #2}~\thmnote{(#3)}}}} % Thm head spec
\theoremstyle{underline}
\newtheorem{case}{Case}
\begin{document}
\begin{thm}
Here is a theorem.
\end{thm}
\begin{proof}
Consider the following two cases:
\begin{case}
Case 1 is...
\end{case}
\begin{case}
Case 2 is...
\end{case}
As the preceding cases show, we've proven something!
\end{proof}
\end{document}
如上所述,其呈现形式如下:
我想通过合并两个独立的 SxE 帖子来增强这个 MWE,即:
- 使用此解决方案,我希望
case
以qedsymbol
没有需要添加\begin{proof}...\end{proof}
;和 - 使用此解决方案,我想识别
case
嵌套的并将前面提到的更改qedsymbol
为盒装版本Case 1
,Case 2
等。
期望的最终结果将呈现如下效果:
记录显示,第一个链接问题的答案为
% redefine the \@endtheorem macro
\makeatletter
\def\@endtheorem{\qed\endtrivlist\@endpefalse } % insert `\qed` macro
\makeatother
(请注意,我正在尝试使用该amsthm
解决方案),第二个链接问题的解决方案具有以下形式
\makeatletter
\let\qed@empty\openbox % <--- change here, if desired
\def\@begintheorem#1#2[#3]{%
\deferred@thm@head{%
\the\thm@headfont\thm@indent
\@ifempty{#1}
{\let\thmname\@gobble}
{\let\thmname\@iden}%
\@ifempty{#2}
{\let\thmnumber\@gobble\global\let\qed@current\qed@empty}
{\let\thmnumber\@iden\xdef\qed@current{#2}}%
\@ifempty{#3}
{\let\thmnote\@gobble}
{\let\thmnote\@iden}%
\thm@swap\swappedhead
\thmhead{#1}{#2}{#3}%
\the\thm@headpunct\thmheadnl\hskip\thm@headsep
}\ignorespaces
}
\renewcommand{\qedsymbol}{%
\ifx\qed@thiscurrent\qed@empty
\qed@empty
\else
\fbox{\scriptsize\qed@thiscurrent}%
\fi
}
\renewcommand{\proofname}{%
Proof%
\ifx\qed@thiscurrent\qed@empty
\else
\ of \qed@thiscurrent
\fi
}
\xpretocmd{\proof}{\let\qed@thiscurrent\qed@current}{}{}
\newenvironment{proof*}[1]
{\def\qed@thiscurrent{\ref{#1}}\proof}
{\endproof}
\makeatother
(仅要求amsthm
和xpatch
)。
这可能吗?
答案1
这是一个解决方案。我们需要
\let\mtendcase\endcase
\renewcommand{\endcase}{\renewcommand\qedsymbol{\tiny\fbox{case \thecase}}\qed\mtendcase}
平均能量损失
\documentclass{article}
\usepackage{amsthm}
\theoremstyle{plain}
\newtheorem{thm}{Theorem}
\newtheoremstyle{underline}% name
{-1.5mm} % Space above, empty = `usual value'
{} % Space below
{} % Body font
{\parindent} % Indent amount (empty = no indent, \parindent = para indent)
{} % Thm head font
{:} % Punctuation after thm head
{1.5mm} % Space after thm head: \newline = linebreak
{{\underline{\thmname{#1}\thmnumber{ #2}~\thmnote{(#3)}}}} % Thm head spec
\theoremstyle{underline}
\newtheorem{case}{Case}
\let\mtendcase\endcase
\renewcommand{\endcase}{\renewcommand\qedsymbol{\tiny\fbox{case \thecase}}\qed\mtendcase}
\begin{document}
\begin{thm}
Here is a theorem.
\end{thm}
\begin{proof}
Consider the following two cases:
\begin{case}
Case 1 is...
\end{case}
\begin{case}
Case 2 is...
\end{case}
As the preceding cases show, we've proven something!
\end{proof}
\end{document}