summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/wargame/source/util/misc.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/wargame/source/util/misc.dtx')
-rw-r--r--macros/latex/contrib/wargame/source/util/misc.dtx145
1 files changed, 145 insertions, 0 deletions
diff --git a/macros/latex/contrib/wargame/source/util/misc.dtx b/macros/latex/contrib/wargame/source/util/misc.dtx
new file mode 100644
index 0000000000..eee931a164
--- /dev/null
+++ b/macros/latex/contrib/wargame/source/util/misc.dtx
@@ -0,0 +1,145 @@
+% \iffalse
+% --------------------------------------------------------------------
+%<*utils>
+% \fi
+%
+% \subsubsection{Miscellaneous macros}
+% \begin{Macro}{\wargamelogo}
+%
+% This will produce the logo for this package.
+%
+%
+% \begin{center}
+% \tikz{\wargamelogo}
+% \end{center}
+%
+% \begin{macrocode}
+\tikzset{
+ wargame logo text/.style={
+ font=\sffamily\bfseries\fontsize{12}{14}\selectfont,
+ scale=2.8,
+ inner sep=0,
+ text width=1.8cm,
+ transform shape,
+ align=center},
+ wargame logo text content/.store in=\wg@logo@text@content,
+ wargame logo text content={{\huge\LaTeX} wargame},
+ wargame logo chit/.style={
+ chit={symbol={[
+ faction=friendly,
+ command=land,
+ echelon=division,
+ main=infantry]},
+ factors={chit/2 factors={4,3}},
+ left={chit/identifier=III},
+ right={chit/small identifier={10\textsuperscript{th}}},
+ color=white,
+ fill=red!50!black
+ }
+ },
+ wargame logo/.style={
+ transform shape,
+ every hex/.style={fill=gray!5!white,draw=gray!75!black},
+ hex/first row is=0,
+ hex/first column is=0,
+ hex/short top columns=none,
+ hex/short bottom columns=none,
+ hex/row direction is=normal,
+ hex/column direction is=normal
+ }
+}
+\newcommand\wargamelogo[1][]{%
+ \begin{scope}[wargame logo,#1]
+ \node[hex={fill=gray!30!white}] (logo center) at (hex cs:c=0,r=0) {};
+ \node[hex={terrain=light woods}](logo light woods) at (hex cs:c=0,r=1) {};
+ \node[hex={terrain=city}] (logo city) at (hex cs:c=0,r=-1){};
+ \node[hex={terrain=woods}] (logo woods) at (hex cs:c=-1,r=0){};
+ \node[hex={terrain=mountains}] (logo mountains) at (hex cs:c=-1,r=1){};
+ \node[hex={terrain=beach}] (logo beach) at (hex cs:c=1,r=1) {};
+ \node[hex={terrain=swamp}] (logo swamp) at (hex cs:c=1,r=0) {};
+ \node[wargame logo chit] (logo chit) at (hex cs:) {};
+ \node[wargame logo text] (logo text) {\wg@logo@text@content};
+ \end{scope}}
+% \end{macrocode}
+%
+% \end{Macro}
+% \begin{Macro}{\wg@dbg}
+% Debugging support. The counter \cs{wargamedbglvl} sets the debug
+% level. The package code then uses \cs{wg@dbg} to print out
+% debugging messages. This macro takes two arguments --- the first
+% is the \emph{least} debug level at which the message is printed, and
+% the second is the message it self.
+%
+% \begin{macrocode}
+\newcount\wargamedbglvl\wargamedbglvl=0
+\def\wg@dbg#1#2{%
+ \ifnum#1>\wargamedbglvl\relax\else\message{^^J#2}\fi}
+% \end{macrocode}
+% \end{Macro}
+%
+% \begin{Macro}{\wg@addto@macro}
+%
+% The macro \cs{wg@addto@macro}\marg{macro}\marg{other} adds the
+% definition of the macro \meta{other} to the macro \meta{macro}.
+% This uses the \cs{toks} trick of storing the \emph{tokens} of the
+% definition of a \meta{macro} and \meta{other} into \spec{@} and
+% expanding that token into the definition of \meta{macro}.
+% Effectively, this means that the top-level definition of
+% \meta{macro} and \meta{other} are expanded (i.e., macros used in
+% the definition of either macro is \emph{not} expanded) and then
+% that becomes the new definition of \meta{macro}.
+%
+% We will use this macro to do \emph{shallow} definitions of macros
+% to contain keys and such.
+%
+% \begin{macrocode}
+\long\def\wg@addto@macro#1#2{%
+ \begingroup
+ \toks@\expandafter\expandafter\expandafter{\expandafter#1#2}%
+ \xdef#1{\the\toks@}%
+ \endgroup}
+% \end{macrocode}
+% \end{Macro}
+%
+%
+% \begin{Macro}{\wg@sub@nchor}
+% Get anchor from sub node. We cannot use \cs{pgfpointanchor} since
+% that returns the anchor coordinates in the global coordinate
+% system.
+%
+% \begin{macrocode}
+\def\wg@sub@nchor#1#2{%
+ \wg@dbg{3}{^^JGet `#2' in `#1'}%
+ \@ifundefined{pgf@sh@ns@#1}{%
+ \pgf@x=0cm\pgf@y=0cm}{%
+ \pgf@process{%
+ \csname pgf@sh@ma@#1\endcsname% MW
+ \csname pgf@sh@np@#1\endcsname%
+ \pgf@sh@reanchor{\csname pgf@sh@ns@#1\endcsname}{#2}}}%
+ \wg@dbg{10}{-> \the\pgf@x,\the\pgf@y}%
+}
+% \end{macrocode}
+% \end{Macro}
+%
+%
+% Scratch dimensions
+%
+% \begin{macrocode}
+\newdimen\wg@tmpa
+\newdimen\wg@tmpb
+\newdimen\wg@tmpc
+\newdimen\wg@tmpd
+% \end{macrocode}
+%
+%
+% Macro to easy restore a saved path
+%
+% \begin{macrocode}
+\def\settosave#1{
+ \pgfsyssoftpath@setcurrentpath{#1}}
+% \end{macrocode}
+%
+% \iffalse
+% --------------------------------------------------------------------
+% </utils>
+% \fi