elsarticle/elsarticle.dtx
author Madarasi Peter
Sun, 27 Nov 2016 22:57:56 +0100
changeset 17 909bcb203f25
permissions -rw-r--r--
Fine tune. To be reviewed: abstract, intro, conclusion.
     1 % \iffalse meta-comment
     2 %
     3 % Copyright (C) 2007, 2008, 2009 by Elsevier Ltd
     4 % -----------------------------------------------
     5 % 
     6 % This file may be distributed and/or modified under the
     7 % conditions of the LaTeX Project Public License, either version 1.2
     8 % of this license or (at your option) any later version.
     9 % The latest version of this license is in:
    10 %
    11 %    http://www.latex-project.org/lppl.txt
    12 %
    13 % and version 1.2 or later is part of all distributions of LaTeX 
    14 % version 1999/12/01 or later.
    15 %
    16 % \fi
    17 % \CheckSum{2196}
    18 %
    19 % \iffalse
    20 %<*driver>
    21 \documentclass{ltxdoc}
    22 \EnableCrossrefs         
    23 \CodelineIndex
    24 \RecordChanges
    25 \usepackage{comment}
    26 \begin{document}
    27   \DocInput{elsarticle.dtx}
    28   \PrintChanges
    29   \PrintIndex
    30 \end{document}
    31 %</driver>
    32 % \fi
    33 %
    34 % \CharacterTable
    35 %  {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
    36 %   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
    37 %   Digits        \0\1\2\3\4\5\6\7\8\9
    38 %   Exclamation   \!     Double quote  \"     Hash (number) \#
    39 %   Dollar        \$     Percent       \%     Ampersand     \&
    40 %   Acute accent  \'     Left paren    \(     Right paren   \)
    41 %   Asterisk      \*     Plus          \+     Comma         \,
    42 %   Minus         \-     Point         \.     Solidus       \/
    43 %   Colon         \:     Semicolon     \;     Less than     \<
    44 %   Equals        \=     Greater than  \>     Question mark \?
    45 %   Commercial at \@     Left bracket  \[     Backslash     \\
    46 %   Right bracket \]     Circumflex    \^     Underscore    \_
    47 %   Grave accent  \`     Left brace    \{     Vertical bar  \|
    48 %   Right brace   \}     Tilde         \~}
    49 %
    50 %
    51 % \changes{v1.1}{2008/09/25}{Initial version}
    52 %
    53 %
    54 % \changes{v1.2}{2009/09/17}{Documentation, templates, and *.bst
    55 %    has been seperated from this .dtx. Incompatibility problems
    56 %    with amsref.sty, fncylab.sty have been fixed. Some bugs related
    57 %    to author/affiliation part have been fixed.}
    58 %
    59 % \GetFileInfo{elsarticle.dtx}
    60 %
    61 % \DoNotIndex{\newcommand,\newenvironment}
    62 % 
    63 %
    64 % \title{The \textsf{elsarticle.cls} -- Implimentation}
    65 % \author{Elsevier Ltd}
    66 %
    67 % \maketitle
    68 %
    69 % \StopEventually{}
    70 %
    71 % \section{Implementation}
    72 %
    73 %    \begin{macrocode}
    74 %<*class>
    75 %% 
    76 %% $Id: elsarticle.cls,v 1.20 2008-10-13 04:24:12 cvr Exp $
    77 %%
    78  \def\RCSfile{elsarticle}%
    79  \def\RCSversion{1.2.0}%
    80  \def\RCSdate{2009/09/17}%
    81  \def\@shortjnl{\relax}
    82  \def\@journal{Elsevier Ltd} \def\@company{Elsevier Ltd}
    83  \def\@issn{000-0000}
    84  \def\@shortjid{elsarticle}
    85 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
    86 \ProvidesClass{\@shortjid}[\RCSdate, \RCSversion: \@journal]
    87 \def\ABD{\AtBeginDocument}
    88 \newif\ifpreprint \preprintfalse
    89 \newif\iflongmktitle \longmktitlefalse
    90 
    91 \def\@blstr{1}
    92 \newdimen\@bls
    93 \@bls=\baselineskip
    94 
    95 \def\@finalWarning{%
    96   *****************************************************\MessageBreak
    97    This document is typeset in the CRC style which\MessageBreak
    98    is not suitable for submission.\MessageBreak
    99    \MessageBreak
   100    Please typeset again using 'preprint' option\MessageBreak
   101    for creating PDF suitable for submission.\MessageBreak
   102   ******************************************************\MessageBreak
   103 }
   104 
   105 \DeclareOption{preprint}{\global\preprinttrue
   106   \gdef\@blstr{1}\xdef\jtype{0}%
   107    \AtBeginDocument{\@twosidefalse\@mparswitchfalse}}
   108 \DeclareOption{final}{\gdef\@blstr{1}\global\preprintfalse}
   109 \DeclareOption{review}{\global\preprinttrue\gdef\@blstr{1.5}}
   110 \DeclareOption{authoryear}{\xdef\@biboptions{round,authoryear}}
   111 \DeclareOption{number}{\xdef\@biboptions{numbers}}
   112 \DeclareOption{numbers}{\xdef\@biboptions{numbers}}
   113 \DeclareOption{longtitle}{\global\longmktitletrue}
   114 \DeclareOption{5p}{\xdef\jtype{5}\global\preprintfalse
   115   \ExecuteOptions{twocolumn}}
   116   \def\jtype{0}
   117 \DeclareOption{3p}{\xdef\jtype{3}\global\preprintfalse}
   118 \DeclareOption{1p}{\xdef\jtype{1}\global\preprintfalse
   119   \AtBeginDocument{\@twocolumnfalse}}
   120 \DeclareOption{times}{\IfFileExists{txfonts.sty}%
   121   {\AtEndOfClass{\RequirePackage{txfonts}%
   122   \gdef\ttdefault{cmtt}%
   123    \let\iint\relax
   124   \let\iiint\relax
   125   \let\iiiint\relax
   126   \let\idotsint\relax
   127   \let\openbox\relax}}{\RequirePackage{times}}}
   128 \ExecuteOptions{a4paper,10pt,oneside,onecolumn,number,preprint}
   129 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
   130 \ProcessOptions
   131 \LoadClass{article}
   132 \RequirePackage{graphicx}
   133 %    \end{macrocode}
   134 % 
   135 % \section{Preamble}
   136 %
   137 %    \begin{macrocode}
   138 \let\comma\@empty
   139 \let\tnotesep\@empty
   140 \def\title#1{\gdef\@title{#1}}
   141 \let\@title\@empty
   142 
   143 \def\elsLabel#1{\@bsphack\protected@write\@auxout{}%
   144          {\string\Newlabel{#1}{\@currentlabel}}\@esphack}
   145 \def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}}
   146 
   147 \def\elsRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}%
   148 }
   149 
   150 \def\tnotemark[#1]{\textsuperscript{\@for\@@tmark:=#1\do{%
   151       \edef\tnotenum{\@ifundefined{X@\@@tmark}{1}{\elsRef{\@@tmark}}}%
   152       \ifcase\tnotenum\or\ding{73}\or,\ding{73}\ding{73}\fi}}%
   153 }
   154 \let\@tnotemark\@empty
   155 
   156 \let\@tnotes\@empty
   157 \RequirePackage{pifont}
   158 \newcounter{tnote}
   159 \def\tnotetext[#1]#2{\g@addto@macro\@tnotes{%
   160   \refstepcounter{tnote}\elsLabel{#1}%
   161    \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}%
   162     \footnotetext{#2}}}
   163 
   164 \let\@nonumnotes\@empty
   165 \def\nonumnote#1{\g@addto@macro\@nonumnotes{%
   166      \let\thefootnote\relax\footnotetext{#1}}}
   167 
   168 \newcounter{fnote}
   169 \def\fnmark[#1]{\let\comma\@empty
   170     \def\@fnmark{\@for\@@fnmark:=#1\do{%
   171     \edef\fnotenum{\@ifundefined{X@\@@fnmark}{1}{\elsRef{\@@fnmark}}}%
   172   \unskip\comma\fnotenum\let\comma,}}%
   173 }
   174 
   175 \let\@fnotes\@empty\let\@fnmark\@empty
   176 \def\fntext[#1]#2{\g@addto@macro\@fnotes{%
   177      \refstepcounter{fnote}\elsLabel{#1}%
   178    \def\thefootnote{\thefnote}%
   179    \global\setcounter{footnote}{\thefnote}%
   180    \footnotetext{#2}}}
   181 
   182 \def\cormark[#1]{\edef\cnotenum{\elsRef{#1}}%
   183     \unskip\textsuperscript{\sep\ifcase\cnotenum\or
   184        $\ast$\or$\ast\ast$\fi\hspace{-1pt}}\let\sep=,}
   185 
   186 \let\@cormark\@empty
   187 \let\@cornotes\@empty
   188 \newcounter{cnote}
   189 \def\cortext[#1]#2{\g@addto@macro\@cornotes{%
   190     \refstepcounter{cnote}\elsLabel{#1}%
   191     \def\thefootnote{\ifcase\thecnote\or$\ast$\or
   192     $\ast\ast$\fi}%
   193     \footnotetext{#2}}}
   194 
   195 \let\@corref\@empty
   196 %\def\corref#1{\cormark[#1]}
   197 \def\corref#1{\edef\cnotenum{\elsRef{#1}}%
   198     \edef\@corref{\ifcase\cnotenum\or
   199          $\ast$\or$\ast\ast$\fi\hskip-1pt}}
   200 
   201 \def\fnref#1{\fnmark[#1]}
   202 \def\tnoteref#1{\tnotemark[#1]}
   203 
   204 \def\resetTitleCounters{\c@cnote=0
   205    \c@fnote=0 \c@tnote=0 \c@footnote=0}
   206 
   207 \let\eadsep\@empty
   208 \let\@elseads\@empty
   209 \let\@elsuads\@empty
   210 \let\@cormark\@empty
   211 \def\hashchar{\expandafter\@gobble\string\~}
   212 \def\underscorechar{\expandafter\@gobble\string\_}
   213 \def\lbracechar{\expandafter\@gobble\string\{}
   214 \def\rbracechar{\expandafter\@gobble\string\}}
   215 
   216 \def\ead{\@ifnextchar[{\@uad}{\@ead}}
   217 \gdef\@ead#1{\bgroup\def\_{\string\underscorechar\space}%
   218   \def\{{\string\lbracechar\space}%
   219    \def~{\hashchar\space}%
   220    \def\}{\string\rbracechar\space}%
   221    \edef\tmp{\the\@eadauthor}
   222    \immediate\write\@auxout{\string\emailauthor
   223      {#1}{\expandafter\strip@prefix\meaning\tmp}}%
   224   \egroup
   225 }
   226 \newcounter{ead}
   227 \gdef\emailauthor#1#2{\stepcounter{ead}%
   228      \g@addto@macro\@elseads{\raggedright%
   229       \let\corref\@gobble
   230       \eadsep\texttt{#1} (#2)\def\eadsep{\unskip,\space}}%
   231 }
   232 \gdef\@uad[#1]#2{\bgroup
   233   \def~{\string\hashchar\space}%
   234   \def\_{\string\underscorechar\space}%
   235    \edef\tmp{\the\@eadauthor}
   236    \immediate\write\@auxout{\string\urlauthor
   237      {#2}{\expandafter\strip@prefix\meaning\tmp}}%
   238   \egroup
   239 }
   240 \def\urlauthor#1#2{\g@addto@macro\@elsuads{\let\corref\@gobble%
   241      \raggedright\eadsep\texttt{#1}\space(#2)%
   242      \def\eadsep{\unskip,\space}}%
   243 }
   244 
   245 \def\elsauthors{}
   246 \def\pprinttitle{}
   247 \let\authorsep\@empty
   248 \let\sep\@empty
   249 \newcounter{author}
   250 \def\author{\@ifnextchar[{\@@author}{\@author}}
   251 
   252 \newtoks\@eadauthor
   253 \def\@@author[#1]#2{\g@addto@macro\elsauthors{%
   254     \def\baselinestretch{1}%
   255     \authorsep#2\unskip\textsuperscript{%#1%
   256       \@for\@@affmark:=#1\do{%
   257        \edef\affnum{\@ifundefined{X@\@@affmark}{1}{\elsRef{\@@affmark}}}%
   258      \unskip\sep\affnum\let\sep=,}%
   259       \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi
   260       \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi
   261       }%
   262     \def\authorsep{\unskip,\space}%
   263     \global\let\sep\@empty\global\let\@corref\@empty
   264     \global\let\@fnmark\@empty}%
   265     \@eadauthor={#2}
   266 }
   267 
   268 \def\@author#1{\g@addto@macro\elsauthors{\normalsize%
   269     \def\baselinestretch{1}%
   270     \upshape\authorsep#1\unskip\textsuperscript{%
   271       \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi
   272       \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi
   273       }%
   274     \def\authorsep{\unskip,\space}%
   275     \global\let\@fnmark\@empty
   276     \global\let\sep\@empty}%
   277     \@eadauthor={#1}
   278 }
   279 
   280 \def\elsaddress{}
   281 \def\addsep{\par\vskip6pt}
   282 \def\address{\@ifnextchar[{\@@address}{\@address}}
   283 
   284 \def\@alph#1{%
   285   \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or
   286   l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
   287   y\or z%
   288   \or aa\or ab\or ac\or ad\or ae\or af\or ag\or ah\or ai\or aj\or
   289   ak\or al\or am\or an\or ao\or ap\or aq\or ar\or as\or at\or au\or
   290   av\or aw\or ax\or ay\or az%
   291   \or ba\or bb\or bc\or bd\or be\or bf\or bg\or bh\or bi\or bj\or
   292   bk\or bl\or bm\or bn\or bo\or bp\or bq\or br\or bs\or bt\or bu\or
   293   bv\or bw\or bx\or by\or bz%
   294   \or ca\or cb\or cc\or cd\or ce\or cf\or cg\or ch\or ci\or cj\or
   295   ck\or cl\or cm\or cn\or co\or cp\or cq\or cr\or cs\or ct\or cu\or
   296   cv\or cw\or cx\or cy\or cz%
   297   \or da\or db\or dc\or dd\or de\or df\or dg\or dh\or di\or dj\or
   298   dk\or dl\or dm\or dn\or do\or dp\or dq\or dr\or ds\or dt\or du\or
   299   dv\or dw\or dx\or dy\or dz%
   300   \or ea\or eb\or ec\or ed\or ee\or ef\or eg\or eh\or ei\or ej\or
   301   ek\or el\or em\or en\or eo\or ep\or eq\or er\or es\or et\or eu\or
   302   ev\or ew\or ex\or ey\or ez%
   303   \or fa\or fb\or fc\or fd\or fe\or ff\or fg\or fh\or fi\or fj\or
   304   fk\or fl\or fm\or fn\or fo\or fp\or fq\or fr\or fs\or ft\or fu\or
   305   fv\or fw\or fx\or fy\or fz%
   306   \or ga\or gb\or gc\or gd\or ge\or gf\or gg\or gh\or gi\or gj\or
   307   gk\or gl\or gm\or gn\or go\or gp\or gq\or gr\or gs\or gt\or gu\or
   308   gv\or gw\or gx\or gy\or gz%
   309   \else\@ctrerr\fi}
   310 
   311 \newcounter{affn}
   312 \renewcommand\theaffn{\alph{affn}}
   313 
   314 \long\def\@@address[#1]#2{\g@addto@macro\elsaddress{%
   315     \def\baselinestretch{1}%
   316      \refstepcounter{affn}
   317      \xdef\@currentlabel{\theaffn}
   318      \elsLabel{#1}%
   319     \textsuperscript{\theaffn}#2\par}}
   320 
   321 \long\def\@address#1{\g@addto@macro\elsauthors{%
   322     \def\baselinestretch{1}%
   323     \addsep\footnotesize\itshape#1\def\addsep{\par\vskip6pt}%
   324     \def\authorsep{\par\vskip8pt}}}
   325 
   326 \newbox\absbox
   327 \renewenvironment{abstract}{\global\setbox\absbox=\vbox\bgroup
   328   \hsize=\textwidth\def\baselinestretch{1}%
   329   \noindent\unskip\textbf{Abstract}
   330  \par\medskip\noindent\unskip\ignorespaces}
   331  {\egroup}
   332 
   333 \newbox\keybox
   334 \def\keyword{%
   335   \def\sep{\unskip, }%
   336  \def\MSC{\@ifnextchar[{\@MSC}{\@MSC[2000]}}
   337   \def\@MSC[##1]{\par\leavevmode\hbox {\it ##1~MSC:\space}}%
   338   \def\PACS{\par\leavevmode\hbox {\it PACS:\space}}%
   339   \def\JEL{\par\leavevmode\hbox {\it JEL:\space}}%
   340   \global\setbox\keybox=\vbox\bgroup\hsize=\textwidth
   341   \normalsize\normalfont\def\baselinestretch{1}
   342   \parskip\z@
   343   \noindent\textit{Keywords: }
   344   \raggedright                         % Keywords are not justified.
   345   \ignorespaces}
   346 \def\endkeyword{\par \egroup}
   347 
   348 \newdimen\Columnwidth
   349 \Columnwidth=\columnwidth
   350 
   351 \def\printFirstPageNotes{%
   352   \iflongmktitle
   353    \let\columnwidth=\textwidth\fi
   354   \ifx\@tnotes\@empty\else\@tnotes\fi
   355   \ifx\@nonumnotes\@empty\else\@nonumnotes\fi
   356   \ifx\@cornotes\@empty\else\@cornotes\fi
   357   \ifx\@elseads\@empty\relax\else
   358    \let\thefootnote\relax
   359    \footnotetext{\ifnum\theead=1\relax
   360       \textit{Email address:\space}\else
   361       \textit{Email addresses:\space}\fi
   362      \@elseads}\fi
   363   \ifx\@elsuads\@empty\relax\else
   364    \let\thefootnote\relax
   365    \footnotetext{\textit{URL:\space}%
   366      \@elsuads}\fi
   367   \ifx\@fnotes\@empty\else\@fnotes\fi
   368   \iflongmktitle\if@twocolumn
   369    \let\columnwidth=\Columnwidth\fi\fi
   370 }
   371 
   372 \long\def\pprintMaketitle{\clearpage
   373   \iflongmktitle\if@twocolumn\let\columnwidth=\textwidth\fi\fi
   374   \resetTitleCounters
   375   \def\baselinestretch{1}%
   376   \printFirstPageNotes
   377   \begin{center}%
   378  \thispagestyle{pprintTitle}%
   379    \def\baselinestretch{1}%
   380     \Large\@title\par\vskip18pt
   381     \normalsize\elsauthors\par\vskip10pt
   382     \footnotesize\itshape\elsaddress\par\vskip36pt
   383     \hrule\vskip12pt
   384     \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi
   385     \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi
   386     \hrule\vskip12pt
   387     \end{center}%
   388   \gdef\thefootnote{\arabic{footnote}}%
   389   }
   390 
   391 \def\printWarning{%
   392      \mbox{}\par\vfill\par\bgroup
   393      \fboxsep12pt\fboxrule1pt
   394      \hspace*{.18\textwidth}
   395      \fcolorbox{gray50}{gray10}{\box\warnbox}
   396      \egroup\par\vfill\thispagestyle{empty}
   397      \setcounter{page}{0}
   398      \clearpage}
   399 
   400 \long\def\finalMaketitle{%
   401   \resetTitleCounters
   402   \def\baselinestretch{1}%
   403    \MaketitleBox
   404    \thispagestyle{pprintTitle}%
   405   \gdef\thefootnote{\arabic{footnote}}%
   406   }
   407 
   408 \long\def\MaketitleBox{%
   409   \resetTitleCounters
   410   \def\baselinestretch{1}%
   411   \begin{center}%
   412    \def\baselinestretch{1}%
   413     \Large\@title\par\vskip18pt
   414     \normalsize\elsauthors\par\vskip10pt
   415     \footnotesize\itshape\elsaddress\par\vskip36pt
   416     \hrule\vskip12pt
   417     \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi
   418     \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi
   419     \hrule\vskip12pt
   420     \end{center}%
   421   }
   422 
   423 \def\FNtext#1{\par\bgroup\footnotesize#1\egroup}
   424 \newdimen\space@left
   425 \def\alarm#1{\typeout{******************************}%
   426              \typeout{#1}%
   427              \typeout{******************************}%
   428 }
   429 \long\def\getSpaceLeft{%\global\@twocolumnfalse%
   430    \global\setbox0=\vbox{\hsize=\textwidth\MaketitleBox}%
   431    \global\setbox1=\vbox{\hsize=\textwidth
   432     \let\footnotetext\FNtext
   433     \printFirstPageNotes}%
   434     \xdef\noteheight{\the\ht1}%
   435     \xdef\titleheight{\the\ht0}%
   436     \@tempdima=\vsize
   437     \advance\@tempdima-\noteheight
   438     \advance\@tempdima-1\baselineskip
   439 }
   440 
   441   \skip\footins=24pt
   442 
   443 \newbox\els@boxa
   444 \newbox\els@boxb
   445 
   446 \ifpreprint
   447   \def\maketitle{\pprintMaketitle}
   448   \else
   449    \ifnum\jtype=1
   450     \def\maketitle{%
   451       \iflongmktitle\getSpaceLeft
   452        \global\setbox\els@boxa=\vsplit0 to \@tempdima
   453        \box\els@boxa\par\resetTitleCounters
   454        \thispagestyle{pprintTitle}%
   455        \printFirstPageNotes
   456        \box0%
   457       \else
   458        \finalMaketitle\printFirstPageNotes
   459       \fi
   460     \gdef\thefootnote{\arabic{footnote}}}%
   461   \else
   462  \ifnum\jtype=5
   463     \def\maketitle{%
   464       \iflongmktitle\getSpaceLeft
   465        \global\setbox\els@boxa=\vsplit0 to \@tempdima
   466        \box\els@boxa\par\resetTitleCounters
   467        \thispagestyle{pprintTitle}%
   468        \printFirstPageNotes
   469        \twocolumn[\box0]%\printFirstPageNotes
   470       \else
   471        \twocolumn[\finalMaketitle]\printFirstPageNotes
   472      \fi
   473      \gdef\thefootnote{\arabic{footnote}}}
   474   \else
   475   \if@twocolumn
   476     \def\maketitle{%
   477       \iflongmktitle\getSpaceLeft
   478        \global\setbox\els@boxa=\vsplit0 to \@tempdima
   479        \box\els@boxa\par\resetTitleCounters
   480        \thispagestyle{pprintTitle}%
   481        \printFirstPageNotes
   482        \twocolumn[\box0]%
   483       \else
   484        \twocolumn[\finalMaketitle]\printFirstPageNotes
   485       \fi
   486      \gdef\thefootnote{\arabic{footnote}}}%
   487    \else
   488     \def\maketitle{%
   489       \iflongmktitle\getSpaceLeft
   490        \global\setbox\els@boxa=\vsplit0 to \@tempdima
   491        \box\els@boxa\par\resetTitleCounters
   492        \thispagestyle{pprintTitle}%
   493        \printFirstPageNotes
   494        \box0%
   495      \else
   496        \finalMaketitle\printFirstPageNotes
   497       \fi
   498     \gdef\thefootnote{\arabic{footnote}}}%
   499    \fi
   500   \fi
   501  \fi
   502 \fi
   503 %    \end{macrocode}
   504 %    
   505 %\section{Headers/footers}
   506 %
   507 %    \begin{macrocode}
   508 \def\ps@pprintTitle{%
   509      \let\@oddhead\@empty
   510      \let\@evenhead\@empty
   511      \def\@oddfoot{\footnotesize\itshape
   512        Preprint submitted to \ifx\@journal\@empty Elsevier
   513        \else\@journal\fi\hfill\today}%
   514      \let\@evenfoot\@oddfoot}
   515 %    \end{macrocode}
   516 %
   517 % \section{Section headings}
   518 %
   519 %    \begin{macrocode}
   520 \def\@seccntDot{.}
   521 \def\@seccntformat#1{\csname the#1\endcsname\@seccntDot\hskip 0.5em}
   522 
   523 \renewcommand\section{\@startsection {section}{1}{\z@}%
   524            {18\p@ \@plus 6\p@ \@minus 3\p@}%
   525            {9\p@ \@plus 6\p@ \@minus 3\p@}%
   526            {\normalsize\bfseries\boldmath}}
   527 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
   528            {12\p@ \@plus 6\p@ \@minus 3\p@}%
   529            {3\p@ \@plus 6\p@ \@minus 3\p@}%
   530            {\normalfont\normalsize\itshape}}
   531 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
   532            {12\p@ \@plus 6\p@ \@minus 3\p@}%
   533            {\p@}%
   534            {\normalfont\normalsize\itshape}}
   535 
   536 \def\paragraph{\secdef{\els@aparagraph}{\els@bparagraph}}
   537 \def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2.}}
   538 \def\els@bparagraph#1{\elsparagraph*{#1.}}
   539 
   540 \newcommand\elsparagraph{\@startsection{paragraph}{4}{0\z@}%
   541            {10\p@ \@plus 6\p@ \@minus 3\p@}%
   542            {-6\p@}%
   543            {\normalfont\itshape}}
   544 %    \end{macrocode}
   545 %
   546 %\section{List environment}
   547 %
   548 %    \begin{macrocode}
   549 \newdimen\leftMargin
   550 \leftMargin=2em
   551 \newtoks\@enLab  %\newtoks\@enfont
   552 \def\@enQmark{?}
   553 \def\@enLabel#1#2{%
   554   \edef\@enThe{\noexpand#1{\@enumctr}}%
   555   \@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}%
   556   \@enloop}
   557 \def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= }
   558 \def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop}
   559 \def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop}
   560 \def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop}
   561 \def\@enloop{\futurelet\@entemp\@enloop@}
   562 \def\@enloop@{%
   563   \ifx A\@entemp         \def\@tempa{\@enLabel\Alph  }\else
   564   \ifx a\@entemp         \def\@tempa{\@enLabel\alph  }\else
   565   \ifx i\@entemp         \def\@tempa{\@enLabel\roman }\else
   566   \ifx I\@entemp         \def\@tempa{\@enLabel\Roman }\else
   567   \ifx 1\@entemp         \def\@tempa{\@enLabel\arabic}\else
   568   \ifx \@sptoken\@entemp \let\@tempa\@enSpace         \else
   569   \ifx \bgroup\@entemp   \let\@tempa\@enGroup         \else
   570   \ifx \@enum@\@entemp   \let\@tempa\@gobble          \else
   571                          \let\@tempa\@enOther
   572              \fi\fi\fi\fi\fi\fi\fi\fi
   573   \@tempa}
   574 \newlength{\@sep} \newlength{\@@sep}
   575 \setlength{\@sep}{.5\baselineskip plus.2\baselineskip
   576             minus.2\baselineskip}
   577 \setlength{\@@sep}{.1\baselineskip plus.01\baselineskip
   578             minus.05\baselineskip}
   579 \providecommand{\sfbc}{\rmfamily\upshape}
   580 \providecommand{\sfn}{\rmfamily\upshape}
   581 \def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt}
   582 \def\enumerate{%
   583    \ifnum \@enumdepth >3 \@toodeep\else
   584       \advance\@enumdepth \@ne
   585       \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi
   586    \@ifnextchar[{\@@enum@}{\@enum@}}
   587 \def\@@enum@[#1]{%
   588   \@enLab{}\let\@enThe\@enQmark
   589   \@enloop#1\@enum@
   590   \ifx\@enThe\@enQmark\@warning{The counter will not be printed.%
   591    ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi
   592   \expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}%
   593   \expandafter\let\csname the\@enumctr\endcsname\@enThe
   594   \csname c@\@enumctr\endcsname7
   595   \expandafter\settowidth
   596             \csname leftmargin\romannumeral\@enumdepth\endcsname
   597             {\the\@enLab\hskip\labelsep}%
   598   \@enum@}
   599 \def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}%
   600            {\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}%
   601      \ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else
   602            \setlength{\topsep}{\@sep}\fi
   603      \ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}%
   604       \else \setlength{\itemsep}{\@@sep}\fi
   605      %\setlength\leftmargin{\leftMargin}%%%{1.8em}
   606      \setlength{\parsep}{0pt plus1pt minus1pt}%
   607      \setlength{\parskip}{0pt plus1pt minus1pt}
   608                    }}
   609 
   610 \def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else
   611            \addvspace{\@sep}\fi \endlist}
   612 
   613 \def\sitem{\@noitemargtrue\@item[\@itemlabel *]}
   614 
   615 \def\itemize{\@ifnextchar[{\@Itemize}{\@Itemize[]}}
   616 
   617 \def\@Itemize[#1]{\def\next{#1}%
   618   \ifnum \@itemdepth >\thr@@\@toodeep\else
   619    \advance\@itemdepth\@ne
   620   \ifx\next\@empty\else\expandafter\def\csname
   621    labelitem\romannumeral\the\@itemdepth\endcsname{#1}\fi%
   622   \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
   623   \expandafter\list\csname\@itemitem\endcsname
   624   {\def\makelabel##1{\hss\llap{##1}}}%
   625  \fi}
   626 %    \end{macrocode}
   627 %
   628 %\section{Theorem environment}
   629 %
   630 %    \begin{macrocode}
   631 \def\newdefinition#1{%
   632   \@ifnextchar[{\@odfn{#1}}{\@ndfn{#1}}}%]
   633 \def\@ndfn#1#2{%
   634   \@ifnextchar[{\@xndfn{#1}{#2}}{\@yndfn{#1}{#2}}}
   635 \def\@xndfn#1#2[#3]{%
   636   \expandafter\@ifdefinable\csname #1\endcsname
   637     {\@definecounter{#1}\@newctr{#1}[#3]%
   638      \expandafter\xdef\csname the#1\endcsname{%
   639        \expandafter\noexpand\csname the#3\endcsname \@dfncountersep
   640           \@dfncounter{#1}}%
   641      \global\@namedef{#1}{\@dfn{#1}{#2}}%
   642      \global\@namedef{end#1}{\@enddefinition}}}
   643 \def\@yndfn#1#2{%
   644   \expandafter\@ifdefinable\csname #1\endcsname
   645     {\@definecounter{#1}%
   646      \expandafter\xdef\csname the#1\endcsname{\@dfncounter{#1}}%
   647      \global\@namedef{#1}{\@dfn{#1}{#2}}%
   648      \global\@namedef{end#1}{\@enddefinition}}}
   649 \def\@odfn#1[#2]#3{%
   650   \@ifundefined{c@#2}{\@nocounterr{#2}}%
   651     {\expandafter\@ifdefinable\csname #1\endcsname
   652     {\global\@namedef{the#1}{\@nameuse{the#2}}
   653   \global\@namedef{#1}{\@dfn{#2}{#3}}%
   654   \global\@namedef{end#1}{\@enddefinition}}}}
   655 \def\@dfn#1#2{%
   656   \refstepcounter{#1}%
   657   \@ifnextchar[{\@ydfn{#1}{#2}}{\@xdfn{#1}{#2}}}
   658 \def\@xdfn#1#2{%
   659   \@begindefinition{#2}{\csname the#1\endcsname}\ignorespaces}
   660 \def\@ydfn#1#2[#3]{%
   661   \@opargbegindefinition{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
   662 \def\@dfncounter#1{\noexpand\arabic{#1}}
   663 \def\@dfncountersep{.}
   664 \def\@begindefinition#1#2{\trivlist
   665    \item[\hskip\labelsep{\bfseries #1\ #2.}]\upshape}
   666 \def\@opargbegindefinition#1#2#3{\trivlist
   667       \item[\hskip\labelsep{\bfseries #1\ #2\ (#3).}]\upshape}
   668 \def\@enddefinition{\endtrivlist}
   669 
   670 \def\@begintheorem#1#2{\trivlist
   671   \let\baselinestretch\@blstr
   672    \item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape}
   673 \def\@opargbegintheorem#1#2#3{\trivlist
   674   \let\baselinestretch\@blstr
   675       \item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\itshape}
   676 
   677 \def\newproof#1{%
   678   \@ifnextchar[{\@oprf{#1}}{\@nprf{#1}}}
   679 \def\@nprf#1#2{%
   680   \@ifnextchar[{\@xnprf{#1}{#2}}{\@ynprf{#1}{#2}}}
   681 \def\@xnprf#1#2[#3]{%
   682   \expandafter\@ifdefinable\csname #1\endcsname
   683     {\@definecounter{#1}\@newctr{#1}[#3]%
   684      \expandafter\xdef\csname the#1\endcsname{%
   685        \expandafter\noexpand\csname the#3\endcsname \@prfcountersep
   686           \@prfcounter{#1}}%
   687      \global\@namedef{#1}{\@prf{#1}{#2}}%
   688      \global\@namedef{end#1}{\@endproof}}}
   689 \def\@ynprf#1#2{%
   690   \expandafter\@ifdefinable\csname #1\endcsname
   691     {\@definecounter{#1}%
   692      \expandafter\xdef\csname the#1\endcsname{\@prfcounter{#1}}%
   693      \global\@namedef{#1}{\@prf{#1}{#2}}%
   694      \global\@namedef{end#1}{\@endproof}}}
   695 \def\@oprf#1[#2]#3{%
   696   \@ifundefined{c@#2}{\@nocounterr{#2}}%
   697     {\expandafter\@ifdefinable\csname #1\endcsname
   698     {\global\@namedef{the#1}{\@nameuse{the#2}}%
   699   \global\@namedef{#1}{\@prf{#2}{#3}}%
   700   \global\@namedef{end#1}{\@endproof}}}}
   701 \def\@prf#1#2{%
   702   \refstepcounter{#1}%
   703   \@ifnextchar[{\@yprf{#1}{#2}}{\@xprf{#1}{#2}}}
   704 \def\@xprf#1#2{%
   705   \@beginproof{#2}{\csname the#1\endcsname}\ignorespaces}
   706 \def\@yprf#1#2[#3]{%
   707   \@opargbeginproof{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
   708 \def\@prfcounter#1{\noexpand\arabic{#1}}
   709 \def\@prfcountersep{.}
   710 \def\@beginproof#1#2{\trivlist\let\baselinestretch\@blstr
   711    \item[\hskip \labelsep{\scshape #1.}]\rmfamily}
   712 \def\@opargbeginproof#1#2#3{\trivlist\let\baselinestretch\@blstr
   713       \item[\hskip \labelsep{\scshape #1\ (#3).}]\rmfamily}
   714 \def\@endproof{\endtrivlist}
   715 \newcommand*{\qed}{\hbox{}\hfill$\Box$}
   716 
   717 \@ifundefined{@biboptions}{\xdef\@biboptions{numbers}}{}
   718 \InputIfFileExists{\jobname.spl}{}{}
   719 \RequirePackage[\@biboptions]{natbib}
   720 
   721 \newwrite\splwrite
   722 \immediate\openout\splwrite=\jobname.spl
   723 \def\biboptions#1{\def\next{#1}\immediate\write\splwrite{%
   724    \string\g@addto@macro\string\@biboptions{%
   725     ,\expandafter\strip@prefix\meaning\next}}}
   726 
   727 \let\baselinestretch=\@blstr
   728 
   729 %    \end{macrocode}
   730 %
   731 %\section{Page dimensions and margins for final form}
   732 %
   733 %\subsection{Option 1p}
   734 %
   735 %    \begin{macrocode}
   736 \ifnum\jtype=1
   737  \RequirePackage{geometry}
   738  \geometry{twoside,
   739   paperwidth=210mm,
   740   paperheight=297mm,
   741   textheight=562pt,
   742   textwidth=384pt,
   743   centering,
   744   headheight=50pt,
   745   headsep=12pt,
   746   footskip=12pt,
   747   footnotesep=24pt plus 2pt minus 12pt,
   748  }
   749  \global\let\bibfont=\footnotesize
   750  \global\bibsep=0pt
   751  \if@twocolumn\global\@twocolumnfalse\fi
   752 %
   753 %    \end{macrocode}
   754 %
   755 %\subsection{Option '3p'}
   756 %
   757 %    \begin{macrocode}
   758 \else\ifnum\jtype=3
   759  \RequirePackage{geometry}
   760  \geometry{twoside,
   761   paperwidth=210mm,
   762   paperheight=297mm,
   763   textheight=622pt,
   764   textwidth=468pt,
   765   centering,
   766   headheight=50pt,
   767   headsep=12pt,
   768   footskip=18pt,
   769   footnotesep=24pt plus 2pt minus 12pt,
   770   columnsep=2pc
   771  }
   772  \global\let\bibfont=\footnotesize
   773  \global\bibsep=0pt
   774  \if@twocolumn\input{fleqn.clo}\fi
   775 %    \end{macrocode}
   776 %
   777 %\subsection{Option '5p'}
   778 %
   779 %    \begin{macrocode}
   780 \else\ifnum\jtype=5
   781  \RequirePackage{geometry}
   782  \geometry{twoside,
   783   paperwidth=210mm,
   784   paperheight=297mm,
   785   textheight=682pt,
   786   textwidth=522pt,
   787   centering,
   788  headheight=50pt,
   789   headsep=12pt,
   790   footskip=18pt,
   791   footnotesep=24pt plus 2pt minus 12pt,
   792   columnsep=18pt
   793  }%
   794  \global\let\bibfont=\footnotesize
   795  \global\bibsep=0pt
   796  \input{fleqn.clo}
   797  \global\@twocolumntrue
   798 %%
   799 %% End of option '5p'
   800 %%
   801 \fi\fi\fi
   802 %    \end{macrocode}
   803 %
   804 %\section{Other items}
   805 %
   806 %    \begin{macrocode}
   807 \def\journal#1{\gdef\@journal{#1}}
   808  \let\@journal\@empty
   809 \newenvironment{frontmatter}{}{\maketitle}
   810 
   811 \long\def\@makecaption#1#2{%
   812   \vskip\abovecaptionskip\footnotesize
   813   \sbox\@tempboxa{#1: #2}%
   814   \ifdim \wd\@tempboxa >\hsize
   815     #1: #2\par
   816   \else
   817     \global \@minipagefalse
   818     \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
   819   \fi
   820   \vskip\belowcaptionskip}
   821 
   822 \AtBeginDocument{\@ifpackageloaded{hyperref}
   823   {\def\@linkcolor{blue}
   824    \def\@anchorcolor{blue}
   825    \def\@citecolor{blue}
   826    \def\@filecolor{blue}
   827    \def\@urlcolor{blue}
   828    \def\@menucolor{blue}
   829    \def\@pagecolor{blue}
   830 \begingroup
   831   \@makeother\`%
   832   \@makeother\=%
   833   \edef\x{%
   834     \edef\noexpand\x{%
   835       \endgroup
   836       \noexpand\toks@{%
   837         \catcode 96=\noexpand\the\catcode`\noexpand\`\relax
   838         \catcode 61=\noexpand\the\catcode`\noexpand\=\relax
   839       }%
   840     }%
   841     \noexpand\x
   842   }%
   843 \x
   844 \@makeother\`
   845 \@makeother\=
   846 }{}}
   847 %%
   848 \renewcommand\appendix{\par
   849   \setcounter{section}{0}%
   850   \setcounter{subsection}{0}%
   851   \setcounter{equation}{0}
   852   \gdef\thefigure{\@Alph\c@section.\arabic{figure}}%
   853   \gdef\thetable{\@Alph\c@section.\arabic{table}}%
   854   \gdef\thesection{\appendixname\@Alph\c@section}%
   855   \@addtoreset{equation}{section}%
   856   \gdef\theequation{\@Alph\c@section.\arabic{equation}}%
   857 }
   858 \def\appendixname{Appendix }
   859 
   860 %% Added for work with amsrefs.sty
   861 
   862 \@ifpackageloaded{amsrefs}%
   863   {}
   864   {\let\bibsection\relax%
   865   \AtBeginDocument{\def\cites@b#1#2,#3{%
   866     \begingroup[%
   867         \toks@{\InnerCite{#2}#1}%
   868         \ifx\@empty#3\@xp\@gobble\fi
   869         \cites@c#3%
   870 }}}
   871 %
   872 %%
   873 %</class>
   874 %
   875 %    \end{macrocode}
   876 % \Finale
   877 \endinput
   878 
   879 %%
   880 %% End of file 'elsarticle.dtx'
   881 %%
   882