不同的背景,剪辑到图中的路径?

不同的背景,剪辑到图中的路径?

这个帖子有这样一张图片:

在此处输入图片描述

有没有办法创建这样的背景?它不一定是 LaTeX 原生方法,希望是开源的。一个可用的背景库将是一个不错的补充。

稍后添加:我指的背景不一定是用上述工具创建的背景。我的想法是,找到一个可以剪切成背景的地方。

答案1

我没有画出你的箭头和其他线条 - 你可以自己画。这些是来自 tcolorbox 包的示例纹理(使用你自己的纹理)

根据您用作背景的图像类型,您可以使用

填充过度缩放图像、填充拉伸图像=图像、填充平铺图像*={height=3cm}{image}(后者是重复平铺的图像)

\documentclass{article}
\usepackage[most]{tcolorbox}

\begin{document}

\noindent\begin{tikzpicture}
\fill[fill overzoom image=blueshade] (0,0) rectangle +(2,3);

\fill[fill overzoom image=blueshade] (2,0) rectangle +(1,3);

\fill[fill overzoom image=goldshade] (3,0) rectangle +(6,1.5);
\fill[fill overzoom image=blueshade] (9,0) rectangle +(4,1.5);
\fill[fill overzoom image=goldshade] (3,1.5) rectangle +(10,1.5);
\end{tikzpicture}

\end{document}

在此处输入图片描述

这是另一个展示不同类型拉伸和平铺的示例

\documentclass{article}
\usepackage[most]{tcolorbox}

\begin{document}

\noindent\begin{tikzpicture}
\fill[fill overzoom image=blueshade] (0,0) rectangle +(2,3);

\fill[fill stretch image=goldshade] (2,0) rectangle +(1,3);

\fill[fill stretch image=goldshade] (3,0) rectangle +(6,1.5);
\fill[fill tile image*={height=3cm}{crinklepaper.png}] (9,0) rectangle +(4,1.5);
\fill[fill tile image*={height=3cm}{pink_marble.png}] (3,1.5) rectangle +(10,1.5);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

这是右上方的图案。不完全一样,但需要更多控制才能达到更相似的结果。

另外我强烈建议不是使用它,因为它会给编译过程和最终文件带来巨大的负担。仅供比较,像 OP 中的简单图表(没有背景)会生成一个 4 KB 的 .pdf 文件。这个是507 千字节

输出

在此处输入图片描述

代码

\documentclass{standalone}
\usepackage{tikz}

\usetikzlibrary{calc, fadings}

\tikzfading[name=to bottom,
    top color=transparent!0,
    bottom color=transparent!100]

\tikzfading[name=fade out,
    inner color=transparent!0,
    outer color=transparent!100]

\newcommand\drop[2]{%
\begin{scope}[shift={(#2)},scale=#1]
    \fill[cyan, path fading=to bottom] (0,0) coordinate (s) to[out=96,in=86, looseness=4] coordinate (w) (1,0) coordinate (e);
    \fill[white, path fading=fade out] ($(s)!.5!(w)+(-1mm,0)$) to[out=90,in=120] ($(e)!.75!(w)+(0,1mm)$)  to[out=190,in=30] cycle;
\end{scope}
}

\begin{document}
\begin{tikzpicture}
\clip (-9,-3) rectangle (9,3);

\foreach \x in {-9,-8.6,...,9}{%
\foreach \y in {-3,-2.6,...,3}{
    \pgfmathparse{rand}
    \pgfmathtruncatemacro\temp{(\pgfmathresult*10)}
    \pgfmathtruncatemacro\tempp{\ifnum\temp<0 -\temp\else\temp\fi}
    \pgfmathtruncatemacro\scale{\ifnum\tempp=0 \tempp+1\else\tempp\fi}
    \drop{0.\scale}{\x,\y}
    }
}
\fill[cyan, fill opacity=.35] (-9,-3) rectangle (9,3);

\end{tikzpicture}
\end{document}

相关内容