正如标题所说,我需要在自定义新定理的最后自动定义一个QED符号(最好是一个颜色框)。
任何建议都将不胜感激。
答案 0 :(得分:4)
建议:不要这样做。放置QED符号取决于您环境中文本内容的非直接方式。例如,如果你的定理以显示数学结束,那么Andrea的代码就会失败。你有时可能需要手工放置它,如果你总是这样做,你就不太可能忽视它。
如果没有放置QED符号,那么有一个抱怨的环境要好得多。您可以通过定义一个qedused标志(例如\newififqedused
)来执行此操作,当您进入环境时未设置(使用\newenvironment
定义包装器,如Andrea所说),在QED符号周围设置包装,并在退出环境时进行测试。如果退出时仍未设置该标记,请发出\PackageWarning
或\PackageError
。
如果您真的想要尝试获得一个努力做正确事情的qed环境,无论环境中有什么,您都需要查看\lastbox
的内容以尝试确定QED符号应该去哪里。如果它是一个hbox,你很好,只需根据Andreas的解决方案放置QED。如果它是一个mbox,那么我认为制作一个包含这个mbox的hbox后跟QED符号应该可行 - 我不确定,我通常不会搞乱数学的排版。
如果它是一个vbox,你需要查看vbox的结构以找到它应该去的地方,这听起来很难 - 我无法想象如何在纯Tex中这样做。在Luatex中,我认为Hans Hagen的诀窍在于The LuaTEX way: \framed可能会适应这一点。
答案 1 :(得分:1)
我不确定你的意思。如果您使用包amsthm,您可以使用命令\ qed将QED放在任何您想要的位置。
您可以通过更改命令\ qedsymbol来自定义\ qed。所以你会做类似
的事情\usepackage{amsthm}
\renewcommand{\qedsymbol}{$\heartsuit$}
\newtheorem{thm}{Theorem}
\newenvironment{\mythm}{\begin{\thm}}{\qed \end{thm}}
...
\begin{mythm}
blah
\end{mythm}
如果您希望QED符号与校样中显示的相同。如果没有,你可以做到
\newtheorem{thm}{Theorem}
\newenvironment{\mythm}{\begin{\thm}}{\hfill $\heartsuit$ \end{thm}}
...
\begin{mythm}
blah
\end{mythm}
当然,你可以随心所欲地改变\ heartsuit。
答案 2 :(得分:1)
另一种方法是使用带有选项thmarks的n理论包。那是\usepackage[thmarks]{ntheorem}
。
然后,您可以使用这些设置来获得您想要的内容......