diff options
author | Norbert Preining <norbert@preining.info> | 2023-03-30 03:01:43 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-03-30 03:01:43 +0000 |
commit | 0a426619b66178dd2257f1ece60ff80f86f40e88 (patch) | |
tree | fb35be40eb794817645905b4813c091d5f75dda9 /macros/latex/contrib/wargame/source/hex/ridges.dtx | |
parent | 395caca342df230d7d98a658477b7f54c3ee5845 (diff) |
CTAN sync 202303300301
Diffstat (limited to 'macros/latex/contrib/wargame/source/hex/ridges.dtx')
-rw-r--r-- | macros/latex/contrib/wargame/source/hex/ridges.dtx | 80 |
1 files changed, 59 insertions, 21 deletions
diff --git a/macros/latex/contrib/wargame/source/hex/ridges.dtx b/macros/latex/contrib/wargame/source/hex/ridges.dtx index 3914ff6ce5..24552e36e2 100644 --- a/macros/latex/contrib/wargame/source/hex/ridges.dtx +++ b/macros/latex/contrib/wargame/source/hex/ridges.dtx @@ -9,23 +9,31 @@ % A hex can be decorated with up to 6 ridges --- one for each edge of % the hexagon. The first thing is to set up the graphics style to use % for the ridges. We use the \spec{wave} decoration. +% +% If rounded corners are set for ridges, (e.g., via \spec{every hex +% ridges}), then it should be \spec{0pt} or \spec{4pt} (roughly 2mm) +% or larger. Otherwise, one will get a ``dimension too large'' +% error. % % \begin{macrocode} \tikzset{% - hex/ridges/.style={ + hex/ridges pre/.style={ line cap=round, draw=pgfstrokecolor, - rounded corners=.25cm, - scale line widths, + solid, + /hex/ridges/.cd,% + radius=0.85,% + n=4, + R=.25, + }, + hex/ridges/.style={ + get scale, decoration={ path has corners=true, - pre=waves, - post=waves, - pre length=-.1cm, - post length=0cm, waves, - radius=.2cm, - segment length=.2cm}, + radius=\wg@scale\hex@r@R, + segment length=\wg@scale\hex@r@s, + }, decorate}} % \end{macrocode} % @@ -57,6 +65,7 @@ south/.is if=hex@r@s, south east/.is if=hex@r@se, radius/.store in=\hex@r@r, + curve radius/.store in=\hex@r@w, NE/.is if=hex@r@ne, N/.is if=hex@r@n, NW/.is if=hex@r@nw, @@ -64,6 +73,8 @@ S/.is if=hex@r@s, SE/.is if=hex@r@se, r/.store in=\hex@r@r, + n/.store in=\hex@r@n, + R/.store in=\hex@r@w, } % \end{macrocode} % @@ -74,10 +85,11 @@ % the routine below is handcrafted since it is relatively simple. % % \begin{macrocode} +\newdimen\hex@r@s +\newdimen\hex@r@R \def\hex@do@ridges{% \edef\hex@r@tmp{[ - /hex/ridges/.cd,% - radius=0.8,% + hex/ridges pre, /tikz/every hex ridges/.try, \hex@ridges]} \expandafter\scope\hex@r@tmp% @@ -89,44 +101,70 @@ ^^Jsouth =\ifhex@r@s yes\else no\fi ^^Jsouth east=\ifhex@r@se yes\else no\fi ^^Jradius =\hex@r@r + ^^Jn =\hex@r@n } + \pgfmathparse{\hex@r@r/\hex@r@n}\xdef\hex@r@t{\pgfmathresult} + \hex@r@s=\hex@r@t cm + \hex@r@R=\hex@r@w cm \def\hex@r@p{} % Hand written algorithm \ifhex@r@ne - \def\hex@r@p{(0:\hex@r@r)--(60:\hex@r@r)} + \ifhex@r@se + \xdef\hex@r@p{(0:\hex@r@r)--(60:\hex@r@r)} + \else + \xdef\hex@r@p{($(0:\hex@r@r)+(-60:\hex@r@t/2)$)--(60:\hex@r@r)} + \fi + \hex@dbg{4}{Ridge along north east edge: `\hex@r@p'} \fi \ifhex@r@n - \hex@dbg{4}{Ridge along north edge: `\hex@r@p'} \ifhex@r@ne\else - \xdef\hex@r@p{\hex@r@p ( 60:\hex@r@r)} + \xdef\hex@r@p{\hex@r@p ($( 60:\hex@r@r)+(0:\hex@r@t/2)$)} \fi \xdef\hex@r@p{\hex@r@p --(120:\hex@r@r)} + \hex@dbg{4}{Ridge along north edge: `\hex@r@p'} \fi \ifhex@r@nw \ifhex@r@n\else - \xdef\hex@r@p{\hex@r@p (120:\hex@r@r)} + \xdef\hex@r@p{\hex@r@p ($(120:\hex@r@r)+(60:\hex@r@t/2)$)} \fi \xdef\hex@r@p{\hex@r@p --(180:\hex@r@r)} + \hex@dbg{4}{Ridge along north west: `\hex@r@p'} \fi \ifhex@r@sw \ifhex@r@nw\else - \xdef\hex@r@p{\hex@r@p (180:\hex@r@r)} + \xdef\hex@r@p{\hex@r@p ($(180:\hex@r@r)+(120:\hex@r@t/2)$)} + \fi + \ifhex@r@s + \xdef\hex@r@p{\hex@r@p --(240:\hex@r@r)} + \else + \xdef\hex@r@p{\hex@r@p --(240:\hex@r@r)} \fi - \xdef\hex@r@p{\hex@r@p --(240:\hex@r@r)} + \hex@dbg{4}{Ridge along south west: `\hex@r@p'} \fi \ifhex@r@s \ifhex@r@sw\else - \xdef\hex@r@p{\hex@r@p (240:\hex@r@r)} + \xdef\hex@r@p{\hex@r@p ($(240:\hex@r@r)+(-\hex@r@t/2,0)$)} \fi - \xdef\hex@r@p{\hex@r@p --(300:\hex@r@r)} + \ifhex@r@se + \xdef\hex@r@p{\hex@r@p --(300:\hex@r@r)} + \else + \xdef\hex@r@p{\hex@r@p --(300.5:\hex@r@r)} + \fi + \hex@dbg{4}{Ridge along south: `\hex@r@p'} \fi \ifhex@r@se \ifhex@r@s\else - \xdef\hex@r@p{\hex@r@p (300:\hex@r@r)} + \xdef\hex@r@p{\hex@r@p ($(300:\hex@r@r)+(-120:\hex@r@t/2)$)} + \fi + \ifhex@r@ne + \xdef\hex@r@p{\hex@r@p --cycle} + \else + \xdef\hex@r@p{\hex@r@p --(.5:\hex@r@r)} \fi - \xdef\hex@r@p{\hex@r@p --(360:\hex@r@r)} + \hex@dbg{4}{Ridge along se: `\hex@r@p'} \fi \hex@dbg{3}{ Ridges path: \hex@r@p} + % \draw[red] \hex@r@p; \draw[hex/ridges] \hex@r@p; \endscope% End of ridges scope } |