我想要绘制如下图所示的表格(我不知道这种表格的正确名称,所以我无法研究类似的问题):
我完全不知道该如何绘制它。你知道任何绘制它的软件包/简单方法吗?如果可能的话,宏应该在每边画一个垂直条,加上任意数量的更小“表格”内的垂直线。每个部分的内容将始终采用 的形式$a \dots a$
,每侧各有一个符号,中间的空间用点填充(可能超过 3 个点)。每个部分下方都有一个括号,其整个长度(或出于美观原因略小)。上方或侧面没有括号。
这看起来类似于表格环境,但是:
- 如何获得不同高度的垂直线?
- 我如何才能获得下面的括号?
正如您所猜测的,我无法提供 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
&\omit\vrule\cr
\noalign{\global\firstrowfalse\hrule}
\omit&\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}