The file minutes-blaxcell.dtx, a class to write

meeting minutes with L^{A}TEX 2ε.^{∗}

It contains the code for minutes-blaxcell.cls

Nick Urbanik

22 January 96

Abstract

This is a quick hack to make writing minutes for meetings easier. In particular it was designed for the Communications and Digital Systems Teaching Group.

Contents

1 How to use this class 1 1.1 Mandatory macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 What must follow the \begindocument . . . . . . . . . . . . . . . . 2 1.3 Comands to use in minute items . . . . . . . . . . . . . . . . . . . . 3 1.4 Options available . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 The implementation 3 2.1 Producing the documentation . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Identification part . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Declaration of options . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.3.1 Pass all other options unchanged to article.cls . . . . . . . 4 2.4 Execution of options . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.5 Special class file commands . . . . . . . . . . . . . . . . . . . . . . . 5 2.6 Package loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.7 Commands to make things work . . . . . . . . . . . . . . . . . . . . 5

3 The heading, and meeting number 6

4 Numbered headings within the minutes 6

5 Numbering the minute items within each heading 8

6 The stuff automatically inserted at the beginning of the minutes 8

1 How to use this class

The best way to see how to use this is by example. See the file minutest.tex for a complete example.

∗This file has version number 1.0a, dated 22 January 96.

The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε 2

1.1 Mandatory macros

There are a number of mandatory macros that must be called by the user in the preamble, or this won’t work. These are \meetingDate, \meetingTime and

\meeting.

The macro \meetingDate takes one mandatory argument, which is the date of \meetingDate the meeting. This can be entered in any format you like. I write it as “21 January 1996”.

The macro \meetingTime takes one mandatory argument, which is the time \meetingTime of the meeting. This can be entered in any format you like. I write it like this: “8.30–9.30 am”.

The macro \meetingTime takes one mandatory argument, which is the meeting \meeting number. This can be entered in any format you like. I call it like this:

 \meeting{7}

The value is used in the heading on the front page and on the top header of every page after the first.

1.2 What must follow the \begindocument

After the \begin{document} you need the following:

• A list of all the participants. I usually present this in a tabular form like this:

      \begin{tabular}{@{}l@{\hspace{8mm}}l@{}}
      Nigel Montague (chairman) & Kin Cheong, Chu \\
      Tze Shan, Lam & Lawrence Wong \\
      Albert Ho & Michael Chan \\
      Nick Urbanik
      \end{tabular}

• A suitable skip to separate the participant list from the minutes.

      \vspace{3ex}

This is probably not essential, but that’s what I use.

• A heading for the action column:

      \marginlabel{\textbf{Action}}

• An \numerate environment to enclose the minutes

• Before the first item in the minutes, there needs to be a \heading, otherwise \heading the first items in the minutes will be preceeded by a zero digit and a full stop: 0.. . .

      \heading{The first heading...}

3 The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε

1.3 Comands to use in minute items

The \heading macro is used to create a heading (a numbered section) within an \heading enumerate environment. All the items have a counter that is numbered within this heading number; the item number is reset to zero at the beginning of each new heading.

\subheading The \subheading macro is used to create a subheading (an unnumbered subsection) within an enumerate environment. The item number is not reset to zero at the beginning of each new \subheading; only at the start of each \heading.

\action The \action macro takes one argument which is the name of a person. The name is set in bold in the action column to the right of the place where this macro is called.

\actioni The macro \actioni is the same as \action but the argument is also printed

at the current position. This is simply to save typing.

\marginlabel The \marginlabel command is copied from page 74 of The L^{A}TEX Companion. It overcomes the problem with lack of hyphenation of the first word in an ordinary \marginpar text. I haven’t used this command, but have used most of the idea of it when writing the \action and \actioni macros.

1.4 Options available

There is a \raftver option which simply adds the word “draft” to headers and main title.

2 The implementation

2.1 Producing the documentation

Here is a short driver program that can be extracted with the L^{A}TEX 2εdocstrip program. It is not necessary to create a separate driver file from this, however; you can just run this file, minutes-blaxcell.dtx through L^{A}TEX 2ε.

1 ⟨∗driver⟩

 2 \ProvidesFile{minutes-blaxcell.drv} \documentclass[a4paper,twoside]{ltxdoc}
 3 \usepackage{a4,fancyhdr}

I have had problems with getting the correct \filedate and \fileversion from this file. I keep getting them from the file a4.sty. I believe the next line is supposed to fix such a problem, but it leaves them undefined.

 4 % \GetFileInfo{minutes-blaxcell.dtx}

This is definitely the wrong place to put \fileversion, \fileversion and \docdate, since it is hard to find them here, but at the moment it’s the only place where I can get them to work!

 5 \def\fileversion{1.0a}
 6 \def\filedate{22 January 96}
 7 \def\docdate{22 January 96}

These depend on the package fancyhdr. If you don’t have it, you may want to comment out these lines. You may prefer to comment out the line \thispagestyle{empty} further down.

 8 \pagestyle{fancy}
 9 \lhead[\textbf{\upshape The file \texttt{minutes-blaxcell.dtx},
10  a class to write meeting minutes with  \LaTeXe}]%
11  {\textbf{\thepage}}
12 \rhead[\textbf{\thepage}]{\textbf{\upshape The file
13  \texttt{minutes-blaxcell.dtx}, a class to write meeting minutes with

The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε 4

14  \LaTeXe}}
15 \cfoot{}
16 \EnableCrossrefs % Make a full index.
17 %\DisableCrossrefs % Make no index.
18 \CodelineIndex % Index by line numbers rather than by page.
19 %\PageIndex % index commands using page numbers.
20 \DoNotIndex{\textbf,\texttt,bfseries,\renewcommand,\providescommand}
21 \DoNotIndex{\filedate,\filename,\fileversion}
22 \DoNotIndex{\DoNotIndex,\arabic} \DoNotIndex{\NeedsTeXFormat}
23 \RecordChanges % Show change history.
24 %\OnlyDescription % uncomment this to not format the code.

25

26 \title{The file \texttt{minutes-blaxcell.dtx}, a class to write meeting minutes
27 with \LaTeXe.\thanks{This file has version number \fileversion,
28  dated \filedate.}\\[2pt] It contains the code for
29 \texttt{minutes-blaxcell.cls}} \author{Nick Urbanik} \date{\filedate}
30 \begin{document}
31 \thispagestyle{empty} \maketitle
32 \providecommand{\Lenv}[1]{\textsf{#1}}
33 \providecommand{\pkg}[1]{\texttt{#1}}
34 \providecommand{\file}[1]{\texttt{#1}} \DocInput{minutes-blaxcell.dtx}
35 \PrintIndex%
36 \PrintChanges

Now tell the people what they need to do next to get the index and change list:

37 \typeout{Next, to make the index and changes list for this
38 documentation:}%
39 \typeout{2. makeindex -s gind.ist minutes-blaxcell}%
40 \typeout{3. makeindex -s gglo.ist -o minutes-blaxcell.gls minutes-blaxcell.glo}%
41 \typeout{Finally, run this file through LaTeX once more.}
42 \end{document}

43 ⟨/driver⟩

2.2 Identification part

44 ⟨∗class⟩

45 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
46 \ProvidesClass{minutes-blaxcell}[1996/01/22 For meeting minutes.]

2.3 Declaration of options

47 \DeclareOption{draftver}{%
48 \AtEndOfClass%
49 {%
50  % Want DRAFT diagonally across the first page, then at the bottom
51  % of subsequent pages.  The options for the draftcopy package were:
52  % light,first,bottomafter.
53  %\def\draft{DRAFT version for comment\\\relax}%
54  \draftcopySetGrey{0.95}% .90 is light, .85 is dark. .975 seemed okay..
55  \draftcopyLastPage{9999}%
56  \draftcopy@bottomAftertrue
57  }%

58 }

2.3.1 Pass all other options unchanged to article.cls

59 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}

2.4 Execution of options

5 The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε

60 \ProcessOptions

2.5 Special class file commands

61 \LoadClass[a4paper,12pt]{article}

2.6 Package loading

62 \RequirePackage{%
63 fancyhdr,%
64 calc,%
65 xspace,%
66 graphicx,%
67 varioref,%
68 vmargin,%
69 mdwlist,% For suspend, resume.
70 nick,%
71 rcs}

Want to be able to use the draftcopy package. Use the none option so that by default, there will be no DRAFT message displayed on the minutes.

72 \RequirePackage[none]{draftcopy}

2.7 Commands to make things work

These macros come from the vmargin package.

73 \setpapersize{A4}
74 \shiftmargins
75 \setmarginsrb{20mm}% left
76  {20mm}% top
77  {37mm}% right
78  {15mm}% bottom
79  {15pt}% headheight---increase to stop fancyhdr warn
80  {11mm}% headsep
81  {0pt}%  footheight
82  {11mm}% footskip

Now it would be nice to have the header rule have the same protrusion on both the left and right side fo the page. We refer to page 99 of The L^{A}TEX Companion to see how to do it. The left margin was set above at 20 mm, the right at 37 mm, so add a further 17 mm to the width of the head rule on the right hand side.

83  \addtolength{\headwidth}{17mm}

This defines the stuff for the actions. I just used the marginpar macros. First we define a font for writing the actions. This can be changed by the user in the preamble.

\actionFont
84  \newcommand{\actionFont}[1]{\textbf{\footnotesize#1}}

This is from page 74 of the Companion. I haven’t found a use for it in the minutes, but the idea is used to define \action and \actioni.

85  \newcommand{\marginlabel}[1]
86  {\mbox{}\marginpar{\raggedright\hspace{0pt}#1}}
\action \actioni
87 \newcommand{\action}[1]
88  {\mbox{}\marginpar{\raggedright\hspace{0pt}{\actionFont{#1}}}}
89 \newcommand{\actioni}[1]
90  {#1\marginpar{\raggedright\hspace{0pt}{\actionFont{#1}}}}

The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε 6

We want the actions 4.5 mm to the right of the minute items, and set in a box that is 28 mm wide.

 91 \setlength{\marginparsep}{4.5mm}
 92 \setlength{\marginparwidth}{28mm}

This is the stuff from fancyhdr.sty for the heading at the top of each page:

 93 \pagestyle{fancyplain}
 94 \lhead{\fancyplain{File: \fileNumber}{\bfseries \draft\thisOrganisation{}
 95  Meeting~\arabic{meetingNum}}}
 96 \rhead{\fancyplain{}{\rmfamily\bfseries\thepage}}
 97 \cfoot{}
 98 \lfoot{\fancyplain{}{File: \fileNumber}}

3 The heading, and meeting number

These macros are not meant to be called by the user; rather, they simply give a default value to these names that is used automatically at the beginning of the document. The user should change the name with the macros \department and

 \organisation.
\thisDepartment
\thisOrganisation
\fileNumber
\draft

 99 \newcommand{\thisDepartment}%
100 {Department of Electrical \& Communications Engineering}
101 \newcommand{\thisOrganisation}%
102 {Communications and Digital Systems Teaching Group}
103 \newcommand*{\fileNumber}{8/18/2}
104 \newcommand*{\draft}{}
105 \newcommand*{\department}%
106 [1][Department of Electrical \& Communications Engineering]%
107 {\def\thisDepartment{#1}\relax}
\organisation
108 \newcommand*{\organisation}%
109 [1][Communications and Digital Systems Teaching Group]%
110 {\renewcommand*{\protect\thisOrganisation}{#1}\relax}
111 %{\def\thisOrganisation{#1}\relax}
\meetingDate
\meetingTime
\meeting

112 \newcommand*{\meetingDate}[1]{\def\thisMeetingDate{#1}\relax}
113 \newcommand*{\meetingTime}[1]{\def\thisMeetingTime{#1}\relax}
114 \newcommand{\meeting}[1]%

115 {%

116 \setcounter{meetingNum}{#1}%

117 }

4 Numbered headings within the minutes

This is based on code from my result.sty:

  \newlength{\itemIndent}
  \newcommand{\heading}[1]{{%
     \setlength{\itemIndent}{\linewidth}
     \addtolength{\indentLen}{-\textwidth}%
     \hspace*{\indentLen}%
     \parbox[t]{\textwidth}{%
        \noindent%

7 The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε

         ...
     }
  }}

… but I can do better:

\heading
118 %\newcommand{\heading}[1]{{%
119 %   \item[]\hspace*{-\leftmargin}%
120 %   \parbox[t]{\textwidth}%
121 %   {%
122 %      \section{#1}%
123 %   }%
124 %}}

Well, that’s okay, but there can be too much space before or after the heading. Maybe better to use a simpler approach, something like this:

125 \newcommand{\heading}[1]{%
126  \end{enumerate}%
127  \section{#1}%
128  \begin{enumerate}%
129  \partopsep=1pt%
130  \itemsep = 2pt%
131  \parskip = 2pt plus 1pt minus 0.5pt\relax

132 }

Now here is a macro to do subheadings. This does not reset the item counter, and it is not numbered, to avoid confusion with the items of the meeting.

\subheading
133 %\newcommand{\subheading}[1]{{%
134 %   \item[]\hspace*{-\leftmargin}%
135 %   \parbox[t]{\textwidth}%
136 %   {%
137 %      \subsection*{#1}%
138 %   }%
139 %}}

Well, that’s okay, but there can be too much space before or after the heading. Maybe better to use the mdwlist.sty, something like this:

140 \newcommand{\subheading}[1]{%
141 \suspend{enumerate}%
142 \subsection*{#1}%
143 \resume{enumerate}%
144  \partopsep=1pt%
145  \itemsep = 2pt%
146  \parskip = 2pt plus 1pt minus 0.5pt\relax

147 }

This is the number for the meeting—a value must be supplied by the user using the

 \meeting macro.
meetingNum
148 \newcounter{meetingNum}

The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε 8

5 Numbering the minute items within each heading

Now I want to have the minute items numbered within each section. The \@addtoreset macro is described on page 22 of the Companion.

149 \def\labelenumi{{\bfseries \thesection.\theenumi.}}
150 \@addtoreset{enumi}{section}

6 The stuff automatically inserted at the beginning of the minutes

This gets inserted at the beginning of each set of minutes. The format is rather rigid. It needs a list of participants as the first thing. It also needs the line

  \marginlabel{\textbf{Action}}

at the beginning of the enumerated environment.

151 \AtBeginDocument%

152 {%

153 \newlength{\logowidth}%
154 \newlength{\sideWidth}%
155 \newlength{\logoSep}%
156 \setlength{\logowidth}{31.5mm}%
157 \setlength{\logoSep}{0em}%
158 \setlength{\sideWidth}{\textwidth}%
159 \addtolength{\sideWidth}{-\logowidth}%
160 \addtolength{\sideWidth}{-\logoSep}%
161 \thispagestyle{plain}
162 \noindent%
163 \includegraphics[width=\logowidth]{tylogo1}%
164 \hspace{\logoSep}%
165 \begin{minipage}[b][\logowidth-2em][c]{\sideWidth}%
166  \centering%
167  \noindent%
168  \bfseries%
169  \thisDepartment

170

171  \vfill

172

173  \large%
174  \draft

175

176  \vfill

177

178  \thisOrganisation{} Meeting~\arabic{meetingNum}
179 \end{minipage}\\[2ex]
180 %   \begin{center}
181 %   \large\bfseries \thisDepartment

182

183 %   \draft

184

185 %   \thisOrganisation{} Meeting~\arabic{meetingNum}
186 %   \end{center}

187

188 \vspace{1ex}

9 The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε

189

190 \begin{tabular}{@{}ll@{}}
191 Date held: & \thisMeetingDate\\
192 Time:      & \thisMeetingTime
193 \end{tabular}

194

195 \vspace{2ex}

196

197 Participants:\par

198 }

199 ⟨/class⟩

200 \endinput

Index

Numbers written in italic refer to the page where the corresponding entry is described; numbers underlined refer to the code line of the definition; numbers in roman refer to the code lines where the entry is used.

action=  \subitem *+\action+, \usage{3}, \main{85}
actionFont=  \subitem *+\actionFont+, \main{82}, 86, 88
actioni=  \subitem *+\actioni+, \usage{3}, \main{85}
addtolength=  \subitem *+\addtolength+, 81, 151, 152
AtBeginDocument=  \subitem *+\AtBeginDocument+, 143
AtEndOfClass=  \subitem *+\AtEndOfClass+, 46
author=  \subitem *+\author+, 29
begin=  \subitem *+\begin+, 30, 126, 157, 172, 182
bfseries=  \subitem *+\bfseries+, 92, 94, 141, 160, 173
centering=  \subitem *+\centering+, 158
cfoot=  \subitem *+\cfoot+, 15, 95
CodelineIndex=  \subitem *+\CodelineIndex+, 18
CurrentOption=  \subitem *+\CurrentOption+, 57
date=  \subitem *+\date+, 29
DeclareOption=  \subitem *+\DeclareOption+, 45, 57
def=  \subitem *+\def+, 5--7, 51, 105, 109--111, 141
department=  \subitem *+\department+, 103
DisableCrossrefs=  \subitem *+\DisableCrossrefs+, 17
docdate=  \subitem *+\docdate+, 7
DocInput=  \subitem *+\DocInput+, 34
documentclass=  \subitem *+\documentclass+, 2
draft=  \subitem *+\draft+, 51, 92, \main{97}, 166, 175
bottomAftertrue=  \subitem bottomAftertrue+, 54
draftcopyLastPage=  \subitem *+\draftcopyLastPage+, 53
draftcopySetGrey=  \subitem *+\draftcopySetGrey+, 52
eetingNum=  \subitem *+meetingNum+, \main{140}
EnableCrossrefs=  \subitem *+\EnableCrossrefs+, 16
end=  \subitem *+\end+, 40, 124, 171, 178, 185
endinput=  \subitem *+\endinput+, 192
fancyplain=  \subitem *+\fancyplain+, 92, 94, 96
file=  \subitem *+\file+, 34
fileNumber=  \subitem *+\fileNumber+, 92, 96, \main{97}
footnotesize=  \subitem *+\footnotesize+, 82

GetFileInfo=  \subitem *+\GetFileInfo+, 4
heading=  \subitem *+\heading+, \usage{2, 3}, \main{116}
headwidth=  \subitem *+\headwidth+, 81
hspace=  \subitem *+\hspace+, 84, 86, 88, 117, 129, 156
includegraphics=  \subitem *+\includegraphics+, 155
item=  \subitem *+\item+, 117, 129
labelenumi=  \subitem *+\labelenumi+, 141
large=  \subitem *+\large+, 165, 173
LaTeXe=  \subitem *+\LaTeXe+, 10, 14, 27
leftmargin=  \subitem *+\leftmargin+, 117, 129
Lenv=  \subitem *+\Lenv+, 32
lfoot=  \subitem *+\lfoot+, 96
lhead=  \subitem *+\lhead+, 9, 92
LoadClass=  \subitem *+\LoadClass+, 59
logoSep=  \subitem *+\logoSep+, 147, 149, 152, 156
logowidth=  \subitem *+\logowidth+, 145, 148, 151, 155, 157
maketitle=  \subitem *+\maketitle+, 31
marginlabel=  \subitem *+\marginlabel+, \usage{3}, 83
marginpar=  \subitem *+\marginpar+, 84, 86, 88
marginparsep=  \subitem *+\marginparsep+, 89
marginparwidth=  \subitem *+\marginparwidth+, 90
mbox=  \subitem *+\mbox+, 84, 86
meeting=  \subitem *+\meeting+, \usage{2}, \main{110}
meetingDate=  \subitem *+\meetingDate+, \usage{2}, \main{110}
meetingTime=  \subitem *+\meetingTime+, \usage{2}, \main{110}
newcommand=  \subitem *+\newcommand+, 82, 83, 85, 87, 97, 99, 101--103, 106,110–

112, 116,

123,  128,  135

newcounter=  \subitem *+\newcounter+, 140
newlength=  \subitem *+\newlength+, 145--147
noindent=  \subitem *+\noindent+, 154, 159
OnlyDescription=  \subitem *+\OnlyDescription+, 24

organisation=  \subitem *+\organisation+, \main{106}
PageIndex=  \subitem *+\PageIndex+, 19
pagestyle=  \subitem *+\pagestyle+, 8, 91
par=  \subitem *+\par+, 189
parbox=  \subitem *+\parbox+, 118, 130
PassOptionsToClass=  \subitem *+\PassOptionsToClass+, 57
pkg=  \subitem *+\pkg+, 33
PrintChanges=  \subitem *+\PrintChanges+, 35
PrintIndex=  \subitem *+\PrintIndex+, 35
ProcessOptions=  \subitem *+\ProcessOptions+, 58
protect=  \subitem *+\protect+, 108
providecommand=  \subitem *+\providecommand+, 32--34
ProvidesClass=  \subitem *+\ProvidesClass+, 44
ProvidesFile=  \subitem *+\ProvidesFile+, 2
raggedright=  \subitem *+\raggedright+, 84, 86, 88
RecordChanges=  \subitem *+\RecordChanges+, 23
relax=  \subitem *+\relax+, 51, 105, 108--111
RequirePackage=  \subitem *+\RequirePackage+, 60, 70
resume=  \subitem *+\resume+, 138
rhead=  \subitem *+\rhead+, 12, 94
rmfamily=  \subitem *+\rmfamily+, 94
section=  \subitem *+\section+, 120, 125
setcounter=  \subitem *+\setcounter+, 114
setlength=  \subitem *+\setlength+, 89, 90, 148--150
setmarginsrb=  \subitem *+\setmarginsrb+, 73
setpapersize=  \subitem *+\setpapersize+, 71
shiftmargins=  \subitem *+\shiftmargins+, 72
sideWidth=  \subitem *+\sideWidth+, 146, 150--152, 157
subheading=  \subitem *+\subheading+, \usage{3}, \main{128}
subsection=  \subitem *+\subsection+, 132, 137
suspend=  \subitem *+\suspend+, 136
textsf=  \subitem *+\textsf+, 32
textwidth=  \subitem *+\textwidth+, 118, 130, 150
thanks=  \subitem *+\thanks+, 27

The file minutes-blaxcell.dtx, a class to write meeting minutes with

L^{A}TEX 2ε 10

theenumi=  \subitem *+\theenumi+, 141
thepage=  \subitem *+\thepage+, 11, 12, 94
thesection=  \subitem *+\thesection+, 141
thisDepartment=  \subitem *+\thisDepartment+, \main{97}, 105, 161, 173
thisMeetingDate=  \subitem *+\thisMeetingDate+, 110, 183

                          thisMeetingTime=  \subitem *+\thisMeetingTime+, 111, 184
                          thisOrganisation=  \subitem *+\thisOrganisation+, 92, \main{97}, 108, 109, 170, 177
                          thispagestyle=  \subitem *+\thispagestyle+, 31, 153
                          title=  \subitem *+\title+, 26
                          typeout=  \subitem *+\typeout+, 36--39

                                                    upshape=  \subitem *+\upshape+, 9, 12
                                                    usepackage=  \subitem *+\usepackage+, 3
                                                    vfill=  \subitem *+\vfill+, 163, 168
                                                    vspace=  \subitem *+\vspace+, 180, 187

Change History

v1.0

General: First release . . . . . . . . . . . 1 v1.0a

General: Added subheading command. . . . . . . . . . . . . . . . . . . 1