将数组插入语义的推理规则

将数组插入语义的推理规则

我想排版包含array前提中的表格(或表格)的推理规则。我正在使用semantic以数学模式设置前提(和结论)的包,所以我认为这可能有效:

\inference{\expr{axis} \in \left\{
    \begin{array}{l}
    \expr{child}\\ \expr{descendant}
    \end{array}
\right\} }{conclusion}

然而,这给了我一个令我困惑的错误信息:

ERROR: Missing \cr inserted.

--- TeX said ---
<inserted text> 
                \cr 
l.56 \right\} }
               {\expr{axis::node-test predicate*} : \<node-set>}
--- HELP ---
From the .log file...

I'm guessing that you meant to end an alignment here.

这很奇怪,因为在数学环境中单独排版前提是可以的:

$
\expr{axis} \in \left\{ \begin{array}{l}
\expr{child}\\\expr{descendant}
\end{array}
\right\}
$

您能否解释一下为什么我会收到上述错误消息以及如何消除它?

PS:\expr{}基本上就是\texttt{}

答案1

您可以使用大括号来“保护”其array结构:\inference

在此处输入图片描述

\documentclass{article}
\usepackage{semantic}% http://ctan.org/pkg/semantic
\newcommand{\expr}{\texttt}
\begin{document}
\inference{\expr{axis} \in \left\{
    {\begin{array}{l}
    \expr{child}\\ \expr{descendant}
    \end{array}}
\right\} }{conclusion}
\end{document}​

之所以会出现问题,是因为\inference宏以嵌套的方式处理前提(第一个参数),期望\\;实际上,它期望<something>\\<something>\end,并且构造\\中的array和这个定义相冲突。

在这种情况下,您也可以替换\\\cr以消除冲突用法。

相关内容