The adlart package^{∗}

Andrew D. Lewis

1999/04/25

1 What does adlart do?

You are as likely to dislike the way I have laid out my article format as you are to dislike the standard L^{A}TEX article. So why bother looking at these? Well, if you want to write easily transportable L^{A}TEX documents, you should not be looking here. That is, the documents you will write using adlart will need some fudging if you are going to send the L^{A}TEX files to someone else to be processed. The fudges are not really substantial, but may be more of a bother than you want. So good golly, why bother? Well, I like uniformity in my articles. To do this I use some style widgets which get loaded into all of my articles so I do not have to make global changes to all of my documents.

The single biggest widget is the way I handle the authors on my articles. For each coauthor I have, I have a L^{A}TEX command and instead of entering all of the author’s information in the text of the paper, I simply use their command. So, for example, if I type \ADLewis I get my name as well as my address, email address, and URL. These latter are displayed in a footnote at the bottom of the title page. This way, when I change addresses, I only have to update my command \ADLewis. Also, when I use an author’s L^{A}TEX macro to indicate that they are an author, their name will be added to the running head. I store all the author commands in the L^{A}TEX package authorinfo. I find this rather helpful.

Included is a simple sample (s[ou]mple?) article so you can see how things get implemented.

2 Some extra commands defined by adlart

\published 1. If your article has been published, you may wish to give the publication information. Give this information as an argument to \published. You may use \\ within the argument where you want line breaks.

\title 2. \title accepts an optional argument in the usual L^{A}TEX manner: \title[short title]{title}, with short title being a version of the title suitable to go in the running header if the real title is too long.

∗This file has version number v1.0c, last revised 1999/04/25.

\titlenote 3. If you want to affix a footnote to your title, use \titlenote.

\author 4. The way authors are handled is different than with article. The \author command should simply have the author’s name as argument. This will “activate” this author so that their other information may be entered, i.e., their

\address \address, their \curraddr (current address), their \email address, their

\curraddr
\email

\title (e.g., Assistant Professor), their \webaddress, and their \funding

\title
\webaddress
\funding

source. All of these tags come with an optional argument. For example, \webaddress[spacing]{webaddress} where spacing is any LaTeX sequence. If the optional argument is present, it will be executed before the url is added to the author’s information. This may be useful for formatting all the information. If the optional argument is not present, the url will appear on a new line. See the sample for examples.

\thanks 5. Anything you’d like to say about an author which does not fit into the categories above may be spit out using \thanks.

6. Note that all the information about an author must be entered after their \author command, and before the next \author command.

\mymaketitle 7. \maketitle works in the usual manner. I sometimes like to make titles which are a bit simpler, however, and for this I use \mymaketitle.

8. The font used for section title may be changed globally with ease. Use the

\secfont        \secfont command. The default is \secfont{\bfseries\mathversion{bold}}

which makes a bold header, and the math symbols will also be bold.

9. There are three environments for use on the first page (typically after the AMS abstract): AMS, keyword, and theshorttitle. These may be used to specify

keyword
theshorttitle

AMS subject classifications, keywords for the paper, and a short “working” title (some journals like you to submit the latter). The use is the same for

all three: e.g., \begin{AMS}22E15, 53B20\end{AMS}.

\margin 10. Use the command \margin for making marginal notes.

3 Some notes

You must have the package authorinfo available, even if it is an empty file. I have included a sample authorinfo in this distribution, so you know how to enter your authors’ information.

You may use the headings option for adlart. The running heads will be the article title on odd numbered pages, and the authors’ names on even numbered pages. These headers will be automatically constructed from the \title and \author commands. See the sample for an example of how to manually set title and/or authors’ names in the running headers. This will be necessary if you have a long title or many authors.

I have my documents set up so that I may readily use PostScript fonts if I desire. To do so, I use the option pson for adlart and this loads a package mypsfonts which gives the specifics for the fonts you wish to use. I shall say no more about what should go in mypsfonts since if you wish to use PostScript fonts, I trust you already know how to do this. You may wish to do certain things differently in a document, depending on whether or not you are using PostScript fonts. To facilitate this, I have the command \psfonttest which takes two arguments, the first is executed if you are using a PostScript font (i.e., you have used the pson option), and the second is executed otherwise.

\section headers are centred. This is something not available with standard L^{A}TEX commands. \subsections, and all the rest are placed inline with the text. You may not like it. Go ahead and change it if you want. But don’t bother me questions. It is well explained in The L^{A}TEX Companion.

For those of you who have to write stupid conference papers with ridiculously low page limits, you have the squeeze option available which compresses space around section headings and the like.

The bibliography and index will be \small.

Equations will be numbered with sections.

4 Implementation

Some of this is pretty straightforward. The hard part, if there is one, is getting the author information collected and put in the right place.

4.1 adlart.sty

1 ⟨∗adlart⟩

Read packages and define the “headings” page style used in this package.

2

 3 \RequirePackage{authorinfo}
 4 \IfFileExists{smallcap.sty}{\RequirePackage{smallcap}}{}

5

 6 \@ifundefined{scfamily}{
 7 \def\ps@headings{%
 8  \let\@mkboth\@gobbletwo
 9  \def\@oddhead{\hss\scshape\shorttitle\hss\reset@font\rmfamily\thepage}
10  \def\@evenhead{\reset@font\rmfamily\thepage\hss\scshape\shortauthors\hss}
11  \let\@oddfoot\@empty\let\@evenfoot\@empty}
12 }{
13 \def\ps@headings{%
14  \let\@mkboth\@gobbletwo
15  \def\@oddhead{\hss\scfamily\shorttitle\hss\reset@font\rmfamily\thepage}
16  \def\@evenhead{\reset@font\rmfamily\thepage\hss\scfamily\shortauthors\hss}
17  \let\@oddfoot\@empty\let\@evenfoot\@empty}

18 }

19

20 \DeclareOption{headings}{\pagestyle{headings}\@twosidetrue}

The page style for published articles.

21 \def\ps@published{\let\@mkboth\@gobbletwo
22  \def\@oddhead{\parbox[t]{\textwidth}{\tiny\@ADL@pubinfo}\hfill}
23  \def\@oddfoot{\reset@font\rmfamily\hfil\thepage
24  \hfil}\let\@evenhead\@empty\let\@evenfoot\@oddfoot}

Allow variable date format.

25

26 \DeclareOption{numdate}{\def\@ADL@numdate{\@ne}}
27 \DeclareOption{textdate}{\def\@ADL@numdate{\z@}}

Set up the options for PostScript fonts and load them if requested.

28

29 \DeclareOption{pson}{\def\@ADL@@ps@on{\@ne}}
30 \DeclareOption{psoff}{\def\@ADL@@ps@on{\z@}}
31 \DeclareOption{squeeze}{\def\@ADL@squeeze{\@ne}}
32 \def\@ADL@squeeze{\z@}
33 \ExecuteOptions{psoff,numdate}
34 \ProcessOptions

Setup postscript font stuff.

35

36 \ifnum\@ADL@@ps@on=\@ne\RequirePackage{mypsfont}\fi
37 \@ifundefined{psfonttest}{%
38 \newcommand\psfonttest[2]{\ifnum\@ADL@@ps@on=@ne#1\else#2\fi}}{}

This internal macro is used to extend the definitions of existing macros.

39

40 \def\g@addto@custom#1#2#3#4{%
41 \let\@temp#1%
42 \protected@edef#1{\@temp#2{#3}#4}}

Macros for published articles. There is a special macro for those who publish in IEEE journals which gives the copyright notice.

43

44 \let\@ADL@pubinfo\@empty
45 \newcommand\published[1]{\def\@ADL@pubinfo{#1}}
46 \newcommand\publishedieee[2]{\def\@ADL@pubinfo{#2\\
47 #1 IEEE. Personal use of this material is permitted. However,
48 permission to reprint/republish this material for advertising or
49 promotional purposes or for creating new collective works for resale
50 or redistribution to servers or lists, or to reuse any copyrighted
51 component of this work in other works must be obtained from the IEEE}}
   The \title and \titlenote commands.

52

53 \renewcommand\title{\@ifnextchar [{\@ADL@titleshort}{\@ADL@titlelong}}
54 \def\@ADL@titleshort[#1]#2{\gdef\shorttitle{#1}\gdef\@title{#2}}
55 \newcommand\@ADL@titlelong[1]{\gdef\shorttitle{#1}\gdef\@title{#1}}
56 \newcommand\titlenote[1]{\gdef\@ADL@titlenote{#1}}

Making the list of authors.

57

58 \let\authors\@empty

59 \let\shortauthors\@empty
60 \let\@ADL@knaht\@empty
61 \renewcommand\author{\@ifnextchar[{\@ADL@authorshort}{\@ADL@authorlong}}
62 \def\@ADL@authorshort[#1]#2{\ifx\@empty\authors
63 \gdef\shortauthors{#1}\gdef\authors{#2}%
64 \else\g@addto@macro\shortauthors{\and#1}%
65 \ifx\@empty\@ADL@knaht\g@addto@macro\authors{\protect\@ADL@titleand#2}\else%
66 \protected@edef\@ADL@nowthanks{\@ADL@knaht}%
67 \g@addto@custom\authors{\protect\@ADL@intthanks}{\@ADL@nowthanks}%
68 {\protect\@ADL@titleand#2}\fi\fi\let\@ADL@knaht\@empty}
69 \newcommand\@ADL@authorlong[1]{\ifx\@empty\authors
70 \gdef\shortauthors{#1}\gdef\authors{#1}%
71 \else\g@addto@macro\shortauthors{\and#1}%
72 \ifx\@empty\@ADL@knaht\g@addto@macro\authors{\protect\@ADL@titleand#1}\else%
73 \protected@edef\@ADL@nowthanks{\@ADL@knaht}%
74 \g@addto@custom\authors{\protect\@ADL@intthanks}{\@ADL@nowthanks}%
75 {\protect\@ADL@titleand#1}\fi\fi\let\@ADL@knaht\@empty}

The author’s title: “Professor Sir” or “Reverand Dr” for example.

76

77 \newcommand\authortitle{\@ifnextchar[{\@ADL@authortitlespace}
78 {\@ADL@authortitlenewline}}
79 \def\@ADL@authortitlespace[#1]#2{\ifx\@empty\authors%
80 \PackageError{adlart}{Specify author before author's title}\fi%
81 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{#2}\else%
82 \g@addto@macro\@ADL@knaht{#1#2}\fi}
83 \newcommand\@ADL@authortitlenewline[1]{\ifx\@empty\authors%
84 \PackageError{adlart}{Specify author before authortitle}\fi%
85 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{#1}\else%
86 \g@addto@macro\@ADL@knaht{\hfill\break#1}\fi}

Specification of author’s address.

87

88 \newcommand\address{\@ifnextchar[{\@ADL@addressspace}{\@ADL@addressnewline}}
89 \def\@ADL@addressspace[#1]#2{\ifx\@empty\authors%
90 \PackageError{adlart}{Specify author before address}\fi%
91 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{\textsc{#2}}\else%
92 \g@addto@macro\@ADL@knaht{#1\textsc{#2}}\fi}
93 \newcommand\@ADL@addressnewline[1]{\ifx\@empty\authors%
94 \PackageError{adlart}{Specify author before address}\fi%
95 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{\textsc{#1}}\else%
96 \g@addto@macro\@ADL@knaht{\hfill\break\textsc{#1}}\fi}

In case the author is visiting somewhere or something.

97

98 \newcommand\curraddr{\@ifnextchar[{\@ADL@curraddrspace}{\@ADL@curraddrnewline}}
99 \def\@ADL@curraddrspace[#1]#2{\ifx\@empty\authors%
100 \PackageError{adlart}{Specify author before current address}\fi%
101 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{Current Address:~\textsc{#2}}\else%
102 \g@addto@macro\@ADL@knaht{#1Current Address:~\textsc{#2}}\fi}
103 \newcommand\@ADL@curraddrnewline[1]{\ifx\@empty\authors%

104 \PackageError{adlart}{Specify author before current address}\fi%
105 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{Current Address:~\textsc{#1}}\else%
106 \g@addto@macro\@ADL@knaht{\hfill\break Current Address:~\textsc{#1}}\fi}

The email address. I follow Donald Knuth in omitting the “-” from email.

107

108 \newcommand\email{\@ifnextchar[{\@ADL@emailspace}{\@ADL@emailnewline}}
109 \def\@ADL@emailspace[#1]#2{\ifx\@empty\authors%
110 \PackageError{adlart}{Specify author before email address}\fi%
111 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{Email:~\texttt{#2}}\else%
112 \g@addto@macro\@ADL@knaht{#1Email:~\texttt{#2}}\fi}
113 \newcommand\@ADL@emailnewline[1]{\ifx\@empty\authors%
114 \PackageError{adlart}{Specify author before email address}\fi%
115 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{Email:~\texttt{#1}}\else%
116 \g@addto@macro\@ADL@knaht{\hfill\break Email:~\texttt{#1}}\fi}

The author’s URL if they have one.

117

118 \newcommand\webaddress{\@ifnextchar[{\@ADL@urlspace}{\@ADL@urlnewline}}
119 \def\@ADL@urlspace[#1]#2{\ifx\@empty\authors%
120 \PackageError{adlart}{Specify author before URL}\fi%
121 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{URL:~\texttt{#2}}\else%
122 \g@addto@macro\@ADL@knaht{#1URL:~\texttt{#2}}\fi}
123 \newcommand\@ADL@urlnewline[1]{\ifx\@empty\authors%
124 \PackageError{adlart}{Specify author before URL}\fi
125 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{URL:~\texttt{#1}}\else%
126 \g@addto@macro\@ADL@knaht{\hfill\break URL:~\texttt{#1}}\fi}

Funding for an author.

127

128 \newcommand\funding{\@ifnextchar[{\@ADL@fundingspace}{\@ADL@fundingnewline}}
129 \def\@ADL@fundingspace[#1]#2{\ifx\@empty\authors%
130 \PackageError{adlart}{Specify author before funding}\fi%
131 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{#2}\else%
132 \g@addto@macro\@ADL@knaht{#1#2}\fi}
133 \newcommand\@ADL@fundingnewline[1]{\ifx\@empty\authors%
134 \PackageError{adlart}{Specify author before funding}\fi%
135 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{#1}\else%
136 \g@addto@macro\@ADL@knaht{\hfill\break#1}\fi}

This is extra stuff for an author that might not be included in the above tags.

137

138 \let\@ADL@intthanks\thanks
139 \renewcommand\thanks{\@ifnextchar[{\@ADL@thanksspace}{\@ADL@thanksnewline}}
140 \def\@ADL@thanksspace[#1]#2{\ifx\@empty\authors%
141 \PackageError{adlart}{Specify author before thanks}\fi%
142 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{#2}\else%
143 \g@addto@macro\@ADL@knaht{#1#2}\fi}
144 \newcommand\@ADL@thanksnewline[1]{\ifx\@empty\authors%
145 \PackageError{adlart}{Specify author before thanks}\fi%
146 \ifx\@empty\@ADL@knaht\gdef\@ADL@knaht{#1}\else%
147 \g@addto@macro\@ADL@knaht{\hfill\break#1}\fi}

Dates and updates

148

149 \newcommand\update[1]{\def\@ADL@update{Last updated: #1}}
150 \let\@date\@empty\let\@ADL@update\@empty

This takes a list of authors and “andifies” it. That is, it adds “and” between the names. Apply it to the list of shortened author names.

151

152 \newcommand\andify{%
153 \nxandlist{\unskip, }{\unskip{} and~}{\unskip, and~}}
154 \newcommand\nxandlist[4]{%
155 \def\@andlistc##1{\toks@\@xp{\the\toks@##1}}%
156 \toks@{\toks@\@emptytoks \@ADL@andlista{{#1}{#2}{#3}}}%
157 \the\@xp\toks@#4\and\and
158 \edef#4{\the\toks@}%
159 \let\@ADL@andlistc\@iden}
160 \def\and{\unskip{ }and \ignorespaces}
161 \newcommand\xandlist[4]{\@ADL@andlista{{#1}{#2}{#3}}#4\and\and}
162 \def\@ADL@andlista#1#2\and#3\and{\@ADL@andlistc{#2}\@ifnotempty{#3}{%
163 \@ADL@andlistb#1{#3}}}
164 \def\@ADL@andlistb#1#2#3#4#5\and{%
165 \@ifempty{#5}{%
166  \@ADL@andlistc{#2#4}%
167 }{%
168  \@ADL@andlistc{#1#4}\@ADL@andlistb{#1}{#3}{#3}{#5}%

169 }}

170 \let\@ADL@andlistc\@iden
171 \ifx\@empty\shortauthors\else\andify\shortauthors\fi

This is to arrange authors’ names under the title.

172

173 \newcommand\@ADL@titleand{\end{tabular}\hskip 1em \@plus.17fil%
174 \begin{tabular}[t]{c}}

Define \maketitle. This is only changed, note, when no title page is specified.

175

176 \if@titlepage
177 \renewcommand\maketitle{\begin{titlepage}%
178 \let\footnotesize\small
179 \let\footnoterule\relax
180 \let \footnote \thanks
181 \null\vfil
182 \vskip 60\p@
183 %  \begin{center}%
184 %    {\LARGE \@title \par}%
185 %    \vskip 3em%
186 %    {\large
187 %     \lineskip .75em%
188 %      \begin{tabular}[t]{c}%
189 %        \@author
190 %      \end{tabular}\par}%

191 %      \vskip 1.5em%
192 %    {\large \@date \par}%       % Set date in \large size.
193 %  \end{center}\par
194 \begin{center}\let\footnote\@ADL@intthanks%
195  \ifx\@empty\@ADL@pubinfo\else\null\vskip0.5em\fi%
196  {\LARGE\bfseries\mathversion{bold}\@ifundefined{@ADL@titlenote}{\@title}%
197  {\@title\footnote{\@ADL@titlenote}}\par}%
198  \vskip3em\ifx\@empty\authors\else
199  {\large\begin{tabular}[t]{c}\ifx\@empty\@ADL@knaht\authors\else%
200  \authors\@ADL@intthanks{\@ADL@knaht}\fi\end{tabular}}\par\fi%
201  \ifx\@empty\@date\else\vskip0.7em{\large\@date}\fi
202  \ifx\@empty\@ADL@update\else\vskip0.1em{\large\@ADL@update}\fi
203 \end{center}
204 \@thanks
205 \vfil\null
206 \end{titlepage}%
207 \setcounter{footnote}{0}%
208 \let\@ADL@intthanks\relax
209 \let\maketitle\relax\let\@maketitle\relax
210 \gdef\@thanks{}\gdef\@author{}\gdef\@title{}

211 }

212 \else
213 \renewcommand\maketitle{\par
214 \begingroup
215  \renewcommand\thefootnote{\fnsymbol{footnote}}%
216  \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
217  \long\def\@makefntext##1{\parindent 1em\noindent
218  \hbox to0.8em{\hss$\m@th^{\@thefnmark}$}\hangindent.8em##1}%
219  \if@twocolumn
220  \ifnum \col@number=\@ne
221  \@maketitle
222  \else
223  \twocolumn[\@maketitle]%
224  \fi
225  \else
226  \newpage
227  \global\@topnum\z@   % Prevents figures from going at top of page.
228  \@maketitle
229  \fi
230  \ifx\@empty\@ADL@pubinfo\thispagestyle{plain}\else%
231  \thispagestyle{published}\fi\@thanks
232 \endgroup
233 \setcounter{footnote}{0}%
234 \let\@ADL@intthanks\relax
235 \let\maketitle\relax\let\@maketitle\relax
236 \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
237 \renewcommand\@maketitle{%
238 \begin{center}\let\footnote\@ADL@intthanks%
239  \ifx\@empty\@ADL@pubinfo\else\null\vskip0.5em\fi%
240  {\Large\bfseries\mathversion{bold}\@ifundefined{@ADL@titlenote}{\@title}%

241  {\@title\footnote{\@ADL@titlenote}}\par}%
242  \vskip0.7em\ifx\@empty\authors\else
243  \begin{tabular}[t]{c}\ifx\@empty\@ADL@knaht\authors\else%
244  \authors\@ADL@intthanks{\@ADL@knaht}\fi\end{tabular}\par\fi%
245  \ifx\@empty\@date\else\vskip0.7em\@date\fi
246  \ifx\@empty\@ADL@update\else\vskip0.1em\@ADL@update\fi
247 \end{center}\par\vskip0.7em}

The simplified title.

248

249 \newcommand\mymaketitle{\par
250 \begingroup
251  \renewcommand\thefootnote{\fnsymbol{footnote}}%
252  \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
253  \long\def\@makefntext##1{\parindent 1em\noindent
254  \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
255  \if@twocolumn
256  \ifnum \col@number=\@ne
257  \@ADL@mymaketitle
258  \else
259  \twocolumn[\@ADL@mymaketitle]%
260  \fi
261  \else
262  \newpage
263  \global\@topnum\z@   % Prevents figures from going at top of page.
264  \@ADL@mymaketitle
265  \fi
266  \thispagestyle{plain}\@thanks
267 \endgroup
268 \setcounter{footnote}{0}%
269 \let\@ADL@intthanks\relax
270 \let\mymaketitle\relax\let\@ADL@mymaketitle\relax
271 \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
272 \def\@ADL@mymaketitle{%
273 \newpage
274 \begin{center}%
275  {\LARGE \@title \par}%
276  \vskip 1.5em%
277  {\large
278  \lineskip .5em%
279  \begin{tabular}[t]{c}%
280  \authors
281  \end{tabular}\par}%
282  \vskip 1em%
283  {\large \@date}%
284 \end{center}%
285 \par
286 \vskip 1.5em}
287 \fi

Sectioning commands. Use centred section headers, and inline subsection headers. I also define the font handling for sections here. Note that math fonts are automatically bold in appropriate section headers.

288

289 \newcommand\secfont[1]{\gdef\@ADL@secfont{#1}}
290 \secfont{\bfseries\mathversion{bold}}
291 \ifnum\@ADL@squeeze=\@ne
292 \renewcommand\part{\@ADL@startcsection {part}{0}{\z@}%
293  {1.5ex \@plus 0.5ex \@minus .1ex}%
294  {1.3ex \@plus.1ex}%
295  {\normalfont\Large\@ADL@secfont}}
296 \def\partcolor{\@ADL@startcsection {part}{0}{\z@}%
297  {1.5ex \@plus 0.5ex \@minus .1ex}%
298  {1.3ex \@plus.1ex}%
299  {\normalfont\Large\@ADL@secfont\seccolor}}
300 \renewcommand\section{\@ADL@startcsection {section}{1}{\z@}%
301  {1.5ex \@plus 0.5ex \@minus .1ex}%
302  {1.3ex \@plus.1ex}%
303  {\normalfont\large\@ADL@secfont}}
304 \def\sectioncolor{\@ADL@startcsection {section}{1}{\z@}%
305  {1.5ex \@plus 0.5ex \@minus .1ex}%
306  {1.3ex \@plus.1ex}%
307  {\normalfont\large\@ADL@secfont\seccolor}}
308 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
309  {-1.25ex\@plus -0.4ex \@minus -.1ex}%
310  {-1.5ex \@plus .2ex}%
311  {\normalfont\normalsize\@ADL@secfont}}
312 \def\subsectioncolor{\@startsection{subsection}{2}{\z@}%
313  {-1.25ex\@plus -0.4ex \@minus -.1ex}%
314  {-1.5ex \@plus .2ex}%
315  {\normalfont\normalsize\@ADL@secfont\seccolor}}
316 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
317  {-1.25ex\@plus -0.4ex \@minus -.1ex}%
318  {-1.5ex \@plus .2ex}%
319  {\normalfont\normalsize\@ADL@secfont}}
320 \def\subsubsectioncolor{\@startsection{subsubsection}{3}{\z@}%
321  {-1.25ex\@plus -0.4ex \@minus -.1ex}%
322  {-1.5ex \@plus .2ex}%
323  {\normalfont\normalsize\@ADL@secfont\seccolor}}
324 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
325  {-1.25ex \@plus0.4ex \@minus .1ex}%
326  {0.5em}%
327  {\normalfont\normalsize\itshape}}
328 \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
329  {-1.25ex \@plus0.4ex \@minus .1ex}%
330  {0.5em}%
331  {\normalfont\normalsize\itshape}}
332 \else
333 \renewcommand\part{\@ADL@startcsection {part}{0}{\z@}%

334  {3.5ex \@plus 1ex \@minus .2ex}%
335  {2.3ex \@plus.2ex}%
336  {\normalfont\Large\@ADL@secfont}}
337 \def\partcolor{\@ADL@startcsection {part}{0}{\z@}%
338  {3.5ex \@plus 1ex \@minus .2ex}%
339  {2.3ex \@plus.2ex}%
340  {\normalfont\Large\@ADL@secfont\seccolor}}
341 \renewcommand\section{\@ADL@startcsection {section}{1}{\z@}%
342  {3.5ex \@plus 1ex \@minus .2ex}%
343  {2.3ex \@plus.2ex}%
344  {\normalfont\large\@ADL@secfont}}
345 \def\sectioncolor{\@ADL@startcsection {section}{1}{\z@}%
346  {3.5ex \@plus 1ex \@minus .2ex}%
347  {2.3ex \@plus.2ex}%
348  {\normalfont\large\@ADL@secfont\seccolor}}
349 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
350  {-3.25ex\@plus -1ex \@minus -.2ex}%
351  {-1.5ex \@plus .2ex}%
352  {\normalfont\normalsize\@ADL@secfont}}
353 \def\subsectioncolor{\@startsection{subsection}{2}{\z@}%
354  {-3.25ex\@plus -1ex \@minus -.2ex}%
355  {-1.5ex \@plus .2ex}%
356  {\normalfont\normalsize\@ADL@secfont\seccolor}}
357 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
358  {-3.25ex\@plus -1ex \@minus -.2ex}%
359  {-1.5ex \@plus .2ex}%
360  {\normalfont\normalsize\@ADL@secfont}}
361 \def\subsubsectioncolor{\@startsection{subsubsection}{3}{\z@}%
362  {-3.25ex\@plus -1ex \@minus -.2ex}%
363  {-1.5ex \@plus .2ex}%
364  {\normalfont\normalsize\@ADL@secfont\seccolor}}
365 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
366  {-3.25ex \@plus1ex \@minus .2ex}%
367  {0.5em}%
368  {\normalfont\normalsize\itshape}}
369 \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
370  {-3.25ex \@plus1ex \@minus .2ex}%
371  {0.5em}%
372  {\normalfont\normalsize\itshape}}
373 \fi

Put a period after the section numbers. No section numbers beyond subsections. I divide this up into two bits, one for my centering macros, and one a redefinition of the normal one.

374

375 \newcommand{\@ADL@seccntformat}[2]{\ifnum#2=0%
376 Part~\csname the#1\endcsname.\space\else\csname the#1\endcsname.\space\fi}
377 \renewcommand{\@seccntformat}[1]{\csname the#1\endcsname.\space}
378 \setcounter{secnumdepth}{2}
379 \let\partmark\@gobble

This is the centred section heading. It is a scam of the normal macros with the “obvious” modifications. It took me awhile to perfect this.

380

381 \def\@ADL@startcsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
382 \par \@tempskipa #4\relax
383 \@afterindenttrue
384 \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse\fi
385 \if@nobreak \everypar{}\else
386  \addpenalty{\@secpenalty}\addvspace{\@tempskipa}\fi \@ifstar
387  {\@ADL@scsect{#3}{#4}{#5}{#6}}
388  {\@dblarg{\@ADL@csect{#1}{#2}{#3}{#4}{#5}{#6}}}}
389 \def\@ADL@csect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
390  \def\@svsec\@empty\else
391  \refstepcounter{#1}
392  \protected@edef\@svsec{\@ADL@seccntformat{#1}{#2}\relax}%
393  \fi \@tempskipa #5\relax
394  \ifdim \@tempskipa>\z@
395  \begingroup #6\centering\relax
396  \hskip #3\relax\@svsec\interlinepenalty \@M #8\par%
397  \endgroup
398  \csname #1mark\endcsname{#7}\addcontentsline
399  {toc}{#1}{\ifnum #2>\c@secnumdepth \else
400  \protect\numberline{\csname the#1\endcsname.}\fi
401  #7}\else
402  \def\@svsechd{#6\hskip #3\relax \@svsec #8\csname #1mark\endcsname
403  {#7}\addcontentsline
404  {toc}{#1}{\ifnum #2>\c@secnumdepth \else
405  \protect\numberline{\csname the#1\endcsname.}\fi
406  #7}}\fi
407  \@ADL@xcsect{#5}}
408 \def\@ADL@xcsect#1{\@tempskipa #1\relax
409  \ifdim \@tempskipa>\z@
410  \par \nobreak
411  \vskip \@tempskipa
412  \@afterheading
413  \else \global\@nobreakfalse \global\@noskipsectrue
414  \everypar{\if@noskipsec \global\@noskipsecfalse
415  \clubpenalty\@M \hskip -\parindent
416  \begingroup \@svsechd \endgroup \unskip
417  \hskip -\@tempskipa
418  \else \clubpenalty \@clubpenalty
419  \everypar{}\fi}\fi\ignorespaces}
420 \def\@ADL@scsect#1#2#3#4#5{\@tempskipa #3\relax
421 \ifdim \@tempskipa>\z@
422  \begingroup
423  #4\centering\hskip #1\interlinepenalty \@M #5\par%
424  \endgroup
425 \else \def\@svsechd{#4\hskip #1\relax #5}\fi
426  \@xsect{#3}}

For inline section header, I like to put periods at the end of the section title. Rather than redefine the macros to do this, I save the regular macros with prefixes, then redefine them to put periods at the end. This way I will not have to make changes when the internal commands change.

427

428 \let\@ADL@intsubsection\subsection
429 \renewcommand\subsection{\@ifstar{\@ADL@intsubsectionstar}
430 {\@ADL@intsubsectionnostar}}
431 \newcommand\@ADL@intsubsectionstar{\@ifnextchar[{\@ADL@intsubsectionstaropt}
432 {\@ADL@intsubsectionstarnoopt}}
433 \def\@ADL@intsubsectionstaropt[#1]#2{\@intsubsection*[#1]{#2.}}
434 \newcommand\@ADL@intsubsectionstarnoopt[1]{\@ADL@intsubsection*{#1.}}
435 \newcommand\@ADL@intsubsectionnostar{\@ifnextchar[
436 {\@ADL@intsubsectionnostaropt}
437 {\@ADL@intsubsectionnostarnoopt}}
438 \def\@ADL@intsubsectionnostaropt[#1]#2{\@ADL@intsubsection[#1]{#2.}}
439 \newcommand\@ADL@intsubsectionnostarnoopt[1]{\@ADL@intsubsection{#1.}}

440

441 \let\@ADL@intsubsubsection\subsubsection
442 \renewcommand\subsubsection{\@ifstar{\@ADL@intsubsubsectionstar}
443 {\@ADL@intsubsubsectionnostar}}
444 \newcommand\@ADL@intsubsubsectionstar{\@ifnextchar[
445 {\@ADL@intsubsubsectionstaropt}
446 {\@ADL@intsubsubsectionstarnoopt}}
447 \def\@ADL@intsubsubsectionstaropt[#1]#2{\@ADL@intsubsubsection*[#1]{#2.}}
448 \newcommand\@ADL@intsubsubsectionstarnoopt[1]{\@ADL@intsubsubsection*{#1.}}
449 \newcommand\@ADL@intsubsubsectionnostar{\@ifnextchar[
450 {\@ADL@intsubsubsectionnostaropt}
451 {\@ADL@intsubsubsectionnostarnoopt}}
452 \def\@ADL@intsubsubsectionnostaropt[#1]#2{\@ADL@intsubsubsection[#1]{#2.}}
453 \newcommand\@ADL@intsubsubsectionnostarnoopt[1]{\@ADL@intsubsubsection{#1.}}
    keyword, AMS, and theshorttitle environments.

454

455 \if@titlepage\else
456 \newenvironment{keywords}{\quote\small\textbf{Keywords.}}{\endquote}
457 \newenvironment{AMS}{\quote\small\textbf{AMS Subject Classifications.}}
458 {\endquote}
459 \newenvironment{theshorttitle}{\quote\small\textbf{Short Title.}}{\endquote}
460 \fi

Headings for lists of tables and figures, plus mods to these (I think the only difference here is that I do not use \uppercase for the running heads.

461

462 \renewcommand\listfigurename{List of figures}
463 \renewcommand\listtablename{List of tables}
464 \renewcommand\tableofcontents{%
465  \section*{\contentsname
466  \@mkboth{%
467  \contentsname}{\contentsname}}%

468  \@starttoc{toc}%

469 }

470 \renewcommand\listoffigures{%
471  \section*{\listfigurename
472  \@mkboth{\listfigurename}%
473  {\listfigurename}}%
474  \@starttoc{lof}%

475 }

476 \renewcommand\listoftables{%
477  \section*{\listtablename
478  \@mkboth{%
479  \listtablename}{\listtablename}}%
480  \@starttoc{lot}%

481 }

Mods to the bibliography and index environments. Again, I strip the \uppercase, and I also make these \small.

482

483 \renewenvironment{thebibliography}[1]
484  {\section*{\refname
485  \@mkboth{\refname}{\refname}}%
486  \small%
487  \list{\@biblabel{\@arabic\c@enumiv}}%
488  {\settowidth\labelwidth{\@biblabel{#1}}%
489  \leftmargin\labelwidth
490  \advance\leftmargin\labelsep
491  \@openbib@code
492  \usecounter{enumiv}%
493  \let\p@enumiv\@empty
494  \renewcommand\theenumiv{\@arabic\c@enumiv}}%
495  \sloppy
496  \clubpenalty4000
497  \@clubpenalty \clubpenalty
498  \widowpenalty4000%
499  \sfcode`\.\@m}
500  {\def\@noitemerr
501  {\@latex@warning{Empty `thebibliography' environment}}%
502  \endlist}
503 \renewenvironment{theindex}
504  {\if@twocolumn
505  \@restonecolfalse
506  \else
507  \@restonecoltrue
508  \fi
509  \columnseprule \z@
510  \columnsep 35\p@
511  \twocolumn[\section*{\indexname}]%
512  \@mkboth{\indexname}%
513  {\indexname}%
514  \small%

515  \thispagestyle{plain}\parindent\z@
516  \parskip\z@ \@plus .3\p@\relax
517  \let\item\@idxitem}
518  {\if@restonecol\onecolumn\else\clearpage\fi}

Default equation numbers are “sectionnumber.equationnumber”.

519

520 \renewcommand\theequation{\thesection.\arabic{equation}}
521 \@addtoreset{equation}{section}

Add some extra compression for the squeeze option. This supposes you are using 10pt, I suppose.

522

523 \ifnum\@ADL@squeeze=\@ne
524 \abovedisplayskip=8pt plus 1pt minus 3pt
525 \belowdisplayskip=8pt plus 1pt minus 3pt
526 \def\@listi{\leftmargin\leftmargini
527  \parsep 2\p@ \@plus1\p@ \@minus0.5\p@
528  \topsep 2\p@ \@plus0.5\p@ \@minus0.5\p@
529  \itemsep2\p@ \@plus1\p@ \@minus0.5\p@}
530 \let\@listI\@listi
531 \@listi
532 \fi

533 %

534 % I use the date format ``1 January 1998'' or 01/01/1998.

535 %

536 %    \begin{macrocode}

537

538 \ifnum\@ADL@numdate=\@ne
539 \renewcommand\today{\twodigit\day/\twodigit\month/\number\year}
540 \newcommand\twodigit[1]{\ifnum\number#1<10\mbox{0\number#1}\else\number#1\fi}
541 \else
542 \renewcommand\today{\number\day\space\ifcase\month\or January\or February\or
543 March\or April\or May\or June\or July\or August\or September\or October\or
544 November\or December\fi\space \number\year}
545 \fi

This makes my marginal comments. They are tiny typewriter fonts guys.

546 \newcommand\margin[1]{\marginpar{\tiny\ttfamily#1}}

547

Hacks to the san serif font so I don’t get annoying font family warnings for the italic shape.

548 \DeclareFontShape{OT1}{cmss}{m}{it}

549 {

550  <5><6><7><8>cmssi8 <9> cmssi9
551  <10><10.95>cmssi10
552  <12><14.4>cmssi12
553  <17.28><20.74><24.88>cmssi17
554  }{}
555 \DeclareFontShape{OT1}{cmss}{bx}{it}

556 {

557  <5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmssbx10
558  }{}

559

560 ⟨/adlart⟩

4.2 authorinfo.sty

This is pretty simple — just use the authors’ macros defined above.

561 ⟨∗authorinfo⟩

562

563 \newcommand\You{%
564 \author[Y.~Name]{Your Name}
565 \authortitle{Your title}
566 \address[,\space]{Your address}
567 \email{your.username@your.machine}
568 \webaddress[,\quad]{http://your.machine/\textasciitilde{}your.username/}

569 }

570

571 \newcommand\PLato{%
572 \author[P.~Lato]{Paul Lato}
573 \authortitle{Generally Wise Fellow}
574 \address[,\space]{The Academy, Athens, Greece}
575 \curraddr{Resting Place for Dead Philosophers}
576 \email{follower@socrates.org}
577 \webaddress[,\quad]{http://academy.org/\textasciitilde{}plato/}
578 \funding{Research supported in part by GPF grant number PHIL-1.}

579 }

580

581 ⟨/authorinfo⟩