我有一个相当简单的问题:
有没有简单的方法来调整以下代码
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[red, line width = 1mm] (2, 0) -- (-2, 0);
\draw[blue, line width = 1mm] (0, 2) -- (0, -2);
\end{tikzpicture}
\end{document}
这样红线就在蓝线前面,而蓝线在交叉处有一个“洞”。如果不改变它们的绘制顺序(例如先画红线),也不了解交叉点的确切信息,最终产品应该看起来像这样:
答案1
在简单的情况下,tikz 选项double=<color>
和double distance=<dimen>
很有用,并附带 tikz 库background
。请参阅以下示例。
在复杂的情况下,您可能需要knots
包,正如@Sebastiano 建议的那样问题评论。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}
\draw[white, double=red, double distance=1mm, line width=1mm](2, 0) -- (-2, 0);
\scoped[on background layer]
\draw[blue, line width = 1mm] (0, 2) -- (0, -2);
\end{tikzpicture}
\end{document}
答案2
这里有一些方法。都很简单。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\tikzset{every path/.style={line width=1mm}}
\begin{tikzpicture}
\path
(-1,-1) coordinate (A)
(1,1) coordinate (B)
(-1,1) coordinate (C)
(1,-1) coordinate (D);
\draw[blue] (A)--(B);
\draw[white,line width=2mm] (C)--(D);
\draw[red] (C)--(D);
\end{tikzpicture}
\begin{tikzpicture}
\draw[teal] (A)--(B);
\draw[orange,preaction={draw,line width=2mm,white}] (C)--(D);
\end{tikzpicture}
\begin{tikzpicture}
\path (intersection of A--B and C--D) coordinate (I);
\draw[brown] (A)--(B);
\draw[magenta,shorten >=1mm] (C)--(I);
\draw[magenta,shorten >=1mm] (D)--(I);
\end{tikzpicture}
\begin{tikzpicture}
\path (intersection of A--B and C--D) coordinate (I);
\draw[magenta] (C)--(D);
\path (C)--(I) node[pos=1,sloped,fill=white]{};
\draw[brown] (A)--(B);
\end{tikzpicture}
\begin{tikzpicture} % page 178, PGF manual
\draw[cyan] (A)--(B);
\draw[white,double=red,double distance=1mm] (C)--(D);
\end{tikzpicture}
\end{document}