到目前为止,我能够使用 TikZ 库在左下角放置一个黑框decorations.markings
:
\tikzset{
blackcorner/.style={ draw,
decoration={ markings,
mark=at position 0 with {
\draw[very thick](0pt,1pt) -- (1pt,1pt) -- (1pt,0pt);
}
},
postaction={decorate}
}
}
\tikz{\node[blackcorner]{test};}
但是,我无法在其他角落绘制黑框。是否可以使用装饰或其他方式来实现这一点?(此外,黑角非常靠近文本,如何在不增加高度的情况下增加节点的宽度?)
答案1
由于位置明确,您可以摆脱path picture
节点。
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[corner stone/.style={draw,
path picture={
\foreach \x/\xi in {north/-1,south/1}{
\foreach \y/\yi in {west/45,east/135}{
\fill (path picture bounding box.\x\space\y) rectangle ++(\xi*\yi:#1);
}
}
}
},
corner stone/.default=2mm
]
\node[corner stone] {My node};
\node[corner stone=3mm] at (0,2) {My node};
\end{tikzpicture}
\end{document}
答案2
append after command
这是使用的定义来blackcorner
绘制 4 个角的版本。
size=<dimension>
可以使用可选参数配置尺寸blackcorner
,如果需要,还可以包括角节点的其他选项。尽管名称如此,但下面的一个示例显示了如何创建蓝色的 blackcorner
秒。
要增加文本和角落之间的边距,只需添加inner sep=<dimension>
到节点的选项中即可。注意:不是作为选项blackcorner
- 您不想在那里更改它。您想增加主节点的边距,因此边框离文本更远。
这一切的结果是
\tikz{%
\node [blackcorner] {test};
\node [blackcorner={size=2.5pt}, inner sep=5pt, blue] at (0,1) {test};
\node [blackcorner={size=2.5pt, blue}, inner sep=5pt, blue] at (0,2) {test};
}
产生三个节点:底部节点具有默认的间距和角大小,全部为黑色;中间节点为蓝色,具有较大的角和边距,但角仍使用默认的黑色;最后,顶部节点也将角的颜色更改为蓝色。
完整代码:
\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{calc}
\begin{document}
\tikzset{%
blackcorner/.style={%
draw,
append after command={%
let \p1=(\tikzlastnode.south west), \p2=(\tikzlastnode.north west), \p3=(\tikzlastnode.north east), \p4=(\tikzlastnode.south east) in (\p1) node [black corner/.cd, #1, corner, anchor=south west] {} (\p2) node [black corner/.cd, #1, corner, anchor=north west] {} (\p3) node [black corner/.cd, #1, corner, anchor=north east] {} (\p4) node [black corner/.cd, #1, corner, anchor=south east] {}
},
},
black corner/.search also={/tikz},
black corner/.cd,
corner/.style={%
inner sep=0pt, draw, fill, minimum size=\cornersize,
},
size/.store in=\cornersize,
size=1.8pt,
}
\tikz{%
\node [blackcorner] {test};
\node [blackcorner={size=2.5pt}, inner sep=5pt, blue] at (0,1) {test};
\node [blackcorner={size=2.5pt, blue}, inner sep=5pt, blue] at (0,2) {test};
}
\end{document}