使用矩形覆盖突出显示表格行

使用矩形覆盖突出显示表格行

我试图通过在表格行上方绘制一个矩形来突出显示该行。问题在于,表格的代码是从外部统计软件预先编写的,然后使用命令包含在主文档中\input。出于这个原因,如果可能的话,我希望避免在表格中放置代码。我提供了一个简单的示例:

\documentclass{article}

\begin{document}

\begin{center}
\input{table.tex}
\end{center}

\end{document}

其代码如下table.tex

\begin{tabular}{l*{3}{c}}
& A & B & C \\
\hline
1 & blah & blah & blah \\
2 & blah & blah & blah \\
3 & blah & blah & blah \\
\hline
\end{tabular}

我想在第二行周围添加一个红色矩形(可能是圆角的),可能使用 tikz 或其他解决方案。如果这很重要,表格最终将出现在幻灯片中beamer,但我认为包含该代码是不必要的。

答案1

您可以将 放入\inputa 中node并相对于节点的角绘制一个矩形。

在此处输入图片描述

\begin{filecontents*}{table.tex}
\begin{tabular}{l*{3}{c}}
& A & B & C \\
\hline
1 & blah & blah & blah \\
2 & blah & blah & blah \\
3 & blah & blah & blah \\
\hline
\end{tabular}
\end{filecontents*}
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{frame}
\begin{center}
\begin{tikzpicture}
\node (table) {\input{table.tex}};
\draw [red,ultra thick,rounded corners]
  ($(table.south west) !.3! (table.north west)$)
  rectangle 
  ($(table.south east) !.5! (table.north east)$);
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}

对上述代码的一些解释

默认情况下,上有几个标准锚点node,以指南针方向表示,使用语法 访问<node name>.<anchor>。例如MyNode.north west的左上角MyNode

要获取两个现有坐标之间的坐标,您可以使用 TikZ 库calc。这将在第节中描述13.5 坐标计算手动的. 它提供了语法

($(<nodename or coordinate>) ! <factor> ! (<nodename or coordinate>)$)

美元符号表示应进行坐标计算。<factor>是一个数字,表示该点在两个指定节点之间的线上相对于节点之间的距离应该有多远。例如,

($(0,0) !.3! (1,0)$)

(0,0)是和之间的 30% (1,0),也就是说(0.3,0)

换句话说,

\draw [red,ultra thick,rounded corners]
  ($(table.south west) !.3! (table.north west)$)
  rectangle 
  ($(table.south east) !.5! (table.north east)$);

rectangle从左下角到左上角距离的 30% 点到右下角和右上角中间的点绘制一个。

答案2

这是一个通过彩色获取矩形的 sans-TikZ 方法\fbox

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\newsavebox{\mytable}
\begin{document}

\begin{center}
\begin{lrbox}{\mytable}
\input{table.tex}
\end{lrbox}
%\setlength{\fboxrule}{2pt}% Modify rule width if necessary
\ooalign{%
  \hss\usebox{\mytable}\hss \cr
  {\color{red}%
   \fbox{\phantom{\rule[-5pt]{\dimexpr\wd\mytable+10pt}{\dimexpr\baselineskip+5pt}}}%
  }
}
\end{center}

\end{document}​

将桌子\input存放在一个盒子中\mytable,以获得宽度。随后将盒子放置5pt在桌子的两侧,并在彩色内放置一个适当尺寸的空白盒子,使其重叠\fbox

在 中\ooalign,表格居中(因为它的宽度小于较宽的10pt\fbox,使用\hss... \hss。这是用彩色的套印\fbox。这是一个快速课程\ooalign

您还可以反转序列以使用阴影突出显示:

在此处输入图片描述

\documentclass{article}
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\newsavebox{\mytable}
\begin{document}

\begin{center}
\begin{lrbox}{\mytable}
\input{table.tex}
\end{lrbox}%
\setlength{\fboxrule}{2pt}% Modify rule width if necessary
\ooalign{%
  {\fcolorbox{red!50}{red!30}{%
     \phantom{\rule[-5pt]{\dimexpr\wd\mytable+10pt}{\dimexpr\baselineskip+5pt}}%
  }} \cr
  \hss\usebox{\mytable}\hss
}
\end{center}

\end{document}​

答案3

如果您不想将表格输入tikz,请使用这个简单的解决方案:

\begin{tikzpicture}[overlay]
\draw[red,ultra thick,rounded corners] (5.5,5.3) rectangle (6.4,9.2);
\end{tikzpicture}

添加如果使用覆盖(例如),则显示表格\visible<>{}。手动更改绘制选项和坐标。经过几次迭代后,您将得到正确的结果。

相关内容