summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/IEEEconf/IEEEconf.dtx
blob: c70b2e29811f223a56fa06790b4202a28dfab56e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
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