diff options
Diffstat (limited to 'macros/latex/contrib/wargame/source/util/compound.dtx')
-rw-r--r-- | macros/latex/contrib/wargame/source/util/compound.dtx | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/macros/latex/contrib/wargame/source/util/compound.dtx b/macros/latex/contrib/wargame/source/util/compound.dtx new file mode 100644 index 0000000000..aca6800644 --- /dev/null +++ b/macros/latex/contrib/wargame/source/util/compound.dtx @@ -0,0 +1,242 @@ +% \iffalse +% -------------------------------------------------------------------- +%<*utils> +% \fi +% +% \subsubsection{Pictures in compound nodes} +% +% \begin{Macro}{\wg@pic} +% The macro \cs{wg@pic} will render a \texttt{pic}. This is used by +% the \texttt{natoapp6cs}, \texttt{chit}, and \texttt{hex} node +% shapes extensively. +% +% The arguments are +% \begin{enumerate} +% \item Prefix +% \item Position +% \item Fixed options +% \item User options +% \item Picture. +% \end{enumerate} +% +% That is, the macro expects calls like +% \begin{Syntax} +% \cs{wg@pic}\oarg{options}\meta{picture}\cs{@endwg@pic}\marg{prefix}\marg{position}\marg{options} +% \end{Syntax} +% +% Note the \cs{@endwg@pic} at the end of the call to swallow up +% \meta{picture}. Typically this macro is used as +% +% \begin{Syntax} +% \cs{edef}\cs{args}\{\meta{something}\} +% \cs{expandafter}\cs{wg@pic}\cs{args}\cs{@endwg@pic}\marg{prefix}\parg{position}\marg{options} +% \end{Syntax} +% +% where \meta{something} typically expands to \oarg{user +% option}\meta{picture} +% +% First, the top-level macro \cs{wg@pic} that looks for user +% options. +% +% \begin{macrocode} +\def\wg@pic{% + \@ifnextchar[{\wg@@pic}{\wg@@pic[]}%] +} +% \end{macrocode} +% +% This macro then forwards to \cs{wg@@pic} to gobble up +% \meta{picture}. +% +% \begin{enumerate} +% \item User options +% \item Arguments +% \end{enumerate} +% +% \begin{macrocode} +\def\wg@@pic[#1]#2\@endwg@pic{% + \wg@dbg{2}{Options: `#1', picture: `#2'}% + \wg@@@pic{#1}{#2}% +} +% \end{macrocode} +% +% \begin{enumerate} +% \item User options +% \item Arguments +% \item Prefix +% \item Coordinates +% \item Fixed options +% \end{enumerate} +% +% \begin{macrocode} +\def\wg@@@pic#1#2#3#4#5{% + \ifx|#2|\wg@dbg{3}{No picture given}% + \else% + \wg@dbg{3}{^^JWG Pic: + ^^J User options: #1 + ^^J Picture: #2 + ^^J Prefix: #3 + ^^J Coordinates: #4 + ^^J Fixed options: #5}% + % \wg@dbg{2}{\string\pic[#5,#1] at (#4) {#3#2}}% + \pic[#5,#1] at (#4) {#3#2};% + \ifwg@s@ve% + \pgf@relevantforpicturesizetrue% + \begin{getbbl}% + \pic[draw=none,fill=none,transform shape] at (#4) {#3#2};% + \end{getbbl}% + \wg@dbg{5}{Clipping to local bounding box}% + \clip (L.south west) rectangle (L.north east);% + \pgf@relevantforpicturesizefalse \global\wg@s@vefalse% + \fi + \fi% + \wg@dbg{3}{End of WG Pic} +} +% \end{macrocode} +% \end{Macro} +% +% +% \begin{Macro}{\wg@pic@all} +% +% This macro sets all pictures in a list. +% +% \begin{enumerate} +% \item List +% \item Prefix +% \item Position +% \item Styles +% \end{enumerate} +% +% +% \begin{macrocode} +\def\wg@pic@all#1#2#3#4{% + \wg@dbg{2}{WG picture loop + ^^J List: \meaning#1 + ^^J Prefix: `#2' + ^^J Position: `#3' + ^^J Styles: `#4'} + \foreach \p in #1{% + \wg@dbg{2}{WG picture element: \meaning\p}% + \expandafter\wg@pic\p\@endwg@pic {#2}{#3}{#4}% + }% +} +% \end{macrocode} +% \end{Macro} +% +% \iffalse +% -------------------------------------------------------------------- +% \fi +% +% \subsubsection{Nodes in compound nodes} +% +% \begin{Macro}{\wg@node} +% The macro \cs{wg@node} will render a \texttt{node}. This can be +% used by the \texttt{natoapp6cs}, \texttt{chit}, and \texttt{hex} +% node shapes. +% +% The arguments are +% \begin{enumerate} +% \item Prefix +% \item Position +% \item Fixed options +% \item User options +% \item Body. +% \end{enumerate} +% +% That is, the macro expects calls like +% \begin{Syntax} +% \cs{wg@node}\oarg{options}\meta{body}\cs{@endwg@node}\marg{prefix}\marg{position}\marg{options} +% \end{Syntax} +% +% Note the \cs{@endwg@node} at the end of the call to swallow up +% \meta{body}. Typically this macro is used as +% +% \begin{Syntax} +% \cs{edef}\cs{args}\{\meta{something}\} +% \cs{expandafter}\cs{wg@node}\cs{args}\cs{@endwg@node}\marg{prefix}\parg{position}\marg{options} +% \end{Syntax} +% +% where \meta{something} typically expands to \oarg{user +% option}\meta{body} +% +% First, the top-level macro \cs{wg@node} that looks for user +% options. +% +% \begin{macrocode} +\def\wg@node{% + \@ifnextchar[{\wg@@node}{\wg@@node[]}%] +} +% \end{macrocode} +% +% This macro then forwards to \cs{wg@@node} to gobble up +% \meta{body}. +% +% \begin{enumerate} +% \item User options +% \item Arguments +% \end{enumerate} +% +% \begin{macrocode} +\def\wg@@node[#1]#2\@endwg@node{% + \wg@dbg{2}{Options: `#1', body: `#2'}% + \wg@@@node{#1}{#2}% +} +% \end{macrocode} +% +% \begin{enumerate} +% \item User options +% \item Arguments +% \item Prefix +% \item Coordinates +% \item Fixed options +% \end{enumerate} +% +% \begin{macrocode} +\def\wg@@@node#1#2#3#4#5{% + \ifx|#2|\wg@dbg{3}{No body given}% + \else% + \wg@dbg{3}{^^JWG Pic: + ^^J User options: #1 + ^^J Body: #2 + ^^J Prefix: #3 + ^^J Coordinates: #4 + ^^J Fixed options: #5}% + % \wg@dbg{2}{\string\pic[#5,#1] at (#4) {#3#2}}% + \node[#5,#1] at (#4) {#3#2};% + \fi% + \wg@dbg{3}{End of WG Node} +} +% \end{macrocode} +% \end{Macro} +% +% +% \begin{Macro}{\wg@node@all} +% +% This macro sets all pictures in a list. +% +% \begin{enumerate} +% \item List +% \item Prefix +% \item Position +% \item Styles +% \end{enumerate} +% +% +% \begin{macrocode} +\def\wg@node@all#1#2#3#4{% + \wg@dbg{2}{WG picture loop + ^^J List: \meaning#1 + ^^J Prefix: `#2' + ^^J Position: `#3' + ^^J Styles: `#4'} + \foreach \p in #1{% + \wg@dbg{2}{WG picture element: \meaning\p}% + \expandafter\wg@node\p\@endwg@node {#2}{#3}{#4}% + }% +} +% \end{macrocode} +% \end{Macro} +% +% \iffalse +% -------------------------------------------------------------------- +%</utils> +%\fi |