我正在使用一个工具来生成大量的 LaTeX,其中包含我用来排版的推理规则数学部分。
下面,我得到了一个与我生成的代码非常相似的 MWE。我想做的是将其重新定义为\renewcommand{\ottpremise}[1]{#1\\}
,以分隔 mathpartir 中的每个前提。这允许它决定在哪里添加换行符,这是我追求的主要功能。
但是,当我执行此操作时,出现以下错误:
Argument of \\ has an extra }.
\\
我认为问题可能与最后一个前提之后剩余的一个额外内容有关。
是什么导致了这个错误? 有没有办法\\
在我的前提之间很好地添加,因为每个前提都包含在对的调用中\ottpremise
? 是否有必要/可以避免\\
最后的额外内容?
代码如下:
\documentclass{article}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathpartir}
\newcommand{\ottdefntstep}[1]{
\begin{ottdefnblock}[#1]{
$\Gamma \mid \Theta \vdash \mathit{T} \leadsto \mathit{T'}$
}{}
\ottusedrule{\ottdruleTStepAssoc{}}
\end{ottdefnblock}
}
\newcommand{\ottdruleTStepAssoc}[1]{\ottdrule[#1]{%
\ottpremise{\Gamma \mid \Theta \Vdash \tau : \mathit{D} \langle \tau_{{\mathrm{1}}} , \, .. \, , \tau_{\mathit{n}} {;} \mathit{X} \mapsto \tau' \rangle}%
\ottpremise{\Gamma \mid \Theta \vdash ( [ \tau' / \mathit{X} _ \mathit{D} ] ) \leadsto \mathit{T'}}%
}{
\Gamma \mid \Theta \vdash \mathit{T} \leadsto \mathit{T'}}{%
{TStepAssoc}{}%
}}
\newcommand{\ottusedrule}[1]{#1\and}
\newcommand{\ottdrule}[4][]{{\inferrule[#4]{TODO #2 TODO}{#3}}}
\newcommand{\ottpremise}[1]{#1}
\begin{document}
\newenvironment{ottdefnblock}[3][]
{
\begin{mathpar}
}
{
\end{mathpar}
}
\ottdefntstep{}
\end{document}