From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 2 Sep 2019 13:46:59 +0900
Subject: Initial commit

---
 macros/latex/contrib/IEEEconf/IEEEconf.dtx | 1083 ++++++++++++++++++++++++++++
 1 file changed, 1083 insertions(+)
 create mode 100644 macros/latex/contrib/IEEEconf/IEEEconf.dtx

(limited to 'macros/latex/contrib/IEEEconf/IEEEconf.dtx')

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
-- 
cgit v1.2.3

