如何在 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}