我想只绘制路径的一部分。在我的特定情况下,我想将括号路径的最右侧部分隐藏在较大图片的一部分中。我目前的解决方案是在其上绘制一个矩形,但这真的很不方便。有更好的方法吗?
\documentclass[tikz,border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\draw[decorate,decoration={brace}] (0,0) -- (5,0);
\fill[white] (4,-1) rectangle (6,1);
\end{tikzpicture}
\end{document}
答案1
如果您确实想隐藏括号的一部分(而不是绘制不平衡但完整的括号),那么剪辑可能是最简单的方法。对于您的 MWE,这非常简单。例如:
\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\path [clip] (0,-.5) rectangle (4,.5);
\draw[decorate,decoration={brace}] (0,0) -- (5,0);
\end{tikzpicture}
\end{document}
注意,剪切区域指定要被剪切的区域显示- 该区域之外的任何内容都不会被绘制。
剪辑会影响剪辑命令范围内的所有内容。这可能不是您想要的...
假设您想要重现以下内容:
你可以尝试这个:
\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\path [clip] (0,-.5) rectangle (4,.5);
\draw[decorate,decoration={brace}] (0,0) -- (5,0);
\path [draw, fill] foreach \i in {0,.5,1,...,5} {(\i,-.25) circle (.5pt)};
\end{tikzpicture}
\end{document}
但此代码将产生:
这不是你想要的。
为了限制剪辑的效果,您可以使用来scope
指定仅应应用剪辑的内容:
\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\path [clip] (0,-.5) rectangle (4,.5);
\draw[decorate,decoration={brace}] (0,0) -- (5,0);
\end{scope}
\path [draw, fill] foreach \i in {0,.5,1,...,5} {(\i,-.25) circle (.5pt)};
\end{tikzpicture}
\end{document}
产生了想要的结果:
答案2
两种解决方案:
clip
:绘图区域仅限于剪切区域。aspect
:支架的鼻部/尖端可通过选项移动aspect
。优点是右侧不会被切断,而是可以正确结束。
带有白色套印、剪切和改变纵横比的示例文件(默认值为 0.5):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\begin{document}
\begin{tikzpicture}
\draw[decorate,decoration={brace}] (0,0) -- (5,0);
\fill[white, overlay] (4,-.2) rectangle (6,1);
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}
\clip[overlay] (-1, -1) rectangle (4, 1);
\draw[decorate,decoration={brace}] (0,0) -- (5,0);
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}
\draw[decorate,decoration={brace, aspect=0.625}] (0,0) -- (4,0);
\end{tikzpicture}
\end{document}
选项overlay
会减少计算出的边界框,因为白色矩形或剪辑区域不应该对其产生影响。但是不可见的括号部分确实算数。根据大图中括号的位置,整体边界框可能需要修正。
可视化边界框的示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{.1pt}
\begin{document}
\fbox{\begin{tikzpicture}
\draw[decorate,decoration={brace}] (0,0) -- (5,0);
\fill[white,overlay] (4,-.2) rectangle (6,1);
\end{tikzpicture}}
\fbox{\begin{tikzpicture}
\begin{scope}
\clip[overlay] (-1, -1) rectangle (4, 1);
\draw[overlay=false, decorate,decoration={brace}] (0,0) -- (5,0);
\end{scope}
\end{tikzpicture}}
\fbox{\begin{tikzpicture}
\draw[decorate,decoration={brace, aspect=0.625}] (0,0) -- (4,0);
\end{tikzpicture}}
\end{document}