bc901a359a69479b264ad421ce3df6a90e338816
[ghc-hetmet.git] / ghc / docs / abstracts / useful.sty
1 %****************************************************************
2 %*                                                              *
3 %*              GENERALLY USEFUL MACROS                         *
4 %*                                                              *
5 %****************************************************************
6
7
8 %****************************************************************
9 %*                                                              *
10 %*      Some standard abbreviations                             *
11 %*                                                              *
12 %****************************************************************
13
14 % Haskell name
15 \newcommand{\Haskell}[1]{Haskell}
16
17 % \ba \ea: Abbreviations for begin and end array
18 %
19 \newcommand{\ba}{\begin{array}}
20 \newcommand{\ea}{\end{array}}
21
22
23 %****************************************************************
24 %*                                                              *
25 %*      Keeping text together                                   *
26 %*                                                              *
27 %****************************************************************
28
29 % Use \begin{together}  (or \bt)
30 %     \end{together}    (or \et)
31 %
32 % to keep a paragraph together on a single page.
33
34 \newenvironment{together}%
35         {\begin{flushleft}\begin{minipage}{\textwidth}}%
36         {\end{minipage}\end{flushleft}}
37
38 \newcommand{\bt}{\begin{together}}
39 \newcommand{\et}{\end{together}}
40
41
42 %****************************************************************
43 %*                                                              *
44 %*      ToDo macro (cf showtodo.sty)                            *
45 %*                                                              *
46 %****************************************************************
47
48 \newcommand{\ToDo}[1]{}
49
50
51 %****************************************************************
52 %*                                                              *
53 %*      Making boxes round things                               *
54 %*                                                              *
55 %****************************************************************
56
57 % \outline{text} typesets text in a centred framed box of the width
58 % of the page.
59 %
60 \newcommand{\outline}[1]{
61   \begin{center}
62   \fbox{
63     \begin{minipage}{\linewidth}
64     #1
65     \end{minipage}
66   }
67   \end{center}
68 }
69
70 %****************************************************************
71 %*                                                              *
72 %*                      Math codes                              *
73 %*                                                              *
74 %****************************************************************
75
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.
80 %
81
82
83 %       Old Latex
84 %
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}}
88 %
89 %\@setmcodes{`A}{`Z}{"7441}
90 %\@setmcodes{`a}{`z}{"7461}
91
92
93 %       Should work with Latex 3.0 
94 %
95 %{\catcode`\= 11
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@}
100 %    }
101
102 \@ifundefined{selectfont}
103   {}
104   {\newmathalphabet{\textit}
105    \addtoversion{normal}{\textit}{cmr}{m}{it}
106    \addtoversion{bold}{\textit}{cmr}{bx}{it}
107    \everymath{\textit}
108    \everydisplay{\textit}
109   }
110
111 %****************************************************************
112 %*                                                              *
113 %*        Definitions for macros used in figures                *
114 %*    These are produced by fig2dev, so we need defns for them  *
115 %*                                                              *
116 %****************************************************************
117
118 %       These ones work for 11-pt typesetting
119
120 \@ifundefined{selectfont} %DL is MS scheme present? 
121 {}{
122 \def\fiverm{\rm\tiny}           % Five pt
123 \def\sevrm{\rm\scriptsize}      % Seven pt
124
125 \def\nintt{\tt\footnotesize}
126 \def\ninrm{\rm\footnotesize}
127
128 \def\tenrm{\rm\small}           % Ten pt
129 \def\tentt{\tt\small}           % Ten pt
130
131 \def\elvrm{\rm\normalsize}      % Eleven pt
132 \def\elvit{\em\normalsize}
133
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}
139
140 \def\frtnrm{\rm\Large}          % Fourteen pt
141 \def\frtnbf{\bf\Large}
142 \def\frtnit{\em\Large}
143 \def\frtntt{\tt\Large}
144
145 \def\svtnsf{\sf\huge}           % Seventeen pt
146
147
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} }
162 }
163
164 %****************************************************************
165 %*                                                              *
166 %*      Useful symbols                                          *
167 %*                                                              *
168 %****************************************************************
169
170
171 % Semantic brackets
172 %
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
177 %
178 \newcommand{\leftsembrac}{[\![}
179 \newcommand{\rightsembrac}{]\!]}
180 \newcommand{\sembrac}[1]{\leftsembracb#1\rightsembrac}
181 \newcommand{\semfun}[2]{{\cal #1}\db{#2}\,}     
182
183 %       \plusplus       ++ run together
184 %
185 \def\plusplus{\mathrel{+\!\!\!+}}
186