纯 TeX 证明结束宏

纯 TeX 证明结束宏

我正在编写一个宏来排版定理的证明。通过删除与这个问题无关的内容,它可以简化为

\def\demo#1\enddemo{\noindent{\it Proof.\quad}#1\quad\copy\cvdbox\medskip}

其中cvdbox是包含证明结束符号的框。例如,设它是:

\newbox\cvdbox
\setbox\cvdbox=\hbox{\bf CVD}

宏按预期完成其工作,但当证明以显示的公式结尾时除外,该公式位于两个美元符号之间。事实上,\cvdbox单独放置在新行上,而不是放置在最后一行的右侧。我希望,当证明以显示的公式结尾时, 设置\cvdbox在显示的末尾,就在结束的两个美元符号之前。例如,我希望

\demo
 ...
$$\int_a^bf.$$
\enddemo

转化为

\noindent{\it Proof.\quad}... $$\int_a^bf.\quad\copy\cvdbox$$\medskip}

代替

\noindent{\it Proof.\quad}... $$\int_a^bf.$$\quad\copy\cvdbox\medskip}

我能怎么做?

答案1

如果您不需要将 QED 标记放在显示行中的公式后面,而是放在此行的右对齐位置,那么您可以使用以下命令:

\input plipsum

\def\demo{\par\noindent{\it Proof.\quad}}
\def\enddemo{\ifdim\lastskip=0pt % after display
      \par \dimen0=\lastskip \removelastskip 
      \advance\dimen0 by\prevdepth \kern-\prevdepth
      \nointerlineskip \vbox to0pt{\vss\line{\hss\bf QED}}
      \vskip\dimen0
   \else \unskip \quad\hbox{\bf QED}\fi
   \medskip
}

\demo
\lipsum{1}
$$
\int_a^bf.
$$
\enddemo

\demo
\nopar\lipsum{1}
\enddemo

\end

答案2

我认为你想定义一个\qedhere宏来使用

\input plipsum

\long\def\demo#1\enddemo{%
  \global\qedtrue
  \noindent{\it Proof.\quad}%
  #1%
  \ifqed\quad\copy\cvdbox\fi
  \medskip
}
\newif\ifqed
\def\qedhere{\global\qedfalse\rlap{\quad\copy\cvdbox}}

\newbox\cvdbox
\setbox\cvdbox=\hbox{\bf CVD}

\demo
\lipsum{1}
$$
\int_a^bf.\qedhere
$$
\enddemo

\demo
\nopar\lipsum{1}
\enddemo

\bye

在此处输入图片描述

相关内容