在这个帖子有这样一张图片:
有没有办法创建这样的背景?它不一定是 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}