我想排版包含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
以消除冲突用法。