我如何制作一个带有一些叠加线条的表格?

我如何制作一个带有一些叠加线条的表格?

我使用 PowerPoint 制作了下表,现在我想使用 LuaLaTeX 或 XeLaTeX 生成它。我需要使用大小为 10.5 pt 的 Arial 字体。

我发现自己面临着几个挑战:

  • 生成表格
  • 分别在 2 和 3 以及 7 和 8 之间绘制两条虚线
  • 绘制连接表格中所有 5 的直线
  • 在桌子顶部绘制一串红色圆形节点
  • 对应值3,5的节点在3和4之间浮动

带有叠加线条的表格

我在网上搜索过,但没有找到类似的例子。我读过 TeX.SE 中有关表格​​的其他问题,我想我应该使用包matrix of nodes中提供的表格tikz。我读过 TikZ & PGF 手册中涵盖矩阵库的部分,但我还远远没有到达这里。我确实需要帮助。

答案1

这是一个具有pst-node和的解决方案arydshln。它包括使用普通tabularx环境并将相关单元定义为各种类型的节点,并通过节点连接将它们链接起来。

它仅编译xelatex

\documentclass{article}
\usepackage{array, tabularx, arydshln}
\usepackage{geometry} 
\usepackage{pst-node, multido}
\usepackage{fontspec}
\setsansfont{Arial}

\begin{document}
\begin{table}[h]
  \sffamily\renewcommand\arraystretch{1.8}\centering
  \fontsize{10.5}{13}\selectfont
  \psset{linecolor=red}
  \makebox[0pt]{\begin{tabularx}{1.2\textwidth}{|*{12}{ >{\centering\arraybackslash}X|}}
    \multicolumn{12}{c}{TITLE} \\
    \hline
    \multicolumn{12}{|c|}{SOME INFORMATION} \\
    \hline
    \multicolumn{4}{|c|}{GROUP 1} & \multicolumn{2}{c|}{GROUP 2} & \multicolumn{2}{c|}{GROUP 3} & \multicolumn{4}{c|}{GROUP 4} \\
    A & B & A & B & \multicolumn{2}{c|}{C} & \multicolumn{2}{c|}{D} & & & & \\
    AA & AA & BB & BB & CC & DD & AA & BB & EE & FF & GG & HH \\
    \hline
    10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 & 10 \\
    9 & 9 & 9 & 9 & 9 & 9 & 9 & 9 & 9 & 9 & 9 & 9 \\
    8 & 8 & 8 & 8 & 8 & 8 & 8 & 8 & \circlenode{c9}{8} & 8 & 8 & 8 \\
    \hdashline
    7 & 7 & 7 & 7 & 7 & 7 & 7 & 7 & 7 & \circlenode{c10}{7} & 7 & 7 \\
    6 & \circlenode{c2}{6} & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 & 6 \\
    \rnode{R1}{5} & \rnode{R2}{5} & \rnode{R3}{5} & \rnode{R4}{5} & \rnode{R5}{5} & \rnode{R6}{5} & \rnode{R7}{5} & \rnode{R8}{5} & \rnode{R9}{5} & \rnode{R10}{5} & \rnode{R11}{\circlenode{c11}{5}} & \rnode{R12}{5} \\
    \circlenode{c1}{4} & 4 & 4 & 4 &\circlenode{c5}{4} & 4 & \rnode{t7}{4} & \circlenode{c8}{4} & 4 & 4 & 4 & 4 \\
    3 & 3 & 3 & 3 & 3 & 3 & \rnode{b7}{3} & 3 & 3 & 3 & 3 & 3 \\
    \hdashline
    2 & 2 & \circlenode{c3}{2} & \circlenode{c4}{2} & 2 & 2 & 2 & 2 & 2 & 2 & 2 & \circlenode{c12}{2} \\
    1 & 1 & 1 & 1 & 1 & \circlenode{c6}{1} & 1 & 1 & 1 & 1 & 1 & 1 \\
    0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\
    \hline
    \end{tabularx}}
  \midAB(t7)(b7){m7}\rput(m7){\circlenode[framesep=0pt]{c7}{3,5}}%
  \multido{\ia=1+1, \ib=2+1}{11}{\ncline{c\ia}{c\ib}}
  \pnode[-0.85cm, 0](R1){R0}
  \pnode[0.85cm, 0](R12){R13}
  \psset{linewidth=0.5pt, linecolor=black, nodesep=3pt}
  \multido{\ia=0+1, \ib=1+1}{13}{\ncline{R\ia}{R\ib}}
\end{table}

\end{document} 

在此处输入图片描述

答案2

通过生成表格,你的意思是首先创建一个表格吗?

我建议将类似的事情分解成单独的任务(就像你列出的清单一样),然后一步一步地完成,从一个非常基本的结构开始,然后逐渐建立起来。这些任务中的每一个都可以在互联网上的各种示例中找到(特别是这里),但是如果你需要更直接的起点,这应该可以让你开始。

代码

\documentclass{article}
\usepackage{tikz}
\usepackage{fontspec}
\setmainfont{Arial}
\usetikzlibrary{fit,matrix}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[mycircle/.style={draw,circle, minimum size=1cm}]
% table
  \matrix[draw=black,row sep=0.75cm,column sep=0.75cm]{
    \node {}; & \node {group 1}; & \node {}; \\
    \node {a}; & \node {b}; & \node {a}; \\
    \node {aa}; & \node {aa}; & \node {bb}; \\
    \node {..}; & \node {..}; & \node {..}; \\
    \node {6}; & \node(baa6)[draw=red,text=black,mycircle] {6}; & \node {6}; \\
    \node(aaa5) {5}; & \node(baa5) {5}; & \node(abb5) {5}; \\
    \node(aaa4)[draw=red,text=black,mycircle] {4}; & \node {4}; & \node {4}; \\
    \node {3}; & \node {3}; & \node(abb3) {3}; \\
    \node(aaa2) {2}; & \node {2}; & \node(abb2) {2}; \\
  };
% straight line between 5's
  \draw(aaa5)--(baa5)--(abb5);
% dashed lines above 2's
  \draw[dashed](aaa2.north west)--(abb2.north east);
% the 3,5 node
  \node(aab35)[draw=red,text=black,mycircle,above=0.05cm of abb3] {3.5};
% string of red circular nodes
  \draw[red](aaa4)--(baa6)--(aab35);
\end{tikzpicture}
\end{document}

结果

在此处输入图片描述

相关内容