在 AVM 中对齐数学括号

在 AVM 中对齐数学括号

我想排版 AVM。一位同事写了以下代码,效果很好。但是括号有点问题。有些括号没有正确对齐。例如,第二个右括号太低了:

在此处输入图片描述

这是代码。 \ms 检查是否提供类型(以斜体表示)作为可选参数。

\documentclass{article}


\usepackage{array}

\setlength{\extrarowheight}{1pt}

\def\ms{\futurelet\msLook\msdecide}
\def\msdecide{\ifx\msLook[\let\next=\xxtms%
\else\let\next=\xxms\fi\next}
%
\def\xxtms[#1]#2{%
\mbox{%
\tabcolsep0pt\arraycolsep0pt%
$%
\left[%
\begin{tabular}{>{\upshape\scshape}l@{\hspace{5pt}}>{\normalfont\itshape}l}%
#2%
\multicolumn{2}{>{\normalfont\itshape}l}{#1}%
\end{tabular}%
\right]%
$%
}%
\vspace{1mm}%
}

\def\xxms#1{%
\mbox{%
\tabcolsep0pt\arraycolsep0pt%
$%
\left[%
\begin{tabular}{>{\upshape\scshape}l@{\hspace{5pt}}>{\normalfont\itshape}l}%
#1%
\end{tabular}%
\rule{0mm}{5mm}%
\right]%
$%
}%
\vspace{1mm}%
}

\begin{document}

\ms[word]{
syntax-semantics & \ldots \ms[local]{ category  & \ms[category]{ head & \ms[noun]{ case & 1\\
                                                                                               }\\[6mm]
                                                                               subcat & Det[\textsc{case}~1] \\
                                                                             } \\[6mm]
                                          content & \ldots \ms[grammatik]{ inst & X \\
                                                                                    }\\
            }\\
}



\end{document}

编辑:

类似这样的案例似乎存在一个问题:

\ms{
synsem$|$loc$|$cat \ms{ head & \ms[verb]{vform & fin
                                       }\\
                        subcat & \ldots\\
                      }
}

输出如下所示:

在此处输入图片描述

问题在于最右边的两个括号之间有太多空间。

答案1

您可能想要设置\delimiterfactor=1000\delimitershortfall=0pt,以确保分隔符始终覆盖数组。

我修改了 的代码以\ms避免代码重复;而且没有必要(现在也是错误的)用 来结束 的\ms参数\\

\documentclass{article}

\usepackage{array}

\setlength{\extrarowheight}{1pt}

\makeatletter
\newcommand{\ms}[2][]{%
  \mbox{%
    \delimiterfactor=1000 \delimitershortfall=0pt
    \tabcolsep=0pt
    $\left[%
    \begin{tabular}{>{\upshape\scshape}l@{\hspace{5pt}}>{\normalfont\itshape}l}
    #2%
    \if\relax\detokenize{#1}\relax\else
     \\ \multicolumn{2}{>{\normalfont\itshape}l}{#1}%
    \fi
    \end{tabular}%
    \right]$%
  }%
  \vspace{1mm}%
}

\begin{document}

\ms[word]{
  syntax-semantics & \ldots 
  \ms[local]{
    category &
    \ms[category]{
      head & \ms[noun]{ case & 1 }
      \\[6mm]
      subcat & Det \ms{ case & 1 }
    }
    \\[6mm]
    content & \ldots \ms[grammatik]{ inst & X }
  }
}

\end{document}

一行对象存在问题(我留下一行只是为了展示它)。解决方案是在本例中\ms不使用,而应该对括号使用和。\ms\textup[\textup]

在此处输入图片描述

相关内容