@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
以便
\extrarowheight
仅在本地设置- 如果只有一列,则删除多余的空间
我还将的定义简化\ibox
为人类形态。;-)