在 tikz 中绘制“顶部”线

在 tikz 中绘制“顶部”线

我有一个 tikz 图形,用于两个不同的最终文档。它包含一条线交叉点,我需要通过用白色“缓冲区”包围它来指定哪条线在顶部,类似于在绘制辫子时断线。有关更多详细信息,请参阅/编译底部的代码。

其中一份文档是白纸文章,背景为白色(没问题);另一份是投影仪演示文稿,为了观众的眼睛着想,我将其背景染成了浅蓝色,以将对比度降低到舒适的水平。

不幸的是,我的线条周围的白色区域在投影仪的背景下是可见的白色区域。是否有一些选项可以传递给对象,使其覆盖其经过的所有内容,使其不可见?

这是承诺的代码。

\documentclass{amsart}
\usepackage{tikz}
\begin{document}
\scalebox{9}{\begin{tikzpicture}
\fill[blue!20] (0,0) rectangle (1,1);
\draw[line width=2pt] (1,1) -- (0,0) -- (1,-1);
\draw[white,line width = 5pt] (0,1) -- (1,0) -- (0,-1);
\draw[line width=2pt] (0,1) -- (1,0) -- (0,-1);
\end{tikzpicture}}
\end{document}

答案1

据我所知,这是不可能的。我猜最简单的解决方案是给背景颜色命名(例如 via \colorlet{bgcolor}{white})并使用它进行过度绘制。由于每个文档只使用一种背景颜色,所以您不必在路径中间更改颜色(这是不可能的/很难做到)。

preaction并定义选项可以节省一些输入:

\documentclass{amsart}
\usepackage{tikz}
\colorlet{bgcolor}{white}

\tikzset{
    overdraw/.style={preaction={draw,bgcolor,line width=#1}},
    overdraw/.default=5pt
}


\begin{document}
\scalebox{9}{\begin{tikzpicture}
    {% temporally change the background color
    \colorlet{bgcolor}{blue!20}
    \fill[bgcolor] (0,0) rectangle (1,1);
    \draw[line width=2pt] (1,1) -- (0,0) -- (1,-1);
    \draw[line width=2pt,overdraw] (0,1) -- (1,0);
    }
    \draw[line width=2pt,overdraw=10pt] (1,0) -- (0,-1);
\end{tikzpicture}}
\end{document}

相关内容