![如何同时使用语义和最终证明包?](https://linux22.com/image/413402/%E5%A6%82%E4%BD%95%E5%90%8C%E6%97%B6%E4%BD%BF%E7%94%A8%E8%AF%AD%E4%B9%89%E5%92%8C%E6%9C%80%E7%BB%88%E8%AF%81%E6%98%8E%E5%8C%85%EF%BC%9F.png)
我想使用semantic
包来编写推理规则,我也想使用proof-at-the-end
包将我的定理的证明放在附录中。但是,当我将这两个包一起使用时,似乎我不再能正确地使用宏的第一个参数。下面是使用宏的示例\frac
:
\documentclass{article}
\usepackage{amsthm}
\usepackage{proof-at-the-end}
\usepackage{semantic}
\newtheorem{thm}{Theorem}
\begin{document}
\begin{theoremEnd}{thm}
$2 = \frac{4}{2}$.
\end{theoremEnd}
\begin{proofEnd}
Because of the rule
\[ \inference{bc \neq 0}{\frac{a}{b} = \frac{ac}{bc}} \]
we can conclude that $2 = \frac{4}{2}$.
\end{proofEnd}
\printProofs
\end{document}
如截图所示,这个等式$2 = \frac{4}{2}$
在定理的陈述中看起来是正确的,但在证明中,分子被推到了分母中,而分母被推到了分数的右边,就好像我写的$2 = \frac{}{4}2$
一样。
如果我删除semantic
包和规则,两个分数都会正确呈现。如果我删除包和宏,并分别用和替换和环境\inference
,问题也会消失。proof-at-the-end
\printProofs
theoremEnd
proofEnd
thm
proof
我如何同时使用这两个包来附加包含推理规则的证明?
答案1
编译后,看一下生成的文件的内容pratenddefaultcategory.tex
:
\label{proofsection:prAtEndii}\begin{proof}[Proof of \autoref{thm:prAtEndii}]\phantomsection\label{proof:prAtEndii}Because of the rule \[ \inference {bc \neq 0}{\frac {a}{b} = \frac {ac}{bc}} \] we can conclude that $2 = \frac {4}{2}$.\end{proof}
如您所见,该proof-at-the-end
包在宏和其参数之间插入空格。通常这没什么关系但是包shorthand
的特性semantic
导致这个间距的表现有点不同:
\documentclass{article}
\usepackage[shorthand]{semantic}
\begin{document}
$\frac {4}{2} = \frac {4}{2}$
\end{document}
因为proof-at-the-end
没有修改你的定理陈述中的空格,所以分数在那里正确呈现。
这个较小的例子利用了semantic
封装选项:
有两种方式可以加载
semantic
包。你可以加载所有部件,或者为了节省时间和空间,你可以只加载要使用的部分。在第一种情况下,你只需包括
\usepackage{⟨semantic⟩}
在您的文件序言中。
在另一种情况下,你包括
\sepackage[⟨parts⟩]{⟨semantic⟩}
在您的文档序言中。是您想要包含的部分的逗号
⟨parts⟩
分隔列表。可能包括:ligature
、、、和。inference
tdiagram
reserved
shorthand
因此,假设您不需要使用这些shorthand
功能,您可以通过在代码中替换此行来解决问题
\usepackage{semantic}
使用以下行:
\usepackage[inference]{semantic}