summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/multibox
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/multibox
Initial commit
Diffstat (limited to 'macros/latex/contrib/multibox')
-rw-r--r--macros/latex/contrib/multibox/multibox.pdfbin0 -> 212380 bytes
-rw-r--r--macros/latex/contrib/multibox/multibox.sty63
-rw-r--r--macros/latex/contrib/multibox/multibox.tex51
3 files changed, 114 insertions, 0 deletions
diff --git a/macros/latex/contrib/multibox/multibox.pdf b/macros/latex/contrib/multibox/multibox.pdf
new file mode 100644
index 0000000000..867a40ca32
--- /dev/null
+++ b/macros/latex/contrib/multibox/multibox.pdf
Binary files differ
diff --git a/macros/latex/contrib/multibox/multibox.sty b/macros/latex/contrib/multibox/multibox.sty
new file mode 100644
index 0000000000..afe5530d15
--- /dev/null
+++ b/macros/latex/contrib/multibox/multibox.sty
@@ -0,0 +1,63 @@
+% MULTIBOX.STY - a style option to provide multiple boxes in pictures
+% ============
+% Author: Brian HAMILTON KELLY, Royal Military College of Science,
+% Shrivenham, SWINDON, SN6 8LA, United Kingdom
+% Date: 13 October 1988
+%
+% This style file option provides two new commands for use in the picture
+% environment:
+%
+% \multimake(x,y)(dx,dy){n}(w,h)[<pos>]{Text_1}{Text_2}...{Text_n}
+% \multiframe(x,y)(dx,dy){n}(w,h)[<pos>]{Text_1}{Text_2}...{Text_n}
+%
+% These commands set the n texts Text_1..Text_n inside a \makebox or
+% \framebox respectively. The first box has its lower-left corner at (x,y),
+% and successive boxes are located at (x+dx,y+dy),..,(x+(n-1)dx,y+(n-1)dy).
+% Each box has width and height determined by (w,h), and the optional
+% box placement parameter <pos> is applied to all the generated texts
+%
+
+\newtoks\multi@rg
+
+\def\multiframe{\let\@putitem=\@iframepicbox \multib@x}
+\def\multimake{\let\@putitem=\@imakepicbox \multib@x}
+
+\def\multib@x(#1,#2)(#3,#4)#5(#6,#7){\@xdim=#1\unitlength \@ydim=#2\unitlength
+ \def\@dxdim{#3} \def\@dydim{#4}
+ \@multicnt=#5 \def\@Xsize{#6} \def\@Ysize{#7}
+ \@ifnextchar [{\imultib@x}{\imultib@x[]}
+ }
+
+% The liberal use of % at the ends of lines is to prevent the ingestion of
+% superfluous spaces which would otherwise upset the horizontal positioning
+% of the boxes.
+
+\def\imultib@x[#1]{\@killglue\relax
+ \def\p@sarg{#1}%
+ \d@multi
+ }
+
+% We need the expanded definition of \i@putitem because \@imakepicbox DOESN'T
+% expand its #3 argument (the optional text placement bit). However, it can
+% only recognize the letters b, t, l and r in this position, so \p@sarg is no
+% use. Therefore we expand the arguments, producing an appropriate call.
+
+\def\d@multi{%
+ \ifnum\@multicnt > 0
+ \def\next@rg##1{%
+ \multi@rg={{##1}}% Assign the next argument of original text to \multi@rg
+ \edef\@iputitem{%
+ \noexpand\@putitem(\@Xsize,\@Ysize)[\p@sarg]{\the\multi@rg}%
+ }%
+ \raise\@ydim\hbox to \z@{\kern \@xdim \@iputitem\hss}%
+ \advance\@xdim by \@dxdim\unitlength \advance\@ydim by \@dydim\unitlength
+ \advance\@multicnt by \m@ne
+ \d@multi}% End of (re-)definition of \next@rg
+ \else
+ \let\next@rg=\ignorespaces
+ \fi % Now execute \next@rg;
+ \next@rg % This will read the text, set it and then call \d@multi recursively
+ }
+
+
+
diff --git a/macros/latex/contrib/multibox/multibox.tex b/macros/latex/contrib/multibox/multibox.tex
new file mode 100644
index 0000000000..5747cdbc96
--- /dev/null
+++ b/macros/latex/contrib/multibox/multibox.tex
@@ -0,0 +1,51 @@
+\documentclass[pagesize=auto, parskip=half, fontsize=12pt, DIV=11]{scrartcl}
+
+\usepackage{fixltx2e}
+\usepackage{etex}
+\usepackage{lmodern}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage{booktabs}
+\usepackage{microtype}
+
+\newcommand*{\pkg}[1]{\textsf{#1}}
+\newcommand*{\cs}[1]{\texttt{\textbackslash#1}}
+\makeatletter
+\newcommand*{\cmd}[1]{\cs{\expandafter\@gobble\string#1}}
+\makeatother
+\newcommand*{\env}[1]{\texttt{#1}}
+\newcommand*{\meta}[1]{\textlangle\textsl{#1}\textrangle}
+\newcommand*{\marg}[1]{\texttt{\{}\meta{#1}\texttt{\}}}
+\newcommand*{\narg}[1]{\texttt{\{$#1$\}}}
+\newcommand*{\oarg}[1]{\texttt{[}\meta{#1}\texttt{]}}
+\newcommand*{\pargs}[2]{\texttt{($#1$,\,$#2$)}}
+\newcommand*{\coord}[2]{$(#1,\:#2)$}
+\newcommand*{\txt}[1]{Text\textsubscript{$#1$}}
+
+\addtokomafont{title}{\rmfamily}
+
+\title{\pkg{MULTIBOX.STY}}
+\subtitle{A style option to provide multiple boxes in pictures}
+\author{Brian HAMILTON KELLY\thanks{Royal Military College of Science, Shrivenham, SWINDON, SN6 8LA, United Kingdom}}
+\date{13 October 1988}
+
+
+\begin{document}
+
+\maketitle
+
+This style file option provides two new commands for use in the \env{picture}
+environment:
+%
+\begin{itemize}
+\item \cmd{\multimake}\pargs{x}{y}\pargs{dx}{dy}\narg{n}\pargs{w}{h}\oarg{pos}\marg{\txt{1}}\marg{\txt{2}}\ldots\marg{\txt{n}}
+\item \cmd{\multiframe}\pargs{x}{y}\pargs{dx}{dy}\narg{n}\pargs{w}{h}\oarg{pos}\marg{\txt{1}}\marg{\txt{2}}\ldots\marg{\txt{n}}
+\end{itemize}
+%
+These commands set the $n$ texts \meta{\txt{1}}\ldots\meta{\txt{n}} inside a \cmd{\makebox} or
+\cmd{\framebox} respectively. The first box has its lower-left corner at \coord{x}{y},
+and successive boxes are located at \coord{x+dx}{y+dy}, \ldots, \coord{x+(n-1)\,dx}{y+(n-1)\,dy}.
+Each box has width and height determined by \coord{w}{h}, and the optional
+box placement parameter \meta{pos} is applied to all the generated texts.
+
+\end{document}