8

I just wanted to make this banner in LaTeX. Banner

But I am not so good to LaTeX yet. So I have tried my best. Here is what I have managed yet:

\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}

What still misses is:

  • placing the circle

  • place the sunbeams

  • place the text

  • (use a filter - I think it's the photoshop "smudge stick") %not so important. For me it's enough if anyone could help me make this banner - with or without filter :)

Kind regards and thank you very much in advance! That would help me a lot to get better using LaTeX and especially tikz!

  • 1
    There is absolutely no reason to use memoir here. Use standalone instead. – Johannes_B Sep 12 '14 at 17:24
  • 3
    You're going to be hard pressed to realize any true 'filter' with TeX-tech. – Sean Allred Sep 12 '14 at 17:24
  • 2
    Why can't you just export a high-quality version using Photoshop or similar and just \includegraphics? – Sean Allred Sep 12 '14 at 18:01
10

As already noted in the comments the filter is problematic and it would be probably more convenient to make such a banner into GIMP or your favourite software and import it as graphics.

However, this is one way to achieve the sun with sunbeams and text without the filter.

\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}

enter image description here

Explanation

I'm using nodes to draw this to make advantage of the anchors and other positioning tricks.

First we draw a rectangle node called a of the desired dimensions and color:

\node(a)[rectangle,minimum width=512pt,minimum height=128pt,fill=rot]{};

Then we draw a circle node called b positioned roughly at the south west corner of the rectangle. To fine-tune the positioning I'm using the calc library:

\node(b)[overlay,circle,minimum size=80pt,fill=white,anchor=south west] at($(a.south west)+(-.2,-.2)$){}; 

Now for the sunbeams, I used trapezoid nodes stretched so that they end up outside of the rectangle. To customize the "stretching" I used the angle, rotation and width of the trapezium. Since we need many sunbeams it is convenient to make a custom style for them, like this:

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)
}

In our tikzpicture we only need to set the three parameters for each sunbeam and then place the sunbeam on the circle with the help of border anchors (you may want to check them in the TikZ manual) like this:

\node[sunbeam={86}{192}{3}] at(b.95){};

Finally we need the text. You may want to search for the specific font used in the original image (I just set a random font). We place the common stuff in a style, like:

textnode/.style={font=\LARGE,inner sep=0pt}]

and then place the text relative to one of the sunbeams (named c) fine-tuning everything with some calculations, remembering that the sunbeam c is rotated, so east, north, etc. anchors are relative to the rotation.

With scaled text

\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}

enter image description here

  • Thank you very much! Thanks to you and other helping users I get better and better to LaTeX every day! Thansk :D – Basilius Sapientia Sep 12 '14 at 18:50
  • you're welcome. There was a typo in the code that would prevent compilation (the custom text node was called text instead of textnode). Please check it again :) – Nico Vecchio Sep 12 '14 at 18:55
  • That text line begs for text decoration with scale effect ;) – percusse Sep 13 '14 at 3:19
  • @percusse I was yet to reach pag. 600 :o) – Nico Vecchio Sep 13 '14 at 9:13
7

It was developed several decades ago (click). Just for fun with 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}

enter image description here

7

Not a complete answer but just illustrating one (not especially efficient) way of getting a "smudge" effect on the text.

\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}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.