如何同时使用语义和最终证明包?

如何同时使用语义和最终证明包?

我想使用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}

编译上述 LaTeX 代码,问题描述如下

如截图所示,这个等式$2 = \frac{4}{2}$在定理的陈述中看起来是正确的,但在证明中,分子被推到了分母中,而分母被推到了分数的右边,就好像我写的$2 = \frac{}{4}2$一样。

如果我删除semantic包和规则,两个分数都会正确呈现。如果我删除包和宏,并分别用和替换和环境\inference,问题也会消失。proof-at-the-end\printProofstheoremEndproofEndthmproof

我如何同时使用这两个包来附加包含推理规则的证明?

答案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}

上述 LaTeX 代码的编译结果显示,左分数正确,右分数错误

因为proof-at-the-end没有修改你的定理陈述中的空格,所以分数在那里正确呈现。

这个较小的例子利用了semantic封装选项

有两种方式可以加载semantic包。你可以加载所有部件,或者为了节省时间和空间,你可以只加载要使用的部分。

在第一种情况下,你只需包括

\usepackage{⟨semantic⟩}

在您的文件序言中。

在另一种情况下,你包括

\sepackage[⟨parts⟩]{⟨semantic⟩}

在您的文档序言中。是您想要包含的部分的逗号⟨parts⟩分隔列表。可能包括:ligature、、、和。inferencetdiagramreservedshorthand

因此,假设您不需要使用这些shorthand功能,您可以通过在代码中替换此行来解决问题

\usepackage{semantic}

使用以下行:

\usepackage[inference]{semantic}

编译原始问题的 LaTeX 代码,并修复问题

相关内容