From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining 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 +% --------------------------------------------------------- +% +% 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} +% +%\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%\ProvidesClass{IEEEconf} +%<*class> + [2009/04/05 v1.4 IEEE Computer Society 8.5x11" conference proceedings] +% +% +%<*driver> +\documentclass{ltxdoc} +\usepackage{textcomp} +\usepackage{needspace} +\usepackage[hyperindex=false,bookmarksopen=true]{hyperref} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +\begin{document} + \DocInput{IEEEconf.dtx} +\end{document} +% +% \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 }, +% 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