在数学模式下提高括号中的内容

在数学模式下提高括号中的内容

@egreg 帮助我正确计算了 AVM 的数学运算(在 AVM 中对齐数学括号)。我注意到,将类型放在 AVM 顶部更为常见,因此我更改了代码以反映这一点。但是,我认为现在 AVM 顶部和类型信息之间的空间太大了。

在此处输入图片描述

类型单词当地的, 和类别应该更高。当然,具体高多少取决于字体。有办法吗?整个表格内容应该升高,但底部不会因为升高而留出额外空间。

\documentclass{article}


\usepackage{array}
\setlength{\extrarowheight}{1pt}

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

\def\ibox#1{\mbox{}\setbox2=\hbox{$\scriptstyle #1$}\lower.2ex\vbox{\hrule
        \hbox{\vrule\kern1.25pt 
        \vbox{\kern1.25pt\box2\kern1.25pt}\kern1.25pt\vrule}\hrule}}

\newcommand{\liste}[1]{%
\mbox{%
$%
\left\langle\begin{tabular}{@{}>{\upshape\scshape}l@{}}#1\end{tabular}\right\rangle%
$%
}%
}

\newcommand{\phonliste}[1]{%
\mbox{%
$%
%
\left\langle \mbox{\normalfont\itshape#1} \right\rangle%
$%
}%
}


\begin{document}

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


\end{document}

答案1

您可以删除第一行的额外高度:

\documentclass{article}
\usepackage{array}

\newcommand{\ms}[2][]{%
  \mbox{%
    \setlength{\extrarowheight}{1pt}% we don't want it to affect every array, do we?
    \delimiterfactor=1000 \delimitershortfall=0pt
    \tabcolsep=0pt
    $\left[%
    \begin{tabular}{>{\upshape\scshape}l@{}>{\hspace*{5pt}\normalfont\itshape}l}
    \noalign{\vspace{-\extrarowheight}}
    \if\relax\detokenize{#1}\relax\else
    \multicolumn{2}{>{\normalfont\itshape}l}{#1}%
     \\ 
    \fi
    #2%
    \end{tabular}%
    \right]$%
  }%
  \vspace{1mm}%
}

\newcommand{\ibox}[1]{{%
  \setlength{\fboxsep}{1.25pt}%
  \fbox{$\scriptstyle #1$}\,%
}}

\newcommand{\liste}[1]{%
  \mbox{%
    $%
    \left\langle
    \begin{tabular}{@{}>{\upshape\scshape}l@{}}#1\end{tabular}
    \right\rangle
    $%
  }%
}

\newcommand{\phonliste}[1]{%
  \mbox{%
    $%
    \left\langle
    \mbox{\normalfont\itshape#1}%
    \right\rangle
    $%
  }%
}


\begin{document}

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

\end{document}

在此处输入图片描述

这些细微的差别是由于 TeX 计算分隔符大小的方式造成的,并且这个问题没有简单的解决办法。

注意定义的变化,\ms以便

  1. \extrarowheight仅在本地设置
  2. 如果只有一列,则删除多余的空间

我还将的定义简化\ibox为人类形态。;-)

相关内容