我需要有关 LaTeX 横幅的帮助

我需要有关 LaTeX 横幅的帮助

我只是想用 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}

在此处输入图片描述

相关内容