代码

代码

如何在 LaTeX 中的表格单元格之间添加线条,就像这张图上 38 和 77 之间的线条一样?

我只有这个绘制表格的代码:

\documentclass{scrartcl}

\begin{document}

\begin{tabular}{ |c|c|c|c|c|c|c|c|c|c|c|c|c| }
\hline
23 & 18 & 41 & 38 & 73 & 56 & 52 & 91 & 77 & 60 & 95 & 87 & 64\\ 
\hline
\end{tabular}

\end{document}

答案1

这里我介绍\mybox{number}\connect{start}{mid}{end}完成任务。我使用,\ignorespaces这样你就不必记住到处添加%标志了。

底线高度和规则厚度分别由\rlht和控制\rlwd。适用于任何宽度的盒装内容(例如\mybox{1}并且\mybox{1248}都有效)。

\documentclass{article}
\usepackage{stackengine}
\newsavebox\tmpbox
\def\rlht{1ex}    \def\rlwd{.8pt}
\newcommand\vstrut{\smash{\makebox[0pt]{\rule{\rlwd}{\rlht}}}}
\def\conR#1{%
  \savebox\tmpbox{#1}%
  \stackunder[\dimexpr\rlht-\rlwd\relax]{\usebox{\tmpbox}}{%
    \rule{.5\wd\tmpbox}{0pt}\vstrut\rule{.5\wd\tmpbox}{\rlwd}}%
}
\def\conL#1{%
  \savebox\tmpbox{#1}%
  \stackunder[\dimexpr\rlht-\rlwd\relax]{\usebox{\tmpbox}}{%
    \rule{.5\wd\tmpbox}{\rlwd}\vstrut\rule{.5\wd\tmpbox}{0pt}}%
}
\def\conM#1{%
  \savebox\tmpbox{#1}%
  \stackunder[\dimexpr\rlht-\rlwd\relax]{\usebox{\tmpbox}}{%
    \rule{\wd\tmpbox}{\rlwd}}%
}
\newcommand\connect[3]{\conR{#1}\conM{#2}\conL{#3}\ignorespaces}
\newcounter{Index}
\def\mybox#1{%
  \stackon[1pt]{\fbox{#1}}{\scriptsize\arabic{Index}}%
  \stepcounter{Index}%
  \kern-\fboxrule%
  \ignorespaces%
}
\begin{document}
\mybox{23}\mybox{18}\mybox{41}
\connect{\mybox{38}}{\mybox{73}\mybox{56}\mybox{52}\mybox{91}}{\mybox{77}}
\mybox{60}\mybox{95}\mybox{87}\mybox{64}
\end{document}

在此处输入图片描述

答案2

另一个解决方案是使用 TikZ。

代码

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}
  \matrix(m)[matrix of nodes, 
    row sep=-\pgflinewidth, column sep=-\pgflinewidth, nodes={draw},
  ]{
    23 & 18 & 41 & 38 & 73 & 56 & 52 & 91 & 77 & 60 & 95 & 87 & 64\\ 
  };
  \draw[very thick](m-1-1.north west)rectangle(m-1-13.south east); % border
  \foreach \i in {1,...,13}{
    \pgfmathparse{\i-1}
    \node[at=(m-1-\i.north),anchor=south,font=\footnotesize]{\pgfmathprintnumber{\pgfmathresult}};
  }
  \draw(m-1-4.south)|-+(0,-5pt)-|(m-1-9.south);
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

答案3

{NiceTabular}这是使用和 TikZ 的解决方案,nicematrix通过使用 创建的 PGF/TikZ 节点来绘制线nicematrix

\documentclass{scrartcl}
\usepackage{nicematrix,tikz}

\begin{document}

\begin{NiceTabular}{*{13}{c}}[hvlines,first-row,code-for-first-row=\scriptsize]
0  & 1  & 2  & 3  & 4  & 5  & 6  & 7  & 8  & 9  & 10 & 11 & 12 \\
23 & 18 & 41 & 38 & 73 & 56 & 52 & 91 & 77 & 60 & 95 & 87 & 64\\ 
\CodeAfter \tikz \draw (2-|4.5) -- ++(0,-1.5mm) -| (2-|9.5) ; 
\end{NiceTabular}

\end{document}

上述代码的输出

相关内容