我有一个表格,并使用 tikz 在其周围创建一个框架。现在它看起来像这样:
\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\tikz\node[draw=black,ultra thick,double=gray,inner sep=.3pt+\pgflinewidth]{
\begin{tabular}{l|l}
A & B\\
\hline
C & D\\
\end{tabular}};
\end{document}
对于一些非常简单的 3D 效果,我想分别调整框架部分的颜色。例如,在框架的顶部和右侧部分,外线为黑色,内线为灰色。而在左侧和底部部分,外线为圆形。
编辑: 我在 HTML/CSS 中做了一个最简单的示例:
为了获得所需的效果,我需要将边缘形成 45° 角。
答案1
这是一个可能的解决方案;该\myboxed
命令用具有所要求的规范的框架围绕其内容;语法是:
\myboxed[<length>][<color1>][<color2>]{<contents>}
<length>
控制框架的宽度(默认值= 2pt
);使用第二和第三个可选参数,您可以更改使用的颜色(默认值=black
和gray
):
\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}
\newlength\unit
\NewDocumentCommand\myboxed{O{2pt}O{black}O{gray}m}{%
\setlength\unit{#1}
\begin{tikzpicture}
\node[inner sep=0pt] (a) {#4};
\fill[#2] (a.south east) --
([xshift=\unit,yshift=-\unit]a.south east) |-
([xshift=-\unit,yshift=\unit]a.north west) --
(a.north west) -|
(a.south east) --
cycle;
\fill[#3] (a.south east) --
([xshift=\unit,yshift=-\unit]a.south east) -|
([xshift=-\unit,yshift=\unit]a.north west) --
(a.north west) |-
(a.south east) --
cycle;
\fill[#3] ([xshift=\unit,yshift=-\unit]a.south east) --
([xshift=2*\unit,yshift=-2*\unit]a.south east) |-
([xshift=-2*\unit,yshift=2*\unit]a.north west) --
([xshift=-\unit,yshift=\unit]a.north west) -|
([xshift=\unit,yshift=\unit]a.south east) --
cycle;
\fill[#2] ([xshift=\unit,yshift=-\unit]a.south east) --
([xshift=2*\unit,yshift=-2*\unit]a.south east) -|
([xshift=-2*\unit,yshift=2*\unit]a.north west) --
([xshift=-\unit,yshift=\unit]a.north west) |-
([xshift=-\unit,yshift=-\unit]a.south east) --
cycle;
\end{tikzpicture}
}
\begin{document}
\myboxed{\begin{tabular}{l|l}
A & B \\
\hline
C & D \\
\end{tabular}}\quad
\myboxed[4pt]{\begin{tabular}{l|l|l}
A & B & C \\
\hline
C & D & E \\
\hline
F & G & H \\
\end{tabular}}\quad
\myboxed[6pt][black!80][gray!50]{\begin{tabular}{l|l|l}
A & B & C \\
\hline
C & D & E \\
\hline
F & G & H \\
\end{tabular}}
\end{document}
答案2
在 Tikz 中,获取有角度的线帽并不是那么简单(参见TikZ:中途改变路径的颜色)因此,需要手动绘制额外的部分,要么作为完整的矩形路径,要么只是在尖端周围玩弄(可能使用新箭头。请参阅 Luigi 的奇迹是否可以更改 TikZ/PGF 中箭头的大小?)
这是我能想到的最简单的
\documentclass[tikz]{standalone}
\newcommand\htmlbutton[4]{
\foreach \x/\z/\y in {|-/-|/#3,-|/|-/#4}{
\fill[fill=\y,line join=bevel] ([shift={(135:#2)}]#1.north west) \x
([shift={(-45:#2)}]#1.south east) -- (#1.south east) \z
(#1.north west)--cycle;
}
}
\begin{document}
\begin{tikzpicture}
\node[outer sep=0,inner sep=1pt] (a) {Test test};
\htmlbutton{a}{2pt}{gray}{gray!40}
\end{tikzpicture}
\end{document}
您可以添加另一个具有对比色的图层以获得 3D 效果。