LaTeX 中的表格方案

LaTeX 中的表格方案

我想要绘制如下图所示的表格(我不知道这种表格的正确名称,所以我无法研究类似的问题):

桌子

我完全不知道该如何绘制它。你知道任何绘制它的软件包/简单方法吗?如果可能的话,宏应该在每边画一个垂直条,加上任意数量的更小“表格”内的垂直线。每个部分的内容将始终采用 的形式$a \dots a$,每侧各有一个符号,中间的空间用点填充(可能超过 3 个点)。每个部分下方都有一个括号,其整个长度(或出于美观原因略小)。上方或侧面没有括号。

这看起来类似于表格环境,但是:

  1. 如何获得不同高度的垂直线?
  2. 我如何才能获得下面的括号?

正如您所猜测的,我无法提供 MWE。

答案1

一些低级编程。;-)

\documentclass{article}

\newcommand{\scheme}[3][6em]{%
  \leavevmode\vtop{\offinterlineskip\tabskip=0pt
    \setlength{\schemewidth}{#1}%
    \global\firstrowtrue
    \halign{\vrule depth\dp\strutbox##&&\makeschemecell{##}\cr
      &#2&\omit\vrule\cr
      \noalign{\global\firstrowfalse\hrule}
      \omit&#3&\omit\cr
    }%
  }%
}
\newcommand\makeschemecell[1]{%
  \iffirstrow
    \kern3pt
    \makebox[\schemewidth][s]{$#1\cdotfill#1$}%
    \kern3pt\vrule height3pt\kern-0.4pt
  \else
    \kern3pt
    $\underbrace{\makebox[\schemewidth]{}}_{#1}$%
    \kern3pt
  \fi
}
\makeatletter
\newcommand\cdotfill{%
  \leavevmode\cleaders\hb@[email protected]{\hss$\cdot$\hss}\hfill\kern\z@
}
\makeatother

\newif\iffirstrow
\newlength{\schemewidth}

\begin{document}

\scheme{a&b}{E&F}

\scheme[3em]
  {a&b&c&d}
  {E&F&G&H}

\end{document}

在此处输入图片描述

答案2

我只有一个快速而粗略的解决方案(必须跑)。我不知道如何制作“短”垂直线,所以我将每个表格单元格做得很短,这样内容就会悬在顶部。这样双行看起来就像一行,单行看起来就像一条短线。

它绝不适用于不同数量的“列”,但更改输入的数量并不太难。(循环处理未确定数量的输入有点困难。)

我希望有人能找到比我更好的解决方案:)

\documentclass[a4paper]{article}
\usepackage{array}
\begin{document}

\def\foo#1#2#3#4{%
  \begingroup
  \setlength\extrarowheight{-1.5ex}
  \def\y##1##2{\multicolumn{1}{c}{\smash{$\underbrace{\phantom{##1}}_{##2}$}}}
  \begin{tabular}{|cc|}
  &\\
  \multicolumn{1}{|c|}{\smash{$#1$}} & \smash{$#2$} \\
  \hline
  \y{#1}{#3} &
  \y{#2}{#4} \\
  \end{tabular}
  \endgroup
}

\foo{a\dots\dots a}{b\dots b}{E}{F}

\end{document}

相关内容