我正在寻找一种定义样式的方法(我不想手动为每个节点绘制边缘),该样式提供一个包含三个“正常”边缘和一个锯齿形边缘的节点。以下是一个例子:
我尝试使用装饰,但没有获得好的结果...顺便说一句,欢迎任何处理自定义边界的“通用”解决方案。
以下是 MWE:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
broken/.style = {
draw,
rectangle
}
]
\node[broken] {Hello};
\end{tikzpicture}
\end{document}
谢谢。
=== 编辑 === 我找到了一个解决方案,但我无法正确填充形状,所以问题仍然悬而未决。
答案1
brokenrect
这里根据您的代码给出一个解决方案,节点的填充和绘制必须在样式 内完成 。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\tikzset{ brokenrect/.style={
append after command={
\pgfextra{
\path[draw,#1]
decorate[decoration={zigzag,segment length=0.4em, amplitude=.3mm}]
{(\tikzlastnode.north east)--(\tikzlastnode.south east)}
-- (\tikzlastnode.south west)|-cycle;
}}}}
\begin{tikzpicture}
\node [brokenrect={fill=orange,draw=blue},inner sep=10pt] {Coucou};
\end{tikzpicture}
\end{document}
答案2
我找到了这个解决方案,我不知道它是否更直接,但它效果很好,而且我认为很清楚。它的问题是填充非常难看,所以任何更好的解决方案都很好。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}[
brokenrect/.style={
append after command={
\pgfextra{
\draw[] (\tikzlastnode.south west) |- (\tikzlastnode.north east);
\draw[] (\tikzlastnode.south west) -- (\tikzlastnode.south east);
\draw[decorate,decoration={zigzag,segment length=0.4em,amplitude=0.1em}] (\tikzlastnode.north east) -- (\tikzlastnode.south east);
}
}
}
]
\node [brokenrect] {Coucou};
\end{tikzpicture}
\end{document}
结果如图所示:
和丑陋的填充: