我只是想用 LaTeX 制作这个横幅。
但是我对 LaTeX 还不是很熟练。所以我已经尽力了。以下是我目前所做的:
\documentclass[11pt]{memoir}
\usepackage{tikz}
\pagestyle{empty}
\usepackage{geometry}
\geometry{paperwidth=512pt, paperheight=128pt}
\definecolor{rot}{HTML}{c54544}
\pagecolor{rot}
\begin{document}
\begin{tikzpicture}
\fill[white] (0,0) circle (1);
\fill[white] (0,0) -- (1,0) -- (0,1) -- cycle;
\end{tikzpicture}
\end{document}
仍缺少的是:
放置圆圈
放置阳光
放置文本
(使用滤镜 - 我认为是 Photoshop 的“涂抹棒”)%不太重要。对我来说,如果有人能帮我制作这个横幅就足够了 - 带或不带滤镜 :)
谨致问候,提前致谢!这对我更好地使用 LaTeX 和 tikz 有很大帮助!
答案1
正如评论中指出的那样,该过滤器是有问题的,将这样的横幅制作成 GIMP 或您最喜欢的软件并将其作为图形导入可能会更方便。
然而,这是不使用滤镜实现带有阳光和文字的太阳效果的一种方法。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{fontspec}
\setmainfont{Roboto Black}
\usetikzlibrary{positioning,calc,shapes}
\definecolor{rot}{HTML}{c54544}
\pagecolor{rot}
\begin{document}
\begin{tikzpicture}[sunbeam/.style n args={3}{overlay,trapezium, trapezium angle=#1,fill=white,anchor=north,rotate=#2,inner ysep=8cm,inner xsep=#3,xshift=-.1cm,yshift=.2cm},textnode/.style={font=\LARGE,inner sep=0pt}]
\node(a)[rectangle,minimum width=512pt,minimum height=128pt,fill=rot]{};
\node(b)[overlay,circle,minimum size=80pt,fill=white,anchor=south west] at($(a.south west)+(-.2,-.2)$){};
\node[sunbeam={88}{75}{1.2}] at(b.10){};
\node[sunbeam={88.8}{92}{1.5}] at(b.20) (c){};
\node[sunbeam={89.2}{108}{1.5}] at(b.28){};
\node[sunbeam={88.5}{120}{2}] at(b.48){};
\node[sunbeam={87.5}{140}{2}] at(b.68){};
\node[sunbeam={86}{192}{3}] at(b.95){};
\node[textnode,anchor=north,rotate=.9]at($(c.east)+(3.5,.05)$){ONLY GOD KNOWS WHY};
\node[textnode,anchor=south,rotate=2.5]at($(c.east)+(3.5,.2)$){OGKW};
\end{tikzpicture}
\end{document}
解释
我正在使用节点来绘制它以利用锚点和其他定位技巧。
a
首先,我们绘制一个具有所需尺寸和颜色的矩形节点:
\node(a)[rectangle,minimum width=512pt,minimum height=128pt,fill=rot]{};
然后我们绘制一个圆形节点,b
大致位于矩形的西南角。为了微调定位,我使用了以下calc
库:
\node(b)[overlay,circle,minimum size=80pt,fill=white,anchor=south west] at($(a.south west)+(-.2,-.2)$){};
现在对于阳光,我使用梯形节点进行拉伸,以便它们最终位于矩形之外。为了自定义“拉伸”,我使用了梯形的角度、旋转和宽度。由于我们需要许多阳光,因此可以方便地为它们创建自定义样式,如下所示:
sunbeam/.style n args={3}{
overlay,
trapezium,
trapezium angle=#1, %sets the angle of the trapezium
fill=white,
anchor=north,
rotate=#2, %sets the rotation
inner ysep=8cm, %sets the length and will ensure that all sunbeams end out of the rectangle
inner xsep=#3, %sets width of the trapezium
xshift=-.1cm,
yshift=.2cm %the shifts will ensure that all sunbeams start inside the "sun" (circle)
}
在我们的中,tikzpicture
我们只需要为每个阳光设置三个参数,然后在的帮助下将阳光放置在圆圈上border anchors
(您可能需要在 TikZ 手册中查看它们),如下所示:
\node[sunbeam={86}{192}{3}] at(b.95){};
最后我们需要文本。你可能想搜索原始图像中使用的特定字体(我只是设置了一个随机字体)。我们将常用的内容放在一个样式中,例如:
textnode/.style={font=\LARGE,inner sep=0pt}]
然后将文本放置在相对于其中一条阳光(名为c
)的位置,用一些调整对所有内容进行微调calc
,记住阳光c
是旋转的,因此东、北等锚点都与旋转有关。
带缩放文本
\documentclass{standalone}
\usepackage{tikz}
\usepackage{fontspec}
\setmainfont{Roboto Black}
\usetikzlibrary{positioning,calc,shapes,decorations.text,math}
\definecolor{rot}{HTML}{c54544}
\pagecolor{rot}
\begin{document}
\begin{tikzpicture}[
sunbeam/.style n args={3}{overlay,trapezium, trapezium angle=#1,fill=white,anchor=north,rotate=#2,inner ysep=8cm,inner xsep=#3,xshift=-.1cm,yshift=.2cm},
textnode/.style={
decoration={text effects along path,text={#1},text effects/.cd,character count=\i, character total=\n,characters={text along path, evaluate={\c=\i/\n*200;},text=black,scale=\i/\n+1}}
}
]
\node(a)[rectangle,minimum width=512pt,minimum height=128pt,fill=rot]{};
\node(b)[overlay,circle,minimum size=80pt,fill=white,anchor=south west] at($(a.south west)+(-.2,-.2)$){};
\node[sunbeam={88}{75}{1.2}] at(b.10){};
\node[sunbeam={88.8}{92}{1.5}] at(b.20) (c){};
\node[sunbeam={89.2}{108}{1.5}] at(b.28){};
\node[sunbeam={88.5}{120}{2}] at(b.48){};
\node[sunbeam={87.5}{140}{2}] at(b.68){};
\node[sunbeam={86}{192}{3}] at(b.95){};
\path [textnode={ONLY GOD KNOWS WHY},font=\large,rotate=.85,decorate]($(c.east)+(0,-.425)$)to +(7,0);
\node[font=\huge,anchor=south,rotate=3]at($(c.east)+(3.5,.15)$){OGKW};
\end{tikzpicture}
\end{document}
答案2
它被开发几十年前(点击). 只是为了和 PSTricks 一起玩。
\documentclass[pstricks]{standalone}
\usepackage{pst-node,multido}
\begin{document}
\multido{\n=-2.2+0.2}{21}{%
\begin{pspicture}(-4,-3)(4,3)
\pnode(\n,0.5){O}
\multido{\nx=0+10,\ny=5+10}{36}{\pswedge*[linecolor=red](O){8}{\nx}{\ny}}
\pscircle*[linecolor=red](O){1.75}
\rput(O){\color{white}\bfseries\LARGE PSTricks}
\rput(O){\pcline[linestyle=none](0,0)(8;5)\naput[nrot=:U,labelsep=0,npos=.6]{\color{red}\bfseries PSTricks is fun!}}
\end{pspicture}}
\end{document}
答案3
这不是一个完整的答案,而只是说明了在文本上获得“涂抹”效果的一种(不是特别有效的)方法。
\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{fadings,decorations}
\renewcommand*\sfdefault{ugq}
\usepackage[T1]{fontenc}
\def\smudgeText#1#2{%
\begin{tikzfadingfrompicture}[name=.]
\node [text=transparent!0, name=@] {#1};
\clip (@.south west) rectangle (@.north east);
\pgfpointdiff{\pgfpointanchor{@}{south west}}{\pgfpointanchor{@}{north east}}%
\pgfgetlastxy\smudgewidth\smudgeheight
\pgfmathparse{int(veclen(\smudgewidth,\smudgeheight)+1)}\let\n=\pgfmathresult
\foreach \i in {1,...,\n}
\path [draw=transparent, line width=rnd, line cap=round] (rand*\smudgewidth/2,rand*\smudgeheight/2) -- ++(135+rand*10:\smudgeheight/2);
\end{tikzfadingfrompicture}
\begin{tikzpicture}
\path [path fading=., fit fading=false, fading transform={shift=(@.center)}, fill=#2]
(@.south west) rectangle (@.north east);
\end{tikzpicture}%
}
\begin{document}
\begin{tikzpicture}
\clip [preaction={fill=red!80!green!80!blue}] (-6, -2) rectangle (6, 2);
\fill [white] circle [radius=1];
\foreach \i in {0,45,...,315}
\fill [white] (0,0) -- (\i-5-rand*2.5:10) -- (\i+5+rand*2.5:8) -- cycle;
\node [rotate=15] {\smudgeText{\Huge\sffamily\bfseries ONLY Ti\emph{k}Z KNOWS HOW}{black}};
\end{tikzpicture}
\end{document}