如何在某些列之间添加虚线?

如何在某些列之间添加虚线?

我在 Beamer 框架中有一个表格,我想在某些列之间添加虚线。但是,我有一些限制。首先,我想确保在某些转换之后禁用线条,这样它们应该可以visible正常工作。接下来,我希望能够在虚线的顶部或底部写一段文字。我尝试使用该arydshln软件包,但它似乎没有提供我需要的灵活性。

\documentclass[aspectratio=169,xcolor=dvipsnames]{beamer}

\usepackage{arydshln}

\begin{document}

\begin{frame}{Test}
\begin{figure}
\def\arraystretch{1.2}
%\setlength{\tabcolsep}{0.2em}
\begin{tabular}{ c : c c c : c }
$e$ & $e+1$ & $e+2$ & $e+3$ & $e+4$ \\
\hline
$k_{e}$ & $k_{e+1}$ & $k_{e+2}$ & $k_{e+3}$ & $k_{e+4}$ \\

$\Delta_{e}$ & $\Delta_{e+1}$ & $\Delta_{e+2}$ & $\Delta_{e+3}$ & $\Delta_{e+4}$\\

$\sigma_{e}$ & $\sigma_{e+1}$ & $\sigma_{e+2}$ & $\sigma_{e+3}$ & $\sigma_{e+4}$ \\ 
\end{tabular}
\end{figure}
\end{frame}

\end{document}

更确切地说,我想实现如下所示的效果。有什么想法可以使用表格或 TikZ 来实现吗?

在此处输入图片描述

答案1

由于表格是重复的,这里我会使用 tikz 和一个\foreach命令。像这样:

\documentclass[aspectratio=169,xcolor=dvipsnames]{beamer}
%\usepackage{arydshln}
\usepackage{tikz}

\begin{document}
\begin{frame}{Test}
\begin{figure}
\begin{tikzpicture}[y={(0cm,-1cm)}]
\foreach\i in {0,...,4}
{% TABLE DATA
  \ifnum \i > 0
    \def\mytext{e+\i}
  \else
    \def\mytext{e}
  \fi
  \node at (1.2*\i,0) {$\mytext$};
  \node at (1.2*\i,1) {$k_{\mytext}$};
  \node at (1.2*\i,2) {$\Delta_{\mytext}$};
  \node at (1.2*\i,3) {$\sigma_{\mytext}$};
}
% LINES
\draw[thick] (-0.6,0.5) -- (5.4,0.5);
\only<2>
{%
  \draw[thick,dashed] (0.6,-0.5) -- (0.6,3.5) node [red,below] {Text 1};
  \draw[thick,dashed] (4.2,-0.5) -- (4.2,3.5) node [red,below] {Text 2};
}
\useasboundingbox (-0.6,-0.5) rectangle (5.4,6);
\end{tikzpicture}
\end{figure}
\end{frame}
\end{document}

在此处输入图片描述 更新:我添加了\only转换命令。第一次我忘记了。

答案2

使用{NiceArray}nicematrixTikz。

\documentclass[aspectratio=169,xcolor=dvipsnames]{beamer}

\usepackage{nicematrix,tikz}

\begin{document}

\begin{frame}{Test}
\begin{figure}
\def\arraystretch{1.2}
$\begin{NiceArray}{ccccc}
e & e+1 & e+2 & e+3 & e+4 \\
\hline
k_{e} & k_{e+1} & k_{e+2} & k_{e+3} & k_{e+4} \\

\Delta_{e} & \Delta_{e+1} & \Delta_{e+2} & \Delta_{e+3} & \Delta_{e+4}\\

\sigma_{e} & \sigma_{e+1} & \sigma_{e+2} & \sigma_{e+3} & \sigma_{e+4} \\ 
\CodeAfter
  \only<2>{\tikz \draw [dashed] (1-|2) -- (last-|2) node [below] {\color{red} Text} ;}
\end{NiceArray}$
\end{figure}
\end{frame}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容