diff options
author | Karl Berry <karl@freefriends.org> | 2021-04-20 20:13:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-04-20 20:13:00 +0000 |
commit | 6afb45c00f4bcfea8efffe384d8c4fff3b3150d3 (patch) | |
tree | 9dc7daa427ac9eda1e26691e9cf077e5f3ad48ee /Master/texmf-dist/tex/latex/worldflags/worldflags.sty | |
parent | 4e4deceb7fcf63bfb6953bf55d36f212fec27128 (diff) |
worldflags (20apr21)
git-svn-id: svn://tug.org/texlive/trunk@58924 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/worldflags/worldflags.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/worldflags/worldflags.sty | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/worldflags/worldflags.sty b/Master/texmf-dist/tex/latex/worldflags/worldflags.sty new file mode 100644 index 00000000000..b1c717457c0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/worldflags/worldflags.sty @@ -0,0 +1,332 @@ +% ============================================================================= +% worldflags.sty - Flags of the World with TikZ +% (c) Wilhelm Haager 2021-04-19 +% ============================================================================= +\RequirePackage{ifthen} +\RequirePackage{tikz} +\RequirePackage{xcolor} +\RequirePackage{etex} +\RequirePackage{xkeyval} +\usetikzlibrary{calc,shadows,shapes,shapes.symbols,positioning,math} +\definecolor{gridcolor}{rgb}{0.8,0.8,0.8} + +% ---------------------------------------------------------------------------- +% Default values +% ---------------------------------------------------------------------------- +\newdimen\fl@gwidth\fl@gwidth=15mm +\newdimen\fl@glength\fl@glength=0mm +\newdimen\fl@gframe\fl@gframe=0.2mm +\def\fl@gstretch{0} +\def\fr@mecolor{black!60} +\newif\if@rid\@ridfalse +\newif\if@mbl@m\@mbl@mtrue +\newif\ifn@@mbl@m\n@@mbl@mtrue +\def\view@ngle{0} +\def\hang@ngle{0} + +% ---------------------------------------------------------------------------- +% 2 horizontal stripes +% ---------------------------------------------------------------------------- +\def\hstripesII#1#2{% 3 horizontal stripes + \fill [#1] (0,1/2) rectangle (\flaglength,1); + \fill [#2] (0,0) rectangle (\flaglength,1/2);} + +% ---------------------------------------------------------------------------- +% 3 horizontal stripes +% ---------------------------------------------------------------------------- +\def\hstripesIII#1#2#3{% 3 horizontal stripes + \fill [#1] (0,2/3) rectangle (\flaglength,1); + \fill [#2] (0,1/3) rectangle (\flaglength,2/3); + \fill [#3] (0,0) rectangle (\flaglength,1/3);} + +% ---------------------------------------------------------------------------- +% 4 horizontal stripes +% ---------------------------------------------------------------------------- +\def\hstripesIV#1#2#3#4{% + \fill [#1] (0,3/4) rectangle (\flaglength,1); + \fill [#2] (0,1/2) rectangle (\flaglength,3/4); + \fill [#3] (0,1/4) rectangle (\flaglength,1/2); + \fill [#4] (0,0) rectangle (\flaglength,1/4);} + +% ---------------------------------------------------------------------------- +% 5 horizontal stripes +% ---------------------------------------------------------------------------- +\def\hstripesV#1#2#3#4#5{% + \fill [#1] (0,4/5) rectangle (\flaglength,1); + \fill [#2] (0,3/5) rectangle (\flaglength,4/5); + \fill [#3] (0,2/5) rectangle (\flaglength,3/5); + \fill [#4] (0,1/5) rectangle (\flaglength,2/5); + \fill [#5] (0,0) rectangle (\flaglength,1/5);} + +% ---------------------------------------------------------------------------- +% 6 horizontal stripes +% ---------------------------------------------------------------------------- +\def\hstripesVI#1#2#3#4#5#6{% + \fill [#1] (0,5/6) rectangle (\flaglength,1); + \fill [#2] (0,4/6) rectangle (\flaglength,5/6); + \fill [#3] (0,3/6) rectangle (\flaglength,4/6); + \fill [#4] (0,2/6) rectangle (\flaglength,3/6); + \fill [#5] (0,1/6) rectangle (\flaglength,2/6); + \fill [#6] (0,0) rectangle (\flaglength,1/6);} + +% ---------------------------------------------------------------------------- +% 2 vertical stripes +% ---------------------------------------------------------------------------- +\def\vstripesII#1#2{% 2 vertical stripes + \fill [#1] (0,0) rectangle (0.5\flaglength,1); + \fill [#2] (0.5\flaglength,0) rectangle (\flaglength,1);} + +% ---------------------------------------------------------------------------- +% 3 vertical stripes +% ---------------------------------------------------------------------------- +\def\vstripesIII#1#2#3{% 3 vertical stripes + \fill [#1] (0,0) rectangle (\flaglength/3,1); + \fill [#2] (\flaglength/3,0) rectangle (2\flaglength/3,1); + \fill [#3] (2\flaglength/3,0) rectangle (\flaglength,1);} + +% ---------------------------------------------------------------------------- +% Vertical bar (width relative to flagWIDTH) +% ---------------------------------------------------------------------------- +% #1...color, #2...position, #3...width +\def\vbar#1#2#3{% + \fill [#1] (#2,0) ++(-#3/2,0) + rectangle ++(#3,1);} + +% ---------------------------------------------------------------------------- +% Horizontal bar (width relative to flagwidth) +% ---------------------------------------------------------------------------- +% #1...color, #2...position, #3...width +\def\hbar#1#2#3{% + \fill [#1] (0,#2) ++(0,-#3/2) + rectangle ++(\flaglength,#3);} + +% ---------------------------------------------------------------------------- +% Cevron; #1...color, #2...width +% ---------------------------------------------------------------------------- +\def\chevron#1#2{% + \fill [#1] (0,0)--(0,1)--(#2,0.5)--cycle;} + +% ---------------------------------------------------------------------------- +% n-pointed-star +% ---------------------------------------------------------------------------- +% #1...color, #2...points, #3...coordinate, #4...outer radius, +% #5...inner radius, #6...angle +\def\starn#1#2#3#4#5#6{% + \begin{scope}[shift={#3},rotate=#6] + \fill [#1] (90:#4) foreach \n in {1,...,#2} + {--(90-180/#2+\n*360/#2:#5)--(90+\n*360/#2:#4)}--cycle; + \end{scope}} + +% ---------------------------------------------------------------------------- +% 5-pointed-star +% ---------------------------------------------------------------------------- +% #1...color, #2...coordinate, #3...outer radius, #4...angle +\def\starV#1#2#3#4{\starn{#1}{5}{#2}{#3}{0.381966*#3}{#4}} + +% ---------------------------------------------------------------------------- +% 6-pointed-star +% ---------------------------------------------------------------------------- +% #1...color, #2...coordinate, #3...outer radius, #4...angle +\def\starVI#1#2#3#4{\starn{#1}{6}{#2}{#3}{0.57735*#3}{#4}} + +% ---------------------------------------------------------------------------- +% Moon +% ---------------------------------------------------------------------------- +% #1...color, #2...outer coordinates, #3...outer radius, +% #4 inner coordinates #5...inner radius +\def\moon#1#2#3#4#5{% + \begin{scope} + \clip #2 circle (#3); + \fill [even odd rule,#1] #2 circle (1.01*#3) #4 circle (#5); + \end{scope}} + +% ---------------------------------------------------------------------------- +% Natural aspect-ratio of a flag (for internal use) +% ---------------------------------------------------------------------------- +\def\AspectRatio#1#2{% + \ifdim\flaglength=0pt\flaglength\flagwidth\divide\flaglength by #1\multiply\flaglength by #2\fi + \ifdim\flagwidth=0pt\flagwidth\flaglength\divide\flagwidth by #2\multiply\flagwidth by #1\fi + \newdimen\sh\sh=-\flagwidth\divide\sh by #1\multiply\sh by #2\advance\sh by\flaglength\sh=\flagstretch\sh + \pgfmathparse{(\flaglength/\flagwidth*#1/#2-1)*\flagstretch+1} + \edef\StretchFactor{\pgfmathresult} + } + +% ---------------------------------------------------------------------------- +% FrameCode and GridCode +% ---------------------------------------------------------------------------- +\def\FrameCode{ + \ifx\framecolor\undefined\global\def\framecolor{\fr@mecolor}\fi + \ifx\flagframe\undefined\newdimen\flagframe\global\flagframe\fl@gframe\fi + \ifdim\flagframe>0pt\draw + [\framecolor,line width=\flagframe] (0,0) rectangle (\flaglength,\flagwidth);\fi} + +\def\GridCode{\ifgrid + \begin{scope}[x=1mm,y=1mm] + \pgfmathparse{\flaglength*0.351} + \def\n{\pgfmathresult} + \foreach \x in {0,1,...,\n} \draw [line width=0.1pt,gridcolor!20] (\x,0)--++(0,\flagwidth); + \foreach \x in {0,5,...,\n} \draw [line width=0.25pt,gridcolor!60] (\x,0)--++(0,\flagwidth); + \foreach \x in {0,10,...,\n} \draw [line width=0.5pt,gridcolor] (\x,0)--++(0,\flagwidth); + \pgfmathparse{\flagwidth*0.351} + \def\n{\pgfmathresult} + \foreach \x in {0,1,...,\n} \draw [line width=0.1pt,gridcolor!20] (0,\x)--++(\flaglength,0); + \foreach \x in {0,5,...,\n} \draw [line width=0.25pt,gridcolor!60] (0,\x)--++(\flaglength,0); + \foreach \x in {0,10,...,\n} \draw [line width=0.5pt,gridcolor] (0,\x)--++(\flaglength,0); + \end{scope} + \fi} + +% ---------------------------------------------------------------------------- +% Begin and end of flag description (just initiates and ends zwo scopes) +% ---------------------------------------------------------------------------- +\def\BeginFlagDescription#1#2{% + \AspectRatio{#1}{#2} + \begin{scope}[x=\flagwidth,y=\flagwidth,cm={cos(\viewangle)*cos(\hangangle), + -sin(\hangangle),0,1,(0,0)}] + \begin{scope}[shift={(-0.5\flaglength,-0.5\flagwidth)}] + \coordinate (-0) at (0.5\flaglength,0.5\flagwidth); + \coordinate (-nw) at (0,\flagwidth); + \coordinate (-w) at (0,0.5\flagwidth); + \coordinate (-sw) at (0,0); + \coordinate (-n) at (0.5\flaglength,\flagwidth); + \coordinate (-s) at (0.5\flaglength,0); + \coordinate (-ne) at (\flaglength,\flagwidth); + \coordinate (-e) at (\flaglength,0.5\flagwidth); + \coordinate (-se) at (\flaglength,0);} +\def\EndFlagDescription{\GridCode\end{scope}\end{scope}} + +% ---------------------------------------------------------------------------- +% Union Jack (neuer Versuch, 12.4.2021) +% ---------------------------------------------------------------------------- +\def\UnionJack#1#2#3#4{% + \begin{scope}[cm={1,0,0,1,(#1,#2)}] + \newdimen\b\b=#3\advance\b by -#1 + \newdimen\h\h=#4\advance\h by -#2 + \newdimen\lwb\lwb=\h\divide \lwb by 3 + \newdimen\lws\lws=\h\divide \lws by 5 + \pgfmathparse{atan2(\h,\b)} + \edef\winkel{\pgfmathresult} + \clip (0,0) rectangle (\b,\h); + \fill [blue] (0,0) rectangle (\b,\h); + \draw [white,line width=\lws] (0,\h)--(\b,0) (0,0)--(\b,\h); + \begin{scope}[rotate around={\winkel:(\b/2,\h/2)}] + \draw [red,line width=\lws/3,yshift=\lws/6] (0.5\b,0.5\h)--++(0:0.701\b); + \draw [red,line width=\lws/3,yshift=-\lws/6] (0.5\b,0.5\h)--++(180:0.701\b); + \end{scope} + \begin{scope}[rotate around={-\winkel:(\b/2,\h/2)}] + \draw [red,line width=\lws/3,yshift=\lws/6] (0.5\b,0.5\h)--++(0:0.701\b); + \draw [red,line width=\lws/3,yshift=-\lws/6] (0.5\b,0.5\h)--++(180:0.701\b); + \end{scope} + \draw [white,line width=\lwb] (-0.5\b,\h/2)--(1.5\b,\h/2) (\b/2,-\h)--(\b/2,2\h); + \draw [red,line width=\lws] (-0.5\b,\h/2)--(1.5\b,\h/2) (\b/2,-\h)--(\b/2,2\h); + \end{scope}} + +% ---------------------------------------------------------------------------- +% Key Management +% ---------------------------------------------------------------------------- +\define@key{worldflag}{length}{\flaglength#1} +\define@key{worldflag}{width}{\flagwidth#1} +\define@key{worldflag}{framewidth}{\flagframe#1} +\define@key{worldflag}{framecolor}{\def\framecolor{#1}} +\define@key{worldflag}{emblem}[true]{\emblemtrue\noemblemfalse} +\define@key{worldflag}{noemblem}[true]{\noemblemtrue\emblemfalse} +\define@key{worldflag}{emblemdefault}[true]{\noemblemtrue\emblemtrue} +\define@key{worldflag}{grid}[true]{\gridtrue} +\define@key{worldflag}{stretch}[1]{\def\flagstretch{#1}} +\define@key{worldflag}{turn}[1]{\def\viewangle{#1}} +\define@key{worldflag}{hang}[1]{\def\hangangle{#1}} + +\define@key{flagsdefault}{length}{\fl@glength#1} +\define@key{flagsdefault}{width}{\fl@gwidth#1} +\define@key{flagsdefault}{framewidth}{\fl@gframe#1} +\define@key{flagsdefault}{framecolor}{\def\fr@mecolor{#1}} +\define@key{flagsdefault}{emblem}[true]{\@mbl@mtrue\n@@mbl@mfalse} +\define@key{flagsdefault}{noemblem}[true]{\n@@mbl@mtrue\@mbl@mfalse} +\define@key{flagsdefault}{emblemdefault}[true]{\n@@mbl@mtrue\@mbl@mtrue} +\define@key{flagsdefault}{grid}[true]{\@ridtrue} +\define@key{flagsdefault}{stretch}[1]{\def\fl@gstretch{#1}} +\define@key{flagsdefault}{turn}[1]{\def\view@ngle{#1}} +\define@key{flagsdefault}{hang}[1]{\def\hang@ngle{#1}} + +% ---------------------------------------------------------------------------- +% flagsdefault - setting default values +% ---------------------------------------------------------------------------- +\def\flagsdefault{\@ifnextchar[\@flagsdefault{\@flagsdefault[]}} +\def\@flagsdefault[#1]{\setkeys{flagsdefault}{#1}} + +% ---------------------------------------------------------------------------- +% worldflag (as tikzpicture) +% ---------------------------------------------------------------------------- +\def\worldflag{\@ifnextchar[\@worldflag{\@worldflag[]}}% + \def\@worldflag[#1]#2{% + \def\framecolor{\fr@mecolor}% + \newdimen\flagwidth\flagwidth=\fl@gwidth + \newdimen\flaglength\flaglength=\fl@glength + \newdimen\flagframe\flagframe=\fl@gframe + \def\flagstretch{\fl@gstretch}% + \newif\ifgrid\if@rid\gridtrue\else\gridfalse\fi + \newif\ifemblem\if@mbl@m\emblemtrue\else\emblemfalse\fi + \newif\ifnoemblem\ifn@@mbl@m\noemblemtrue\else\noemblemfalse\fi + \def\viewangle{0}% + \def\hangangle{0}% + \setkeys{worldflag}{#1}% + \IfFileExists{worldflag_#2.tex}{% + \begin{tikzpicture} + \input{worldflag_#2.tex} + \end{tikzpicture}}{\relax} + \global\let\flagwidth\undefined + \global\let\flaglength\undefined + \global\let\flagframe\undefined + \global\let\flagstretch\undefined + \global\let\framecolor\undefined + \global\let\ifemblem\undefined + \global\let\ifnoemblem\undefined + \global\let\ifgrid\undefined + \global\let\viewangle\undefined + \global\let\hangangle\undefined +} + +% ---------------------------------------------------------------------------- +% worldflag (as pic) +% ---------------------------------------------------------------------------- +\tikzset{length/.style={execute at begin scope={\newdimen\flaglength\flaglength=#1}}} +\tikzset{width/.style={execute at begin scope={\newdimen\flagwidth\flagwidth=#1}}} +\tikzset{framewidth/.style={execute at begin scope={\newdimen\flagframe\flagframe=#1}}} +\tikzset{stretch/.style={execute at begin scope={\def\flagstretch{#1}}}} +\tikzset{framecolor/.style={execute at begin scope={\def\framecolor{#1}}}} +\tikzset{country/.style={execute at begin scope={\def\country{#1}}}} +\tikzset{emblem/.style={execute at begin scope={\newif\ifemblem\emblemtrue\newif\ifnoemblem\noemblemfalse}}} +\tikzset{grid/.style={execute at begin scope={\newif\ifgrid\gridtrue}}} +\tikzset{noemblem/.style={execute at begin scope={\newif\ifnoemblem\noemblemtrue}}} +\tikzset{emblemdefault/.style={execute at begin scope={\newif\ifnoemblem\noemblemtrue\newif\ifemblem\emblemtrue}}} +\tikzset{turn/.style={execute at begin scope={\def\viewangle{#1}}}} +\tikzset{hang/.style={execute at begin scope={\def\hangangle{#1}}}} +\tikzset{ + worldflag/.pic={ + %\begin{scope} + \ifx\flagwidth\undefined\newdimen\flagwidth\global\flagwidth=\fl@gwidth\fi + \ifx\flaglength\undefined\newdimen\flaglength\global\flaglength=\fl@glength\fi + \ifx\flagframe\undefined\newdimen\flagframe\global\flagframe=\fl@gframe\fi + \ifx\flagstretch\undefined\def\flagstretch{\fl@gstretch}\fi + \ifx\framecolor\undefined\def\framecolor{\fr@mecolor}\fi + \def\makeifgrid{\newif\ifgrid\if@rid\gridtrue\else\gridfalse\fi} + \ifx\ifgrid\undefined\makeifgrid\fi + \def\makeifemblem{\newif\ifemblem\if@mbl@m\emblemtrue\else\emblemfalse\fi} + \ifx\ifemblem\undefined\makeifemblem\fi + \def\makeifnoemblem{\newif\ifnoemblem\ifn@@mbl@m\noemblemtrue\else\noemblemfalse\fi} + \ifx\ifnoemblem\undefined\makeifnoemblem\fi + \ifx\viewangle\undefined\def\viewangle{\view@ngle}\fi + \ifx\hangangle\undefined\def\hangangle{\hang@ngle}\fi + \IfFileExists{worldflag_\country.tex}{\input{worldflag_\country.tex}}{\relax} + %\end{scope} + \global\let\flagwidth\undefined + \global\let\flaglength\undefined + \global\let\flagframe\undefined + \global\let\flagstretch\undefined + \global\let\framecolor\undefined + \global\let\ifemblem\undefined + \global\let\ifnoemblem\undefined + \global\let\ifgrid\undefined + \global\let\viewangle\undefined + \global\let\hangangle\undefined + } +} |