表格周围的括号过大

表格周围的括号过大

我遇到了以下问题。我正在使用表格环境创建短语结构规则(语言学的东西,不关心它),并且我需要在规则中为那些可选的部分添加括号。这是我正在使用的演示代码:

\documentclass{article}

\newcommand{\symb}[2]{%
\begin{tabular}[t]{c}
\normalsize{#1}\\
\footnotesize{#2}
\end{tabular}}
% Optional rule support
\newcommand{\opt}[1]{\ensuremath{\left(#1\right)}}
% Macros
\newcommand{\ra}{\ensuremath{\rightarrow}}
\newcommand{\ua}{\ensuremath{\uparrow}}
\newcommand{\da}{\ensuremath{\downarrow}}
\newcommand{\blank}{\ensuremath{\quad}}

\begin{document}
    \symb{IP}{}\blank
    \symb{\ra}{}\blank
    \opt{
        \begin{tabular}[t]{c}
            \normalsize{TopicP}\\
            \footnotesize{{\sc (\ua topic) = \da}}\\
            \footnotesize{{\sc (\ua topic) = (\ua TopicPath)}}
        \end{tabular}
    }\blank
    \opt{\symb{IP}{\ua = \da}}
\end{document}

我知道这段代码并不是你见过的最优雅的东西。这是因为我不得不修改一个用于 LFG 短语结构规则的相当知名的宏……遗憾的是它不支持多个注释。因此,我使用表格以便在短语类别(NP、IP 等)下有多个注释。

谢谢!

答案1

从 s 中删除可选的[t]定位参数tabular;为了保持与第一行的对齐IP ->,您可以使用另外三行tabular\symb{IP}{}\blank\symb{\ra}{}\blank其中第一行有,另外两行有空行:

\documentclass{article}

\newcommand{\symb}[2]{%
\begin{tabular}{c}
\normalsize #1\\
\footnotesize #2
\end{tabular}}
% Optional rule support
\newcommand{\opt}[1]{\ensuremath{\left(#1\right)}}
% Macros
\newcommand{\ra}{\ensuremath{\rightarrow}}
\newcommand{\ua}{\ensuremath{\uparrow}}
\newcommand{\da}{\ensuremath{\downarrow}}
\newcommand{\blank}{\quad}

\begin{document}
    \begin{tabular}{@{}c@{}}
    \symb{IP}{}\blank
    \symb{\ra}{}\blank \\ \\
    \end{tabular}%
    \opt{
        \begin{tabular}{c}
            \normalsize{TopicP} \\
            \footnotesize \scshape (\ua topic) = \da\\
            \footnotesize \scshape (\ua topic) = (\ua TopicPath)
        \end{tabular}
    }\blank
    \opt{\symb{IP}{\ua = \da}}

\end{document}

在此处输入图片描述

我还将过时的 改为\sc\scshape删除了一些多余的括号(\fontnotesize\normalsize\schape不接受参数)。此外,埃格尔他在评论中提到,由于\quad不是数学模式命令,\newcommand{\blank}{\quad}所以是一个更正确的定义。

答案2

删除所有位置说明[t]\begin{tabular}{c}

\documentclass{article}

\newcommand{\symb}[2]{%
\begin{tabular}{c}
\normalsize{#1}\\
\footnotesize{#2}
\end{tabular}}
% Optional rule support
\newcommand{\opt}[1]{\ensuremath{\left(#1\right)}}
% Macros
\newcommand{\ra}{\ensuremath{\rightarrow}}
\newcommand{\ua}{\ensuremath{\uparrow}}
\newcommand{\da}{\ensuremath{\downarrow}}
\newcommand{\blank}{\ensuremath{\quad}}

\begin{document}
    \symb{IP}{}\blank
    \symb{\ra}{}\blank
    \opt{
        \begin{tabular}{c}
            \normalsize{TopicP}\\
            \footnotesize{{\sc (\ua topic) = \da}}\\
            \footnotesize{{\sc (\ua topic) = (\ua TopicPath)}}
        \end{tabular}
    }\blank
    \opt{\symb{IP}{\ua = \da}}
\end{document}

在此处输入图片描述

说明者[t]将把表格在顶部、[c]中心和[b]底部对齐,正如 cyberSingularity 所指出的那样。

答案3

如果您想要使用分隔符顶部对齐的表格,您可以使用delarray

在此处输入图片描述

\documentclass{article}

\usepackage{delarray}

\newcommand{\symbx}[4]{%
\begin{tabular}[t]#1{c}#2
\normalsize{#3}\\
\footnotesize{#4}
\end{tabular}}
\newcommand\symb{\symbx{}{}}
\newcommand\bsymb{\symbx()}
% Optional rule support
\newcommand{\opt}[1]{\ensuremath{\left(#1\right)}}
% Macros
\newcommand{\ra}{\ensuremath{\rightarrow}}
\newcommand{\ua}{\ensuremath{\uparrow}}
\newcommand{\da}{\ensuremath{\downarrow}}
\newcommand{\blank}{\ensuremath{\quad}}

\begin{document}
    \symb{IP}{}\blank
    \symb{\ra}{}\blank
        \begin{tabular}[t]({c})
            \normalsize{TopicP}\\
            \footnotesize{{\sc (\ua topic) = \da}}\\
            \footnotesize{{\sc (\ua topic) = (\ua TopicPath)}}
        \end{tabular}
    \blank
    \bsymb{IP}{\ua = \da}
\end{document}

相关内容