1 %****************************************************************
3 %* GENERALLY USEFUL MACROS *
5 %****************************************************************
8 %****************************************************************
10 %* Some standard abbreviations *
12 %****************************************************************
15 \newcommand{\Haskell}[1]{Haskell}
17 % \ba \ea: Abbreviations for begin and end array
19 \newcommand{\ba}{\begin{array}}
20 \newcommand{\ea}{\end{array}}
23 %****************************************************************
25 %* Keeping text together *
27 %****************************************************************
29 % Use \begin{together} (or \bt)
30 % \end{together} (or \et)
32 % to keep a paragraph together on a single page.
34 \newenvironment{together}%
35 {\begin{flushleft}\begin{minipage}{\textwidth}}%
36 {\end{minipage}\end{flushleft}}
38 \newcommand{\bt}{\begin{together}}
39 \newcommand{\et}{\end{together}}
42 %****************************************************************
44 %* ToDo macro (cf showtodo.sty) *
46 %****************************************************************
48 \newcommand{\ToDo}[1]{}
51 %****************************************************************
53 %* Making boxes round things *
55 %****************************************************************
57 % \outline{text} typesets text in a centred framed box of the width
60 \newcommand{\outline}[1]{
63 \begin{minipage}{\linewidth}
70 %****************************************************************
74 %****************************************************************
76 % The mathcodes for the letters A, ..., Z, a, ..., z are changed to
77 % generate text italic rather than math italic by default. This makes
78 % multi-letter identifiers look better. The mathcode for character c
79 % is set to "7000 (variable family) + "400 (text italic) + c.
85 %\def\@setmcodes#1#2#3{{\count0=#1 \count1=#3
86 % \loop \global\mathcode\count0=\count1 \ifnum \count0<#2
87 % \advance\count0 by1 \advance\count1 by1 \repeat}}
89 %\@setmcodes{`A}{`Z}{"7441}
90 %\@setmcodes{`a}{`z}{"7461}
93 % Should work with Latex 3.0
96 % \gdef\mathrm{\use@mathgroup \=cmr \z@}
97 % %\gdef\mit{\use@mathgroup \=cmm \@ne}
98 % \gdef\mit{\use@mathgroup \=cmt \@ne}
99 % \gdef\cal{\use@mathgroup \=cmsy \tw@}
102 \@ifundefined{selectfont}
104 {\newmathalphabet{\textit}
105 \addtoversion{normal}{\textit}{cmr}{m}{it}
106 \addtoversion{bold}{\textit}{cmr}{bx}{it}
108 \everydisplay{\textit}
111 %****************************************************************
113 %* Definitions for macros used in figures *
114 %* These are produced by fig2dev, so we need defns for them *
116 %****************************************************************
118 % These ones work for 11-pt typesetting
120 \@ifundefined{selectfont} %DL is MS scheme present?
122 \def\fiverm{\rm\tiny} % Five pt
123 \def\sevrm{\rm\scriptsize} % Seven pt
125 \def\nintt{\tt\footnotesize}
126 \def\ninrm{\rm\footnotesize}
128 \def\tenrm{\rm\small} % Ten pt
129 \def\tentt{\tt\small} % Ten pt
131 \def\elvrm{\rm\normalsize} % Eleven pt
132 \def\elvit{\em\normalsize}
134 \def\twlbf{\bf\large} % Twelve pt
135 \def\twlit{\em\large}
136 \def\twltt{\tt\large}
137 \def\twlrm{\rm\large}
138 \def\twfvtt{\tt\large}
140 \def\frtnrm{\rm\Large} % Fourteen pt
141 \def\frtnbf{\bf\Large}
142 \def\frtnit{\em\Large}
143 \def\frtntt{\tt\Large}
145 \def\svtnsf{\sf\huge} % Seventeen pt
148 % cant remember why I need these
149 \def\egt{\size{8}{9} }
150 \def\elv{\size{11}{12} }
151 \def\five{\size{5}{7} }
152 \def\fiv{\size{5}{6} }
153 \def\frtn{\size{14}{15} }
154 \def\nin{\size{9}{10} }
155 \def\sev{\size{7}{8} }
156 \def\six{\size{6}{7} }
157 \def\svtn{\size{17}{18} }
158 \def\ten{\size{10}{11} }
159 \def\twfv{\size{25}{27} }
160 \def\twl{\size{12}{14} }
161 \def\twty{\size{20}{22} }
164 %****************************************************************
168 %****************************************************************
173 % \leftsembrac [[ left semantic bracket
174 % \rightsembrac ]] right semantic bracket
175 % \sembrac{x} [[x]] enclose arg in semantic brackets
176 % \semfun{E}{x} E[[x]] make E curly
178 \newcommand{\leftsembrac}{[\![}
179 \newcommand{\rightsembrac}{]\!]}
180 \newcommand{\sembrac}[1]{\leftsembracb#1\rightsembrac}
181 \newcommand{\semfun}[2]{{\cal #1}\db{#2}\,}
183 % \plusplus ++ run together
185 \def\plusplus{\mathrel{+\!\!\!+}}