我有一个 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}