summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/IEEEconf/IEEEconf.dtx
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/IEEEconf/IEEEconf.dtx
Initial commit
Diffstat (limited to 'macros/latex/contrib/IEEEconf/IEEEconf.dtx')
-rw-r--r--macros/latex/contrib/IEEEconf/IEEEconf.dtx1083
1 files changed, 1083 insertions, 0 deletions
diff --git a/macros/latex/contrib/IEEEconf/IEEEconf.dtx b/macros/latex/contrib/IEEEconf/IEEEconf.dtx
new file mode 100644
index 0000000000..c70b2e2981
--- /dev/null
+++ b/macros/latex/contrib/IEEEconf/IEEEconf.dtx
@@ -0,0 +1,1083 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2009 by Scott Pakin <scott+iecnf@pakin.org>
+% ---------------------------------------------------------
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, either version 1.3c of this license
+% or (at your option) any later version. The latest version of this
+% license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2006/05/20 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{IEEEconf.dtx}
+%</driver>
+%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<class>\ProvidesClass{IEEEconf}
+%<*class>
+ [2009/04/05 v1.4 IEEE Computer Society 8.5x11" conference proceedings]
+%</class>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{textcomp}
+\usepackage{needspace}
+\usepackage[hyperindex=false,bookmarksopen=true]{hyperref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{IEEEconf.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{360}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \changes{v1.0}{2004/01/14}{Initial version}
+% \changes{v1.0a}{2004/09/18}{Clarified the documentation as per Ming
+% Kin Lai's suggestions}
+% \changes{v1.3}{2005/08/28}{Added a paragraph about formatting
+% reference lists as per Rennie deGraaf's suggestion}
+%
+% \GetFileInfo{IEEEconf.dtx}
+%
+% \DoNotIndex{\.,\@arabic,\@beginparpenalty,\@clubpenalty,\@empty}
+% \DoNotIndex{\@endparpenalty,\@gobble,\@lowpenalty,\@M,\@m,\@minipagefalse}
+% \DoNotIndex{\@mkboth,\@noitemerr,\@openbib@code,\@plus,\@tempboxa}
+% \DoNotIndex{\advance,\baselineskip,\begin,\bfseries,\box,\c@enumiv}
+% \DoNotIndex{\centering,\clubpenalty,\crcr,\CurrentOption,\def,\else}
+% \DoNotIndex{\end,\endieee@thebibitemlist,\endlist,\endquotation}
+% \DoNotIndex{\endthebibitemlist,\endtitlepage,\fi,\fontsize,\footnote}
+% \DoNotIndex{\global,\hb@xt@,\hfil,\hsize,\hskip,\ifdim,\ifx,\itshape,\let}
+% \DoNotIndex{\list,\long,\mdseries,\newcommand,\newenvironment,\newif}
+% \DoNotIndex{\newlength,\newpage,\next,\null,\p@enumiv,\par,\ProcessOptions}
+% \DoNotIndex{\quotation,\refname,\relax,\renewcommand,\renewenvironment}
+% \DoNotIndex{\rmfamily,\rule,\sbox,\setlength,\settowidth,\sfcode}
+% \DoNotIndex{\sffamily,\sloppy,\small,\upshape,\usecounter,\vfil,\vskip}
+% \DoNotIndex{\vspace,\wd,\widowpenalty,\z@}
+%
+% ^^A Define a macro for indexing package names.
+% \DeclareRobustCommand{\indexpkgname}[1]{^^A
+% \index{#1\actualchar\textsf{#1} (package)\encapchar usage}^^A
+% \index{packages:\levelchar#1\actualchar\textsf{#1}\encapchar usage}^^A
+% }
+%
+% ^^A Define a macro for typesetting and indexing package names.
+% \DeclareRobustCommand{\pkgname}[1]{^^A
+% \textsf{#1}^^A
+% \indexpkgname{#1}^^A
+% }
+%
+% ^^A Define a macro for typesetting "IEEEconf" and one for typesetting
+% ^^A "IEEE Computer Society Press".
+% \newcommand{\iecnf}{\pkgname{IEEEconf}}
+% \newcommand{\ICSP}{IEEE Computer Society Press}
+%
+% \title{The \iecnf{} class\thanks{This document
+% corresponds to \iecnf{}~\fileversion, dated \filedate.}}
+% \author{Scott Pakin \\
+% \href{mailto:scott+iecnf@pakin.org}{\texttt{scott+iecnf@pakin.org}}}
+%
+% \hypersetup{^^A
+% pdftitle={The IEEEconf class},
+% pdfauthor={Scott Pakin <scott+iecnf@pakin.org>},
+% pdfsubject={Format papers for IEEE Computer Society Press conference
+% proceedings},
+% pdfkeywords={conference proceedings, formatting requirements, IEEE
+% Computer Society Press}
+% }
+%
+% \maketitle
+%
+% \section{Introduction}
+%
+% The \iecnf{} class implements the formatting dictated by the \ICSP{}
+% for conference proceedings. |IEEEconf.cls| replaces |latex8.sty| and
+% is compatible with any \BibTeX{} style, not just |latex8.bst|. The
+% goal was to produce a more faithful implementation of the formatting
+% rules and to do so with cleaner \LaTeX{} code than that provided by
+% the |latex8.*| files:
+%
+% \begin{itemize}
+% \item \iecnf{} is written as a class, which makes more sense than
+% implementing it as a style file.
+%
+% \item \iecnf{} uses the \pkgname{titlesec} package to redefine
+% |\section|, |\subsection|, and |\subsubsection| as dictated by the
+% guidelines. \pkgname{latex8} requires that authors use
+% |\Section|, which internally calls |\section| then backspaces to
+% add the required period after the section number. Yuck! By using
+% proper sectioning, \iecnf{} is compatible with the
+% \pkgname{hyperref} package. (Examine the PDF bookmarks produced
+% when using \pkgname{latex8} with \pkgname{hyperref}.)
+%
+% \item \iecnf{} changes bibliography formatting by redefining the
+% |thebibliography| environment instead of by requiring the author to
+% use a particular \BibTeX{} style file.
+%
+% \item \iecnf{} selects fonts using the \LaTeXe{} font commands
+% instead of \TeX{} primitives. This lets an author redefine
+% |\rmdefault|, |\sfdefault|, and |\ttdefault| and have those changes
+% honored by \iecnf.
+%
+% \item \iecnf{} uses the \pkgname{geometry} package to construct the
+% page layout rather than setting \LaTeX{} registers directly.
+% \end{itemize}
+%
+% Note that \iecnf{} is intended specifically for preparing manuscripts
+% for \ICSP{} conference proceedings. Most other IEEE
+% publications---including other IEEE conference proceedings---specify
+% different formatting requirements. Unless you were instructed
+% explicitly to follow \ICSP's conference-proceedings guidelines, you
+% may find the \pkgname{IEEEtran} package more appropriate than \iecnf.
+%
+% \paragraph{Caveats} First, as of this writing, \iecnf{} has been neither
+% validated nor endorsed by the \ICSP{}\@. Second, some of the \ICSP's
+% guidelines are outside of \iecnf's scope. See
+% Section~\ref{sec:limitations} for details. Third, the \ICSP{}
+% occasionally changes their guidelines; \iecnf~\fileversion{}
+% implements the guidelines that were current on~2007/01/15. In fact,
+% the \ICSP{} Web site provides two sets of guidelines:
+%
+% \begin{itemize}
+% \item
+% \url{ftp://pubftp.computer.org/press/outgoing/proceedings/instruct8.5x11.pdf}.
+% \iecnf{} relies on this document for its primary set of
+% guidelines.
+%
+% \item
+% \url{http://www.computer.org/portal/site/ieeecs/index.jsp?pageID=ieeecs_level1&path=ieeecs/publications/cps&file=cps_forms.xml&xsl=generic.xsl}.
+% This Web page contains almost the same contents as the preceding
+% PDF file except that the ``Footnotes'' section has nothing to do
+% with footnotes but rather with column formatting. Footnote
+% guidance is taken from the other set of guidelines.
+%
+% \item
+% \url{ftp://pubftp.computer.org/press/outgoing/proceedings/INSTRUCT.HTM}
+% and
+% \url{ftp://pubftp.computer.org/press/outgoing/proceedings/instruct.txt}.
+% This document provides guidance on footnote formatting. However,
+% it contradicts the previous documents by specifying that paragraphs
+% be indented by 1~pica while the preceding document says to indent
+% paragraphs by 1/4~inch (1.5~picas). It limits the abstract to
+% 3~inches (7.62\,cm) while the previous document dictates a
+% 150-word limit. \iecnf{} follows the previous document in the
+% case of any conflict.
+%
+% This document contains an additional section about illustrations
+% that says not to use color figures unless instructed to do so and
+% presents a few prehistoric guidelines about penciling in page
+% numbers and how to use rub-on symbols.
+% \end{itemize}
+%
+% Pages on the IEEE Computer Society Web site are frequently moved
+% and/or renamed. You may need to search a bit to find the latest
+% versions of the documents described above.
+%
+%
+% \section{Usage}
+%
+% Unlike \pkgname{latex8}, \iecnf\ is a proper \LaTeXe\ class. Also
+% unlike \pkgname{latex8}, it automatically loads the packages it needs
+% and sets all of the correct formatting options by default.
+%
+% \subsection{Class options}
+%
+% \DescribeMacro{\documentclass}
+% Begin your document by loading the \iecnf{} class:
+%
+% \begin{verbatim}
+% \documentclass{IEEEconf}
+% \end{verbatim}
+%
+% \noindent
+% Although \iecnf\ is derived from \textsf{article} and accepts the
+% same class options, you should not, in general, pass any extra options
+% to |\documentclass|. \iecnf\ will automatically set two-column mode
+% and a 10\,pt.\ Times Roman font. \iecnf\ honors the user's default
+% paper size because the \ICSP\ now allows both U.S.~Letter- and
+% A4-sized paper. The default paper size can be overridden by the
+% |letterpaper| or |a4paper| class options if a conference dictates a
+% particular paper size.
+%
+% \iecnf\ introduces one class option of its own: |latex8|. The
+% |latex8| option instructs \iecnf\ to violate the \ICSP\ guidelines in
+% the same manner that the \pkgname{latex8} package provided by the
+% \ICSP\ violates them. The advantage of using the |latex8| option is
+% that \pkgname{latex8}'s incorrect formatting provides a larger text
+% block (27\,pt.\ wider) than the guidelines allow. Hence, if you need
+% to squeeze a little extra text into your paper, the |latex8| option
+% lets you do that without violating the rules any more than the
+% \pkgname{latex8} package does.
+%
+%
+% \subsection{User commands}
+%
+% \DescribeMacro{\title}
+% The |\title| command behaves identically to the one in the
+% \textsf{article} class. Just remember to follow what the guidelines
+% say about capitalization of words in the title.
+%
+% \DescribeMacro{\author}
+% \DescribeEnv{affiliation}
+% \DescribeMacro{\email}
+% The guidelines specify different formatting for an author's name and
+% for an author's affiliation and e-mail address. For convenience,
+% \iecnf\ provides an |affiliation| environment for
+% typesetting affiliations and an |\email| macro for typesetting e-mail
+% addresses. The following examples show how to format an author list:
+%
+% \begin{verbatim}
+% % Individual author
+% \author{%
+% Amy Author \\
+% \begin{affiliation}
+% Fancy Text Processing Department \\
+% University of Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch
+% \end{affiliation} \\
+% \email{author@llanfairPG.ac.uk}
+% }
+% \end{verbatim}
+%
+% \begin{verbatim}
+% % Multiple authors
+% \author{%
+% Ray Writer \\
+% \begin{affiliation}
+% International Giant Mega-Corporation, Inc.
+% \end{affiliation} \\
+% \email{writer@giantmegaco.com}
+% \and
+% Kim Composer \\
+% \begin{affiliation}
+% Department of Reading, 'Riting, and 'Rithmetic
+% \LaTeX{} State University
+% \end{affiliation} \\
+% \email{composer@latexstate.edu}
+% }
+% \end{verbatim}
+%
+% There is not currently any special support in \iecnf\ for typesetting
+% multiple affiliations per author.
+%
+% \DescribeMacro{\date}
+% The date macro is implemented but doesn't actually typeset anything.
+%
+% \DescribeMacro{\callout}
+% A \emph{callout} is a piece of text referring to a figure or table.
+% When the \ICSP\ re-typesets a document they supposedly want the ``See
+% Figure\dots'' and ``See Table\dots'' text to stand out to help the
+% typesetter ensure that figures and tables are placed as close as
+% possible to their references. The |\callout| macro simply typesets
+% its argument in 9-point Helvetica as per the guidelines and is
+% typically used as follows: ``\texttt{For details, see}
+% |\callout{Figure~\ref{myfigure}}|''. My understanding is that
+% |\callout| should be used only when a paper will be re-typeset and not
+% when producing camera-ready copy.
+%
+% \DescribeMacro{\dobeforekey}
+% The \ICSP\ guidelines say, ``If the last page of your paper is only
+% partially filled, arrange the columns so that they are evenly balanced
+% if possible, rather than having one long column.'' While the
+% \pkgname{balance} and \pkgname{multicol} packages may help, this is a
+% fairly tricky requirement in the general case for \LaTeXe\@. Because
+% the last page of a conference paper typically contains only
+% references, \iecnf\ provides a simple command, |\dobeforekey|, to help
+% with that specific case. |\dobeforekey| takes two arguments: a
+% bibliography key (i.e.,~a string passed to the |\cite| command) and a
+% command to execute before typesetting the corresponding bibliography
+% entry. When preparing the final version of your paper, put
+% ``|\dobeforekey{|\meta{key}|}{\newpage}|'' anywhere before the
+% |\bibliography| command and use trial-and-error to find the key that
+% best balances the columns on the last page of the paper.
+%
+% \paragraph{Reference lists}
+% The \ICSP\ provides little guidance about typesetting reference
+% lists. Apparently, the author is granted some flexibility. \iecnf{}
+% uses the specified font but leaves the rest of the formatting
+% decisions to the author's chosen bibliography style. As the \ICSP's
+% two sample references both use abbreviated author names, it's probably
+% best to use |\bibliographystyle{abbrv}| when including a \BibTeX{}
+% bibliography.\footnote{\texttt{latex8.bst} is in fact identical to
+% \texttt{abbrv.bst} except that it injects
+% ``\texttt{\cs{setlength}\linebreak[0]\string{\cs{itemsep}\string}\linebreak[0]\string{-1ex\string}\linebreak[0]\cs{small}}''
+% into its generated \texttt{thebibliography} environment.} \iecnf{}
+% also supports the |\thebibliography| environment for authors who
+% prefer to typeset their reference lists manually.
+%
+% \DescribeMacro{\extrareflistcode}
+% Previous versions of the \ICSP\ guidelines stated that bibliographic
+% references must be single-spaced, and that's how \iecnf\ formats the
+% list of references. The current guidelines say nothing about
+% inter-reference spacing but their two sample references are in fact
+% separated by a blank line. To provide the author with both
+% alternatives, \iecnf\ provides a ``hook'' macro called
+% |\extrareflistcode| that enables one to alter the line spacing---or
+% any other aspect of reference-list spacing.
+%
+% As in most \LaTeXe\ classes, references are typeset within a \LaTeX{}
+% |list| environment. The |\extrareflistcode| macro specifies extra
+% code to execute as part of the second argument to |\begin{list}| when
+% typesetting the document's References section. |\extrareflistcode| is
+% initially empty but can be redefined by the author with
+% |\renewcommand|. For example, the following code instructs \iecnf{}
+% to insert a blank line between entries in the references list:
+%
+% \begin{verbatim}
+% \renewcommand{\extrareflistcode}{\setlength{\itemsep}{\baselineskip}}
+% \end{verbatim}
+%
+%
+% \section{Limitations}
+% \label{sec:limitations}
+%
+% There are some requirements in the Computer Society's guidelines that
+% \iecnf\ is unable to enforce:
+%
+% \begin{itemize}
+% \item ``All manuscripts must be in English.''
+%
+% \item ``Capitalize the first letter of nouns, pronouns, verbs,
+% adjectives, and adverbs; do not capitalize articles, coordinate
+% conjunctions, or prepositions (unless the title begins with such a
+% word).''
+%
+% \item ``Avoid the use of academic degrees and society affiliations.''
+%
+% \item ``Avoid using bit-mapped fonts if possible. True--Type~1
+% fonts are preferred.''
+%
+% \item ``Use footnotes sparingly (or not at all!)''. The guidelines
+% do specify how to format footnotes if you're desperate and \iecnf{}
+% honors the those requirements.
+%
+% \item ``Where appropriate, include the name(s) of editors of
+% referenced books.''
+% \end{itemize}
+%
+% \noindent
+% Furthermore, there are also some requirements the \iecnf{}
+% does not currently implement:
+%
+% \begin{itemize}
+% \item ``The abstract is to be\dots up to 150~words in length.''
+% \iecnf\ currently allows abstracts of any length.
+%
+% \item In the author list, ``[m]ultiple authors may be shown in a
+% two- or three-column format''. Like \textsf{article}, \iecnf{}
+% packs as many authors as possible onto a line.
+%
+% \item ``Initially capitalize only the first word of each figure
+% caption and table title~\dots\ Figure captions are to be centered
+% below the figures. Table titles are to be centered above the
+% tables.'' Consider using the \pkgname{topcapt} package to help with
+% this captioning requirement.
+%
+% \item ``If the last page of your paper is only partially filled,
+% arrange the columns so that they are evenly balanced if possible,
+% rather than having one long column.'' Consider using either
+% \iecnf's |\doafterkey| macro or the \pkgname{balance} package to
+% help with this formatting requirement.
+% \end{itemize}
+%
+% \noindent
+% Some of the above shortcomings may be fixed in a future release of
+% \iecnf\ if I figure out a good way to do so.
+%
+% Also note that currently, only $8\mbox{\textonehalf} \times 11''$
+% proceedings are supported, not $6 \times 9''$ proceedings.
+%
+%
+% \StopEventually{%
+% \section{License}
+%
+% Copyright \textcopyright\ 2009 by Scott Pakin
+%
+% \bigskip
+%
+% This file may be distributed and/or modified under the conditions of
+% the \LaTeX\ Project Public License, either version~1.3c of this
+% license or (at your option) any later version. The latest version of
+% this license is in:
+%
+% \begin{center}
+% \texttt{http://www.latex-project.org/lppl.txt}
+% \end{center}
+%
+% \noindent
+% and version~1.3c or later is part of all distributions of \LaTeX{}
+% version 2006/05/20 or later.
+%
+% \needspace{3cm}
+% \phantomsection
+% \addcontentsline{toc}{section}{Change History}
+% \PrintChanges
+%
+% \needspace{3cm}
+% \phantomsection
+% \addcontentsline{toc}{section}{Index}
+% \PrintIndex
+% }
+%
+%
+% \section{Implementation}
+%
+% This section contains the complete source code to \iecnf.
+% If you're not a \LaTeX\ hacker you probably won't find it
+% particularly interesting or useful. However, if you're comfortable
+% reading \TeX\ and \LaTeX\ code, you can see exactly what
+% \iecnf\ is doing and how.
+%
+% \subsection{Initialization}
+%
+% \changes{v1.4}{2009/03/21}{Introduced a \texttt{onecolumn} class option
+% in case a document needs to use the \pkgname{multicol} package}
+% \begin{macro}{\ieee@column@spec}
+% The guidelines require that all text be in a two-column format.
+% However, there may be some special cases in which a single-column
+% format is desirable, for example if the \pkgname{multicol} package is
+% needed anywhere in the document. We therefore provide a |onecolumn|
+% option to suppress the default two-column formatting.
+% \begin{macrocode}
+\def\ieee@column@spec{twocolumn}
+\DeclareOption{onecolumn}{\def\ieee@column@spec{onecolumn}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\if@ieee@correct@geometry@}
+% \begin{macro}{\@ieee@correct@geometry@true}
+% \begin{macro}{\@ieee@correct@geometry@false}
+% \iecnf\ lays out the page geometry according to the \ICSP\ guidelines.
+% However, as \iecnf\ is not yet recognized by the IEEE Computer
+% Society, virtually all IEEE Computer Society conferences point authors
+% wanting to use \LaTeX\ to the old, broken \pkgname{latex8} package,
+% which fails to honor the \ICSP's formatting guidelines. However,
+% because of its incorrectness, \pkgname{latex8} actually gives authors
+% a little more space for text. \iecnf\ therefore provides a |latex8|
+% option to give authors the extra space provided by the
+% \pkgname{latex8} package without sacrificing compatibility with other
+% \LaTeXe\ packages and flexibility as would using the \pkgname{latex8}
+% package directly.
+% \begin{macrocode}
+\newif\if@ieee@correct@geometry@
+\@ieee@correct@geometry@true
+\DeclareOption{latex8}{\@ieee@correct@geometry@false}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% For simplicity, we'll derive everything from the standard |article|
+% class but force the |10pt| and, unless overridden, |twocolumn| options.
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\PassOptionsToClass{\ieee@column@spec,10pt}{article}
+\LoadClass{article}
+% \end{macrocode}
+%
+% \begin{macro}{\ieee@old@maketitle}
+% \begin{macro}{\maketitle}
+% The guidelines say not to paginate.
+% \begin{macrocode}
+\let\ieee@old@maketitle=\maketitle
+\renewcommand{\maketitle}{%
+ \ieee@old@maketitle
+ \thispagestyle{empty}%
+}
+\pagestyle{empty}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% ``All paragraphs should be indented 1/4~inch (approximately 0.5\,cm).''
+% \changes{v1.3}{2005/08/28}{Updated the paragraph indentation to match
+% the new \ICSP\ specifications.}
+% \begin{macrocode}
+\setlength{\parindent}{0.25in}
+% \end{macrocode}
+%
+%
+% \subsection{Page layout}
+%
+% Define the page layout as per the following instructions:
+%
+% \begin{quotation}
+% All printed material, including text, illustrations, and charts,
+% must be kept within a print area of 6-1/2 inches (16.51\,cm) wide by
+% 8-7/8 inches (22.51\,cm) high. Do not write or print anything
+% outside the print area. All \emph{text} must be in a two-column
+% format. Columns are to be 3-1/16 inches (7.85\,cm) wide, with a
+% 3/8~inch (0.81\,cm) space between them. Text must be fully
+% justified.
+% \end{quotation}
+%
+% \noindent
+% We set the top margin to 1~inch and let the bottom margin define
+% itself based on the top margin and the text height as per the
+% following instructions:
+%
+% \begin{quotation}
+% The second and following pages should begin 1.0~inch (2.54\,cm) from
+% the top edge. On all pages, the bottom margin should be
+% \mbox{1-1/8~inches} (2.86\,cm) from the bottom edge of the page for
+% \mbox{8.5~$\times$~11-inch} paper; for A4~paper, approximately
+% \mbox{1-5/8~inches} (4.13\,cm) from the bottom edge of the page.
+% \end{quotation}
+% \changes{v1.3}{2005/08/28}{Updated the page layout to match the new
+% \ICSP\ specifications.}
+% \changes{v1.4}{2009/03/21}{Introduced a \texttt{latex8} class option
+% as per Oliver Kopp's suggestion}
+% \begin{macrocode}
+\if@ieee@correct@geometry@
+ \RequirePackage[%
+ noheadfoot,
+ textwidth=6.5in,
+ textheight=8.875in,
+ tmargin=1in
+ ]{geometry}
+ \setlength{\columnsep}{0.375in}
+\else
+% \end{macrocode}
+% The following was copied verbatim from |latex8.sty|:
+% \begin{macrocode}
+ \setlength{\textheight}{8.875in}
+ \setlength{\textwidth}{6.875in}
+ \setlength{\columnsep}{0.3125in}
+ \setlength{\topmargin}{0in}
+ \setlength{\headheight}{0in}
+ \setlength{\headsep}{0in}
+ \setlength{\parindent}{1pc}
+ \setlength{\oddsidemargin}{-.304in}
+ \setlength{\evensidemargin}{-.304in}
+\fi
+% \end{macrocode}
+%
+%
+% \subsection{Font selection}
+%
+% The guidelines specify Times (or similar) as the default font and
+% Helvetica as the sans-serif font. While we're at it, we specify
+% Courier as the fixed-width font.
+% \indexpkgname{mathptmx}\indexpkgname{helvet}\indexpkgname{courier}
+% \begin{macrocode}
+\RequirePackage{mathptmx}
+\RequirePackage{helvet}
+\RequirePackage{courier}
+% \end{macrocode}
+%
+% Next, we define commands to set the fonts we'll need later in this
+% file.
+%
+% \begin{macro}{\ieee@times@xiv@bold}
+% Set Times 14\,pt.\ bold.
+% \begin{macrocode}
+\newcommand{\ieee@times@xiv@bold}{%
+ \rmfamily\bfseries\upshape\fontsize{14}{16}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@times@xii@bold}
+% Set Times 12\,pt.\ bold.
+% \begin{macrocode}
+\newcommand{\ieee@times@xii@bold}{%
+ \rmfamily\bfseries\upshape\fontsize{12}{14}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@times@xi@bold}
+% Set Times 11\,pt.\ bold.
+% \begin{macrocode}
+\newcommand{\ieee@times@xi@bold}{%
+ \rmfamily\bfseries\upshape\fontsize{11}{13}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@times@x@bold}
+% Set Times 10\,pt.\ bold.
+% \begin{macrocode}
+\newcommand{\ieee@times@x@bold}{%
+ \rmfamily\bfseries\upshape\fontsize{10}{12}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@times@xii@roman}
+% Set Times 12\,pt.\ roman.
+% \begin{macrocode}
+\newcommand{\ieee@times@xii@roman}{%
+ \rmfamily\mdseries\upshape\fontsize{12}{14}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@times@xii@italic}
+% Set Times 12\,pt.\ italic.
+% \begin{macrocode}
+\newcommand{\ieee@times@xii@italic}{%
+ \rmfamily\mdseries\itshape\fontsize{12}{14}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@times@ix@roman}
+% Set Times 9\,pt.\ roman.
+% \begin{macrocode}
+\newcommand{\ieee@times@ix@roman}{%
+ \rmfamily\mdseries\upshape\fontsize{9}{11}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@helv@ix@roman}
+% Set Helvetica 9\,pt.\ roman.
+% \begin{macrocode}
+\newcommand{\ieee@helv@ix@roman}{%
+ \sffamily\mdseries\upshape\fontsize{9}{11}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@helv@x@bold}
+% Set Helvetica 10\,pt.\ bold.
+% \changes{v1.1}{2005/02/12}{Converted figure/table captions from roman
+% to boldface. Thanks to Thomas J. Hacker for pointing out the
+% formatting violation.}
+% \begin{macrocode}
+\newcommand{\ieee@helv@x@bold}{%
+ \sffamily\bfseries\upshape\fontsize{10}{12}\selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Title formatting}
+%
+% We use the \pkgname{array} package to help center the text within
+% |tabular| ``|p|'' columns.
+% \begin{macrocode}
+\RequirePackage{array}
+% \end{macrocode}
+%
+% \begin{macro}{\ieee@author@width}
+% |\@maketitle| sets this \meta{dimen} to the width of the widest author
+% block.
+% \begin{macrocode}
+\newlength{\ieee@author@width}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\and}
+% Redefine the |\and| macro used in titles to force some blank space
+% above each author block. (Other than the |\rule| line, this version
+% of |\and| is identical to the one in |ltsect.dtx|.)
+% \changes{v1.2}{2005/03/26}{Introduced this macro in order to insert
+% blank space between author blocks.}
+% \begin{macrocode}
+\def\and{%
+ \end{tabular}%
+ \hskip 1em \@plus 0.17fil%
+ \rule{0pt}{1.5\baselineskip}%
+ \begin{tabular}[t]{@{}>{\centering}p{\ieee@author@width}@{}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@maketitle}
+% The guidelines say that the ``title (on the first page) should begin
+% 1-3/8 inches (3.49~cm) from the top edge of the page, centered, and in
+% Times 14-point, boldface type\dots Leave two blank lines after the title.''
+% \changes{v1.3b}{2007/01/15}{Corrected the spacing between lines of multiline
+% titles.}
+% \begin{macrocode}
+\def\@maketitle{%
+ \newpage
+ \null
+ \vskip 0.375in%
+ \begin{center}%
+ \let\footnote=\thanks
+ {\ieee@times@xiv@bold\@title\par}%
+ \vskip 24pt
+ \ieee@times@xii@roman
+% \end{macrocode}
+% Set |\ieee@author@width| to the width of the widest author block.
+% \changes{v1.2}{2005/03/26}{Modified to place author blocks in a more
+% aesthetic manner. Thanks to Joey Lawrance for drawing my attention
+% to the unusual-looking formatting used in the previous version of
+% \iecnf.}
+% \begin{macrocode}
+ \settowidth{\ieee@author@width}{%
+ \let\and=\crcr
+% \end{macrocode}
+% We temporarily let-bind both |\thanks| and |\footnote| to |\@gobble|.
+% If we didn't, \iecnf\ would output each footnote twice: once when
+% calculating the width of the author blocks and once when typesetting
+% them. Note that we use |\@gobble| instead of, say, |\footnotemark|
+% because |\@ieee@old@maketitle| (a.k.a.\ the \pkgname{article} class's
+% |\maketitle| macro) places footnote markers within an |\rlap| so they
+% occupy no horizontal space.
+% \changes{v1.2a}{2005/05/20}{Fixed a bug that caused
+% \texttt{\string\string\string\thanks} and
+% \texttt{\string\string\string\footnote} to produce duplicate
+% footnotes. Thanks to M. Rasit Eskicioglu for reporting the
+% duplicate-footnote problem.}
+% \begin{macrocode}
+ \let\thanks=\@gobble
+ \let\footnote=\@gobble
+ \begin{tabular}[t]{@{}c@{}}%
+ \@author
+ \end{tabular}%
+ }%
+% \end{macrocode}
+% Typeset all author blocks with columns exactly of width
+% |\ieee@author@width|.
+% \begin{macrocode}
+ \begin{tabular}[t]{@{}>{\hfil}p{\ieee@author@width}<{\hfil}@{}}%
+ \@author
+ \end{tabular}%
+ \end{center}%
+% \end{macrocode}
+% ``Author information should be followed by two 12-point blank lines.''
+% The old, broken \pkgname{latex8} package incorrectly follows the
+% author information with only \emph{one} 12-point blank line, so we do
+% likewise when the |latex8| package option is specified.
+% \changes{v1.4}{2009/03/22}{Corrected the spacing between the title block
+% and the document text}
+% \begin{macrocode}
+ \if@ieee@correct@geometry@
+ \vskip -\baselineskip
+ \vskip 24pt%
+ \else
+ \vspace*{0.5em}%
+ \vspace*{12pt}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{affiliation}
+% Affiliations are supposed to be in Times~12\,pt.\ italic type. We
+% define an environment to help out with that. In \pkgname{latex8}
+% compatibility mode we introduce an extra, unnecessary half~em of
+% vertical space between the author name and affiliation.
+% \begin{macrocode}
+\newenvironment{affiliation}{%
+ \ieee@times@xii@italic
+ \if@ieee@correct@geometry@
+ \else
+ \rule[10pt]{0pt}{0.5em}%
+ \fi
+ \begin{tabular}[t]{c}%
+}{%
+ \end{tabular}%
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{email}
+% E-mail addresses are supposed to be in Times~12\,pt.\ italic type. We
+% define a macro to help out with that.
+% \begin{macrocode}
+\newcommand*{\email}[1]{%
+ {\ieee@times@xii@italic#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Abstract}
+%
+% \begin{environment}{abstract}
+% The guidelines have a lot to say about formatting abstracts:
+%
+% \begin{quotation}
+% The abstract is to be in fully-justified italicized text, at the top
+% of the left-hand column as it is here, below the author information.
+% Use the word ``Abstract'' as the title, in 12-point Times, boldface
+% type, centered relative to the column, initially capitalized. The
+% abstract is to be in 10-point, single-spaced type, and up to
+% 150~words in length. Leave two blank lines after the abstract, then
+% begin the main text.
+% \end{quotation}
+%
+% Most of the following code was taken verbatim from |classes.dtx|.
+% \changes{v1.4}{2009/03/21}{Modified the abstract-handling code to use
+% the same formatting in both one- and two-column mode}
+% \changes{v1.4}{2009/04/05}{Added \texttt{\char`\\par}
+% after the abstract title to force paragraph indentation in the
+% first paragraph of the abstract}
+% \begin{macrocode}
+\if@titlepage
+ \renewenvironment{abstract}{%
+ \titlepage
+ \null\vfil
+ \@beginparpenalty\@lowpenalty
+ \begin{center}%
+ \bfseries \abstractname
+ \@endparpenalty\@M
+ \end{center}%
+ \par}%
+ {\par\vfil\null\endtitlepage}
+\else
+ \renewenvironment{abstract}{%
+ \begin{center}%
+ \ieee@times@xii@bold \abstractname
+ \end{center}%
+ \par
+ \itshape}%
+ {\vspace*{\baselineskip}}%
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \subsection{Figures and tables}
+%
+% Format figure and table captions as follows:
+%
+% \begin{quotation}
+% Figure and table captions should be 10-point Helvetica (or a similar
+% sans-serif font), boldface. Callouts should be 9-point Helvetica,
+% non-boldface. Initially capitalize only the first word of each
+% figure caption and table title. Figures and tables must be numbered
+% separately. For example: ``Figure~1. Database contexts'',
+% ``Table~1. Input data''. Figure captions are to be below the
+% figures. Table titles are to be centered above the tables.
+% \end{quotation}
+%
+% Currently, the author is responsible for putting captions above tables
+% and below figures. The \pkgname{topcapt} package is useful for
+% ensuring proper spacing when captions are placed above a table.
+%
+% \begin{macro}{\@makecaption}
+% Modify |\@makecaption| to typeset everything in 10 pt.\ Helvetica and
+% to put a period instead of a colon after the figure number. See the
+% definition of |\@makecaption| in |classes.dtx| for additional
+% commentary.
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{\ieee@helv@x@bold #1. #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ \ieee@helv@x@bold #1. #2\par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\callout}
+% When the \ICSP\ re-typesets a document they supposedly want the ``See
+% Figure'' and ``See Table'' callouts to stand out to help the
+% typesetter ensure that figures and tables are placed as close as
+% possible to their callouts. The |\callout| macro simply typesets its
+% argument in 9-point Helvetica as per the \ICSP\ guidelines.
+% \changes{v1.3}{2005/08/28}{Introduced this macro. Thanks to Ming Kin Lai
+% for finding out what a ``callout'' is.}
+% \begin{macrocode}
+\DeclareRobustCommand{\callout}[1]{%
+ {\ieee@helv@ix@roman#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Section headers}
+%
+% The \pkgname{titlesec} package makes it easy to modify section headers.
+% \begin{macrocode}
+\RequirePackage{titlesec}
+% \end{macrocode}
+%
+% Format sections as follows:
+%
+% \begin{quotation}
+% For example, ``1.~Introduction'', should be Times 12-point boldface,
+% initially capitalized, flush left, with one blank line before, and
+% one blank line after. Use a period~(``.'') after the Arabic heading
+% number, not a colon.
+% \end{quotation}
+%
+% \begin{macrocode}
+\titleformat{\section}{\ieee@times@xii@bold}{\thesection.}{0.5em}%
+ {}\relax
+\titlespacing{\section}{0pt}{12pt}{12pt}
+% \end{macrocode}
+%
+% Format subsections as follows:
+%
+% \begin{quotation}
+% As in this heading, they should be Times 11-point boldface, initially
+% capitalized, flush left, with one blank line before, and one after.
+% \end{quotation}
+%
+% \begin{macrocode}
+\titleformat{\subsection}{\ieee@times@xi@bold}{\thesubsection.}%
+ {0.5em}{}\relax
+\titlespacing{\subsection}{0pt}{11pt}{11pt}
+% \end{macrocode}
+%
+% Format subsubsections as follows:
+%
+% \begin{quotation}
+% Third-order headings, as in this paragraph, are discouraged. However,
+% if you must use them, use 10-point Times, boldface, initially
+% capitalized, flush left, preceded by one blank line, followed by a
+% period and your text on the same line.
+% \end{quotation}
+%
+% \changes{v1.0b}{2004/10/10}{Corrected a formatting problem with
+% \texttt{\string\string\string\subsubsection} identified by
+% Ben Ochoa.}
+%
+% \begin{macrocode}
+\titleformat{\subsubsection}[runin]{\ieee@times@x@bold}%
+ {\thesubsubsection.}{0.5em}{}[.]
+\titlespacing{\subsubsection}{0pt}{10pt}{0.5em}
+% \end{macrocode}
+%
+% \subsection{References}
+%
+% \begin{environment}{thebibliography}
+% In order to make \iecnf\ play nicely with the \pkgname{tocbibind}
+% package we need to separate the code that outputs the word
+% ``References'' (or whatever |\refname| is defined as) from the code
+% that typesets the bibliography in a list. Hence, our
+% |thebibliography| definition is rather short.
+% \begin{macrocode}
+\renewenvironment{thebibliography}[1]{%
+ \section*{\refname}%
+ \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
+ \begin{ieee@thebibitemlist}{#1}%
+}{%
+ \end{ieee@thebibitemlist}%
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{ieee@thebibitemlist}
+% The IEEE guidelines provide very little guidance when it comes to
+% formatting a bibliography. All they insist upon is that it be typeset
+% in 9\,pt.\ Times and use square brackets. The following is almost
+% identical to the definition of |thebibliography| in |classes.dtx| but
+% sets the appropriate font size and---as a courtesy to authors
+% struggling to meet page-length requirements---eliminates blank lines
+% between entries. The user can reinstate blank lines by redefining the
+% |\extrareflistcode| hook.
+% \begin{macrocode}
+\newenvironment{ieee@thebibitemlist}[1]
+ {\list{\@biblabel{\@arabic\c@enumiv}}%
+ {\ieee@times@ix@roman
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parsep}{0pt}%
+ \settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}%
+ \extrareflistcode}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% At the beginning of the document, after the author has finished
+% loading packages, we check to see if the \pkgname{tocbibind} package
+% was loaded. If it was, we replace its |thebibitemlist| environment
+% with our |ieee@thebibitemlist| environment.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{tocbibind}{%
+ \let\thebibitemlist=\ieee@thebibitemlist
+ \let\endthebibitemlist=\endieee@thebibitemlist
+ }%
+ {}%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\ieee@pre@bibitem@key}
+% \begin{macro}{\ieee@pre@bibitem@cmd}
+% The commands defined by the user in |\ieee@pre@bibitem@cmd| are
+% executed before \iecnf\ typesets a bibliographic entry with key
+% |\ieee@pre@bibitem@key|.
+% \begin{macrocode}
+\newcommand{\ieee@pre@bibitem@key}{IEEEconf}
+\newcommand{\ieee@pre@bibitem@cmd}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dobeforekey}
+% Store a command to execute before a given bibliography key.
+% \changes{v1.3}{2005/05/28}{Introduced this macro.}
+% \begin{macrocode}
+\newcommand{\dobeforekey}[2]{%
+ \def\ieee@pre@bibitem@key{#1}%
+ \def\ieee@pre@bibitem@cmd{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ieee@old@bibitem}
+% \begin{macro}{\bibitem}
+% Redefine |\bibitem| to insert |\ieee@pre@bibitem@cmd| before a
+% citation or reference label designated by the user.
+% \begin{macrocode}
+\let\ieee@old@bibitem=\bibitem
+\renewcommand{\bibitem}[2][]{%
+ \def\ieee@biblabel{#1}%
+ \def\ieee@bibkey{#2}%
+ \ifx\ieee@bibkey\ieee@pre@bibitem@key
+ \ieee@pre@bibitem@cmd
+ \fi
+ \ifx\ieee@biblabel\@empty
+ \def\next{\ieee@old@bibitem{#2}}%
+ \else
+ \def\next{\ieee@old@bibitem[#1]{#2}}%
+ \fi
+ \next
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\extrareflistcode}
+% Provide a hook for the user to inject arbitrary code into the |list|
+% environment's spacing argument (i.e.,~the second argument to
+% |\begin{list}|) when producing a reference list.
+% \changes{v1.3a}{2005/09/03}{Introduced this macro.}
+% \begin{macrocode}
+\newcommand{\extrareflistcode}{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \Finale
+%
+\endinput