我正在尝试编写一个命令来缩短书写证明的命令。目前,我曾经使用
\newenvironment{proof}%
{\textbf{Proof:}}%
{\begin{flushright} $\blacksquare$ \end{flushright}}
现在我已经厌倦了\begin{proof}
一直写作,所以我想切换到\pf{ ...content... }
或\pf[ ...content... ]
。
我尝试过
\def\pf[#2\]{\begin{proof} #2 \end{proof}}
它不喜欢那样。我应该说我已经
\def\[#1\]{\begin{align}#1\end{align}}
因为align
,这就是为什么我没有使用它proof
。
答案1
我非常强烈推荐不是这样做。但是,这可能并不像你之前所做的那么糟糕align
,所以,如果你必须:
\documentclass{article}
\usepackage{xparse,amssymb}
\NewDocumentCommand \pf { +r[] } {%
\noindent\textbf{Proof:}
#1\hspace*{\fill}\nolinebreak$\blacksquare$}
\begin{document}
\pf[
Alice saw Nobody on the road, whereas the King did not.\\
So, Alice has sharper eyes than the King and Nobody is travelling on the road.]
\pf[
Alice saw Nobody on the road, whereas the King did not.\\
Hence, Alice has sharper eyes than the King.]
\end{document}
编辑:处理换行符/分页符会稍微好一些。[但是,正如我上面所说,这确实不是一个好方法。有些软件包和环境可以正确处理这些内容,同时保持代码的可理解性!]
答案2
我不会建议这样做,但这确实有效(没有任何保证)
\documentclass{article}
\usepackage{amsmath,amssymb}
\newenvironment{proof}%
{\textbf{Proof:}}%
{\hfill$\blacksquare$}
\def\pf#1{\begin{proof} #1 \end{proof}}
\begin{document}
\pf{some proof here}
\end{document}
这个比较好
- 使用 amsthm 及其环境
proof
等等。 - 使用
\newcommand
而不是\def
前者是 LaTeX 定义新宏的方式,用于检查宏的存在。