2380 lines
66 KiB
TeX
2380 lines
66 KiB
TeX
%%
|
|
%% This is file `cas-common.sty',
|
|
%%
|
|
%% This file is part of the 'CAS Bundle'.
|
|
%% ......................................
|
|
%%
|
|
%% It may be distributed under the conditions of the LaTeX Project Public
|
|
%% License, either version 1.2 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.2 or later is part of all distributions of LaTeX
|
|
%% version 1999/12/01 or later.
|
|
%%
|
|
%% The list of all files belonging to the 'CAS Bundle' is
|
|
%% given in the file `manifest.txt'.
|
|
%%
|
|
|
|
% $Id: cas-common.sty 49 2020-03-14 09:05:10Z rishi $
|
|
|
|
\def\RCSfile{cas-common}%
|
|
\def\RCSversion{2.1}%
|
|
\def\RCSdate{2020/03/14}%
|
|
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
|
|
|
|
\ExplSyntaxOn
|
|
\makeatletter
|
|
%
|
|
% Front matter macros
|
|
%
|
|
% The front matter macros are derived/adopted from stm-prelims.sty
|
|
% written by CV Radhakrishnan <cvr@cvr.cc> and copyrighted by him.
|
|
% Usage of those macros and methods are gratefully acknowledged.
|
|
%
|
|
|
|
\tl_set:Nn \l_stm_title_color_tl { black }
|
|
|
|
\keys_define:nn { stm / title }
|
|
{
|
|
mode .choice: ,
|
|
mode / title .meta:n =
|
|
{
|
|
type = title ,
|
|
size = \LARGE ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
color = black ,
|
|
before = 0pt ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
} ,
|
|
mode / alt .meta:n =
|
|
{
|
|
type = alt ,
|
|
size = \large ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
color = black ,
|
|
before = 6pt ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
} ,
|
|
mode / sub .meta:n =
|
|
{
|
|
type = sub ,
|
|
size = \large ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
color = black!80 ,
|
|
before = 6pt ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
} ,
|
|
mode / trans .meta:n =
|
|
{
|
|
type = trans ,
|
|
size = \normalsize ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
color = black!60 ,
|
|
before = 6pt ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
} ,
|
|
mode / transsub .meta:n =
|
|
{
|
|
type = transsub ,
|
|
size = \small ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
color = black!50 ,
|
|
before = 6pt ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
} ,
|
|
mode / ascii .meta:n =
|
|
{
|
|
type = ascii ,
|
|
size = \small\ttfamily ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
color = black ,
|
|
before = 12pt ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
} ,
|
|
type .tl_set:N = \l_stm_title_type_tl ,
|
|
size .tl_set:N = \l_stm_title_size_tl ,
|
|
shape .tl_set:N = \l_stm_title_shape_tl ,
|
|
weight .tl_set:N = \l_stm_title_weight_tl ,
|
|
before .dim_set:N = \l_stm_title_before_dim ,
|
|
after .dim_set:N = \l_stm_title_after_dim ,
|
|
align .tl_set:N = \l_stm_title_align_tl ,
|
|
color .tl_set:N = \l_stm_title_color_tl ,
|
|
}
|
|
|
|
\NewDocumentCommand \processTmarks { }
|
|
{
|
|
\cs_if_free:cTF { mark@title }
|
|
{ \ignorespaces }
|
|
{ \tl_set:Nx \l_tmpa_tl { \cs:w mark@title\cs_end: }
|
|
\clist_map_inline:cn { mark@title }
|
|
{
|
|
\str_case:nn { ##1 }
|
|
{
|
|
{ 1 } { $^\star$ }
|
|
{ 2 } { $^{,\star\star}$ }
|
|
{ 3 } { $^{,\star\star\star}$ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
\RenewDocumentCommand \title { O{} m }
|
|
{
|
|
\pdfstringdef \@pdftitle { #2 }
|
|
\csgdef { casprelimstitle } { #2 }
|
|
\keys_set:nn { stm / title } { #1 }
|
|
\seq_gput_right:Nn \g_stm_title_seq
|
|
{
|
|
\keys_set:nn { stm / title } { #1 }
|
|
% \msg_term:n { MODE:~\l_stm_title_mode_tl ~ ~ [#2]}
|
|
\par \vskip \l_stm_title_before_dim
|
|
\l_stm_title_align_tl
|
|
\l_stm_title_size_tl
|
|
\l_stm_title_shape_tl
|
|
\l_stm_title_weight_tl
|
|
\color { \l_stm_title_color_tl }
|
|
\noindent \unskip \ignorespaces #2
|
|
\tl_set:Nn \l_tmpa_tl { title }
|
|
\tl_if_eq:NNTF \l_stm_title_type_tl \l_tmpa_tl
|
|
{ \processTmarks } { }
|
|
\par \vskip \l_stm_title_after_dim
|
|
\normalcolor \normalsize \normalfont
|
|
}
|
|
}
|
|
|
|
% \gappto\usestmtitle{#1}%
|
|
|
|
\renewcommand \@title { \seq_use:Nn \g_stm_title_seq { } }
|
|
|
|
\NewDocumentCommand \wrAun { m } % unexpanded write to aux
|
|
{ \iow_now:Nn \@auxout { #1 } }
|
|
\NewDocumentCommand \wrAux { m } % expanded write to aux
|
|
{ \iow_now:Nx \@auxout { #1 } }
|
|
|
|
\NewDocumentCommand \wrShipAux { m } % expanded write at shipout
|
|
{ \iow_shipout:Nx \@auxout { #1 } }
|
|
\NewDocumentCommand \wrShipAun { m } % unexpanded write at shipout
|
|
{ \iow_shipout:Nn \@auxout { #1 } }
|
|
|
|
\NewDocumentCommand \stmLabel { m }
|
|
{
|
|
\@bsphack \wrAux
|
|
{ \token_to_str:N \NewLabel { #1 }
|
|
{ \@currentlabel }
|
|
} \@esphack
|
|
}
|
|
\NewDocumentCommand \NewLabel { m m }
|
|
{
|
|
\cs_if_free:cTF { X@#1: }
|
|
{ \cs_new:cx { X@#1: } { #2 } }
|
|
{ \cs_set:cx { X@#1: } { #2 } }
|
|
}
|
|
\NewDocumentCommand \stmRef { m }
|
|
{
|
|
\cs_if_free:cTF { X@#1: }
|
|
{ 0 } {\use:c {X@#1:} }
|
|
}
|
|
|
|
\seq_clear_new:N \l_fnmk_seq
|
|
\NewDocumentCommand \processFnRef { m }
|
|
{
|
|
\seq_clear:N \l_fnmk_seq
|
|
\clist_map_inline:nn { #1 }
|
|
{ \seq_put_right:Nx \l_fnmk_seq
|
|
{\cs_if_free:cTF { X@##1: } {0} { \use:c {X@##1:} }}
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \fnmark { O{} }
|
|
{ \writemarks { fnau\theau@ } { #1 } }
|
|
|
|
|
|
\NewDocumentCommand \fnref { m }
|
|
{
|
|
\processFnRef { #1 }
|
|
\wrAux { \token_to_str:N \csxdef {mark@fnau\theau@}
|
|
{ \seq_use:Nn \l_fnmk_seq { , } } }
|
|
}
|
|
|
|
\NewDocumentCommand \corref { m }
|
|
{
|
|
\str_set:Nx \l_tmpa_str { \stmRef { #1 } }
|
|
\wrAux { \token_to_str:N \csxdef { mark@corau\theau@ }
|
|
{
|
|
\cs_if_free:cTF { X@#1: } {0} { \use:c {X@#1:} }
|
|
}
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \cormark { O{} }
|
|
{
|
|
\@cormarktrue
|
|
\writemarks {corau\theau@} { #1 }
|
|
}
|
|
|
|
\seq_new:N \l_stm_au_seq
|
|
\seq_new:N \l_stm_au_sn_seq
|
|
\seq_new:N \l_stm_au_fn_seq
|
|
\seq_new:N \l_stm_au_ead_seq
|
|
\seq_new:N \l_stm_au_orcid_seq
|
|
\seq_new:N \l_stm_au_contrib_role_seq
|
|
|
|
\NewDocumentCommand \parsename { m }
|
|
{ \seq_set_split:Nnn \l_stm_au_seq { ~ } {#1}
|
|
\seq_pop_right:NN \l_stm_au_seq \l_stm_au_sn_seq
|
|
\seq_map_inline:Nn \l_stm_au_seq
|
|
{ \seq_put_right:Nx \l_stm_au_ead_seq
|
|
{ \tl_head:n { #1 }. } }
|
|
}
|
|
|
|
\NewDocumentCommand \invparsename { m }
|
|
{ \seq_set_split:Nnn \l_stm_au_seq { ~ } {#1}
|
|
\seq_pop_left:NN \l_stm_au_seq \l_stm_au_sn_seq
|
|
\seq_map_inline:Nn \l_stm_au_seq
|
|
{ \seq_put_right:Nx \l_stm_au_ead_seq
|
|
{ \tl_head:n { #1 }. } }
|
|
}
|
|
|
|
|
|
\NewDocumentCommand \surname {} { \l_stm_au_sn_seq }
|
|
\NewDocumentCommand \firstname {}
|
|
{ \seq_use:Nn \l_stm_au_seq { ~ } }
|
|
\NewDocumentCommand \eadauthor {}
|
|
{ \seq_map_inline:Nn \l_stm_au_seq
|
|
{ \regex_match:nnTF { \. } { ##1 }
|
|
{ ##1 }
|
|
{ \tl_head:n {##1}. }
|
|
}
|
|
{~} \l_stm_au_sn_seq
|
|
}
|
|
\cs_set_eq:NN \shortauthor \eadauthor
|
|
|
|
\seq_clear_new:N \l_affmk_seq
|
|
\NewDocumentCommand \processAffRef { m }
|
|
{
|
|
\seq_clear:N \l_affmk_seq
|
|
\clist_map_inline:nn { #1 }
|
|
{
|
|
\seq_put_right:Nx \l_affmk_seq
|
|
{\stmRef{##1}}
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \processAffNum { m }
|
|
{
|
|
\seq_clear:N \l_affmk_seq
|
|
\clist_map_inline:nn { #1 }
|
|
{
|
|
\seq_put_right:Nn \l_affmk_seq
|
|
{ \int_to_alph:n {##1} }
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \listAff { }
|
|
{
|
|
\tl_if_blank:nTF { \l_affmk_seq }
|
|
{ \tl_gset:Nn \g_stm_comma_tl { 0 } }
|
|
{
|
|
\seq_use:Nn \l_affmk_seq { , }
|
|
\tex_def:D \sep{\unskip,}
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \ead { O{} m }
|
|
{
|
|
\tl_if_empty:nTF { #1 } { \@ead {#2} } { \@uad[#1]{#2} }
|
|
}
|
|
|
|
\NewDocumentCommand \eadsep { } { }
|
|
|
|
\int_new:N \g_ead_int
|
|
\seq_new:N \g_stm_ead_seq
|
|
\int_new:N \g_uad_int
|
|
\seq_new:N \g_stm_uad_seq
|
|
\seq_new:N \g_stm_orcid_seq
|
|
\seq_new:N \g_stm_contrib_role_seq
|
|
|
|
\newcommand\theead { \int_use:N \g_ead_int }
|
|
|
|
\NewDocumentCommand \@uad { O{} m }
|
|
{
|
|
\group_begin:
|
|
\wrAux { \token_to_str:N \urlauthor
|
|
{ \exp_not:n {#2}}{\the\@eadauthor}}%
|
|
\group_end:
|
|
}
|
|
|
|
\NewDocumentCommand \urlauthor { m m }
|
|
{
|
|
\int_gincr:N \g_uad_int
|
|
\seq_gput_right:Nn \g_stm_uad_seq
|
|
{
|
|
{ %\ttfamily \tl_to_str:n
|
|
\url{ #1 } }
|
|
\parsename { #2 }
|
|
\space(\eadauthor)
|
|
}
|
|
}
|
|
\NewDocumentCommand \@stmuads { }
|
|
{ \seq_use:Nn \g_stm_uad_seq { ;~ } }
|
|
|
|
\NewDocumentCommand \@ead { m }
|
|
{
|
|
\group_begin:
|
|
\wrAux { \token_to_str:N \emailauthor
|
|
{ \exp_not:n { #1 }}{ \the\@eadauthor }}
|
|
\group_end:
|
|
}
|
|
|
|
\newtoks \@eadauthor
|
|
\newbool{@cormark}
|
|
|
|
\NewDocumentCommand \emailauthor { m m }
|
|
{
|
|
\int_gincr:N \g_ead_int
|
|
\seq_gput_right:Nn \g_stm_ead_seq
|
|
{
|
|
{ \ttfamily \tl_to_str:n { #1 } }
|
|
\parsename { #2 }
|
|
\space(\eadauthor)%
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \@elseads { }
|
|
{ \seq_use:Nn \g_stm_ead_seq { ;~ } }
|
|
|
|
|
|
\NewDocumentCommand \printemails { }
|
|
{
|
|
\group_begin:
|
|
\int_compare:nNnTF { \int_use:N \g_ead_int } > { 0 }
|
|
{
|
|
\tex_let:D \thefootnote \relax \footnotetext
|
|
{
|
|
\raggedright
|
|
\bool_if:NTF \g_stm_nologo_bool
|
|
{
|
|
\int_compare:nTF { \g_ead_int = 1 }
|
|
{ \textit{Email~address:\c_space_token} }
|
|
{ \textit{Email~addresses:\c_space_token} }
|
|
}
|
|
{ \includegraphics[height=8pt]{thumbnails/cas-email.jpeg}\c_space_token }
|
|
\seq_use:Nn \g_stm_ead_seq { ;~ }
|
|
}
|
|
}
|
|
{ }
|
|
\group_end:
|
|
}
|
|
|
|
\NewDocumentCommand \printurls { }
|
|
{
|
|
\group_begin:
|
|
\int_compare:nTF { \g_uad_int > 0 }
|
|
{
|
|
\tex_let:D \thefootnote \relax \footnotetext
|
|
{
|
|
\raggedright
|
|
\bool_if:NTF \g_stm_nologo_bool
|
|
{ \textit{URL:\c_space_token} }
|
|
{ \includegraphics[height=8pt]{thumbnails/cas-url.jpeg}\c_space_token }
|
|
\seq_use:Nn \g_stm_uad_seq { ;~ }
|
|
}
|
|
}
|
|
{ }
|
|
\group_end:
|
|
}
|
|
|
|
%
|
|
% orcid
|
|
%
|
|
\NewDocumentCommand \orcidauthor { m m }
|
|
{
|
|
\seq_gput_right:Nn \g_stm_orcid_seq
|
|
{
|
|
{ \ttfamily \tl_to_str:n { #1 } }
|
|
\parsename{#2}
|
|
\space(\eadauthor)
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \printorcid { }
|
|
{
|
|
\group_begin:
|
|
\tex_let:D \thefootnote \relax \footnotetext
|
|
{
|
|
\raggedright
|
|
\textsc{orcid}(s):\c_space_token
|
|
\seq_use:Nn \g_stm_orcid_seq { ;~ }
|
|
}
|
|
\group_end:
|
|
}
|
|
|
|
%
|
|
% Contrib Role
|
|
%
|
|
|
|
\seq_gclear_new:N \g_stm_credits_seq
|
|
|
|
\NewDocumentCommand \ContribRole { m }
|
|
{
|
|
\wrAux { \token_to_str:N \creditauthor
|
|
{ #1 } { \the\@eadauthor } }
|
|
}
|
|
|
|
\NewDocumentCommand \creditauthor { m m }
|
|
{
|
|
\seq_gput_right:Nx \g_stm_credits_seq
|
|
{ { \exp_not:N\bfseries #2 :}\space #1 }
|
|
}
|
|
|
|
\cs_set_eq:NN \credit \ContribRole
|
|
|
|
\NewDocumentCommand \printcredits { }
|
|
{
|
|
\seq_if_empty:NF \g_stm_credits_seq
|
|
{
|
|
\section*{CRediT ~authorship ~contribution ~statement}
|
|
\seq_use:Nn \g_stm_credits_seq { .~ }.
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \writemarks { m m }
|
|
{ \wrAux { \token_to_str:N \csgdef{mark@#1}{#2} } }
|
|
|
|
\seq_new:N \g_stm_title_seq
|
|
|
|
\NewDocumentCommand \tnotemark { O{} }
|
|
{ \writemarks { title } { #1 } }
|
|
|
|
\NewDocumentCommand \@tnoteref { m }
|
|
{ \int_set:Nn \l_tmpa_int { 0 }
|
|
\clist_map_inline:nn { #1 }
|
|
{
|
|
% \iow_term:n { ##1 .. [\cs:w X@##1:\cs_end:] }
|
|
\cs_if_free:cTF { X@##1: }
|
|
{ \csdef{X@##1:}{0} }
|
|
{
|
|
\tl_set:Nx \l_tmpa_tl { \cs:w X@##1:\cs_end: }
|
|
\int_case:nn { \l_tmpa_tl }
|
|
{
|
|
{ 1 } { $^\star$ }
|
|
{ 2 } { $^{,\star\star}$ }
|
|
{ 3 } { $^{,\star\star\star}$ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
\seq_new:N \g_stm_tnote_seq
|
|
\int_new:N \g_stm_tnote_int
|
|
|
|
\NewDocumentCommand \tnotetext { O{} m }
|
|
{
|
|
\tl_if_head_eq_catcode:nNTF { #1 } a
|
|
{
|
|
% \iow_term:n { [TNOTE:~alpha] }%
|
|
\seq_gput_right:Nn \g_stm_tnote_seq
|
|
{ \int_incr:N \g_stm_tnote_int
|
|
\str_set:Nx \@currentlabel { \int_use:N \g_stm_tnote_int }
|
|
\stmLabel { #1 }
|
|
\renewcommand\thefootnote
|
|
{ \int_case:nn { \g_stm_tnote_int }
|
|
{
|
|
{ 1 } { $^\star$ }
|
|
{ 2 } { $^{\star\star}$ }
|
|
{ 3 } { $^{\star\star\star}$ }
|
|
}
|
|
}
|
|
\footnotetext { #2 }
|
|
}
|
|
}
|
|
{
|
|
% \iow_term:n { [TNOTE:~Number] }
|
|
\seq_gput_right:Nn \g_stm_tnote_seq
|
|
{
|
|
\int_set:Nn \l_tmpa_int { #1 }
|
|
\renewcommand\thefootnote
|
|
{ \int_case:nn { \l_tmpa_int }
|
|
{
|
|
{ 1 } { $^\star$ }
|
|
{ 2 } { $^{\star\star}$ }
|
|
{ 3 } { $^{\star\star\star}$ }
|
|
}
|
|
}
|
|
\footnotetext { #2 }
|
|
}
|
|
}
|
|
}
|
|
|
|
\newcommand \printtnotes { \seq_use:Nn \g_stm_tnote_seq { \par } }
|
|
|
|
\seq_new:N \g_stm_nonumnote_seq
|
|
|
|
\NewDocumentCommand \nonumnote { m }
|
|
{
|
|
\group_begin:
|
|
\seq_gput_right:Nn \g_stm_nonumnote_seq
|
|
{
|
|
\tex_def:D \thefootnote { }
|
|
\footnotetext{#1}
|
|
}
|
|
\group_end:
|
|
}
|
|
|
|
\newcommand \printnonumnotes { \seq_use:Nn \g_stm_nonumnote_seq { \par } }
|
|
|
|
\seq_new:N \g_stm_fnote_seq
|
|
\int_new:N \g_stm_fnote_int
|
|
|
|
\NewDocumentCommand \fntext { O{} m }
|
|
{
|
|
\tl_if_head_eq_catcode:nNTF { #1 } a
|
|
{
|
|
% \iow_term:n { [FN:~alpha] }%
|
|
\seq_gput_right:Nn \g_stm_fnote_seq
|
|
{ \int_incr:N \g_stm_fnote_int
|
|
\str_set:Nx \@currentlabel { \int_use:N \g_stm_fnote_int }
|
|
\stmLabel { #1 }
|
|
\tex_def:D \thefootnote { \int_use:N \g_stm_fnote_int }
|
|
\footnotetext { #2 }
|
|
}
|
|
}
|
|
{
|
|
% \iow_term:n { [FN:~Number] }
|
|
\seq_gput_right:Nn \g_stm_fnote_seq
|
|
{
|
|
\int_set:Nn \l_tmpa_int { #1 }
|
|
\tex_def:D \thefootnote { \int_use:N \l_tmpa_int }
|
|
\footnotetext { #2 }
|
|
}
|
|
}
|
|
}
|
|
|
|
\newcommand \printfnotes { \seq_use:Nn \g_stm_fnote_seq { \par } }
|
|
|
|
\seq_new:N \g_stm_cor_seq
|
|
\int_new:N \g_stm_cor_int
|
|
|
|
\NewDocumentCommand \cortext { O{} m }
|
|
{
|
|
\tl_if_head_eq_catcode:nNTF { #1 } a
|
|
{
|
|
% \iow_term:n { [COR:~alpha] }%
|
|
\seq_gput_right:Nn \g_stm_cor_seq
|
|
{ \int_incr:N \g_stm_cor_int
|
|
\str_set:Nx \@currentlabel { \int_use:N \g_stm_cor_int }
|
|
\stmLabel { #1 }
|
|
\tex_def:D \thefootnote
|
|
{ \int_case:nn { \g_stm_cor_int }
|
|
{
|
|
{ 1 } { $\ast$ }
|
|
{ 2 } { $\ast\!\ast$ }
|
|
{ 3 } { $\ast\!\ast\!\ast$ }
|
|
}
|
|
}
|
|
\footnotetext { #2 }
|
|
}
|
|
}
|
|
{
|
|
% \iow_term:n { [COR:~Number] }
|
|
\seq_gput_right:Nn \g_stm_cor_seq
|
|
{
|
|
\int_set:Nn \l_tmpa_int { #1 }
|
|
\tex_def:D \thefootnote
|
|
{ \int_case:nn { \l_tmpa_int }
|
|
{
|
|
{ 1 } { $\ast$ }
|
|
{ 2 } { $\ast\!\ast$ }
|
|
{ 3 } { $\ast\!\ast\!\ast$ }
|
|
}
|
|
}
|
|
\footnotetext { #2 }
|
|
}
|
|
}
|
|
}
|
|
|
|
\newcommand \printcornotes { \seq_use:Nn \g_stm_cor_seq { \par } }
|
|
|
|
\NewDocumentCommand \process@marks { }
|
|
{
|
|
\cs_if_free:cTF { mark@corau\theauthor }
|
|
{ \ignorespaces }
|
|
{ \str_set:Nx \l_tmpa_str { \use:c{ mark@corau\theauthor } }
|
|
\int_case:nn { \l_tmpa_str }
|
|
{
|
|
{ 1 } { \sep$\ast$ }
|
|
{ 2 } { \sep$\ast\ast$ }
|
|
{ 3 } { \sep$\ast\!\ast\!\ast$ }
|
|
}
|
|
\tex_def:D \sep{\unskip,}
|
|
}
|
|
\cs_if_free:cTF { mark@fnau\theauthor }
|
|
{ \ignorespaces }
|
|
{ \sep\use:c { mark@fnau\theauthor }
|
|
\tex_def:D \sep{\unskip,}
|
|
}
|
|
}
|
|
|
|
|
|
%
|
|
% Author macros
|
|
%
|
|
\seq_new:c { g_stm_au0_seq }
|
|
\seq_new:c { g_stm_clau0_seq }
|
|
\int_new:N \g_stm_au_int
|
|
\int_new:N \g_stm_aau_int
|
|
|
|
\NewDocumentCommand \ResetMarks { }
|
|
{
|
|
\keys_set:nn { stm / author }
|
|
{
|
|
auid = {} ,
|
|
bioid = {} ,
|
|
alt = {} ,
|
|
style = { normal } ,
|
|
prefix = {} ,
|
|
suffix = {} ,
|
|
degree = {} ,
|
|
role = {} ,
|
|
orcid = {} ,
|
|
collab = { false } ,
|
|
type = { author } ,
|
|
anon = { false } ,
|
|
deceased = { false } ,
|
|
twitter = {} ,
|
|
facebook = {} ,
|
|
linkedin = {} ,
|
|
plus = {} ,
|
|
gplus = {} ,
|
|
}
|
|
\tex_gdef:D \sep{}
|
|
\tex_gdef:D \stm@corref{}
|
|
\tex_gdef:D \@fnmark {}
|
|
}
|
|
|
|
|
|
\int_new:N \l_autype_int
|
|
\keys_define:nn { stm / author }
|
|
{
|
|
auid .tl_set:N = \l_stm_au_id_tl ,
|
|
bioid .tl_set:N = \l_stm_au_bioid_tl ,
|
|
alt .tl_set:N = \l_stm_au_alt_tl ,
|
|
style .tl_set:N = \l_stm_au_style_tl ,
|
|
prefix .tl_set:N = \l_stm_au_prefix_tl ,
|
|
suffix .tl_set:N = \l_stm_au_suffix_tl ,
|
|
degree .tl_set:N = \l_stm_au_degree_tl ,
|
|
role .tl_set:N = \l_stm_au_role_tl ,
|
|
orcid .tl_set:N = \l_stm_au_orcid_tl ,
|
|
collab .bool_set:N = \l_stm_au_collab_bool ,
|
|
type .multichoice:,
|
|
type/author .code:n = { \int_set:Nn \l_autype_int { 0 } },
|
|
type/editor .code:n = { \int_set:Nn \l_autype_int { 1 } },
|
|
type/collab .code:n = { \int_set:Nn \l_autype_int { 2 } },
|
|
type/anon .code:n = { \int_set:Nn \l_autype_int { 3 } },
|
|
% type/collab .bool_set:N = \l_stm_au_collab_bool ,
|
|
% type/anon .bool_set:N = \l_stm_au_anon_bool ,
|
|
anon .bool_set:N = \l_stm_au_anon_bool ,
|
|
deceased .bool_set:N = \l_stm_au_deceased_bool ,
|
|
twitter .tl_set:N = \l_stm_au_twitter_tl ,
|
|
facebook .tl_set:N = \l_stm_au_facebook_tl ,
|
|
linkedin .tl_set:N = \l_stm_au_linkedin_tl ,
|
|
plus .tl_set:N = \l_stm_au_gplus_tl ,
|
|
gplus .tl_set:N = \l_stm_au_gplus_tl ,
|
|
}
|
|
|
|
\keys_set:nn { stm / author }
|
|
{
|
|
auid = {} ,
|
|
bioid = {} ,
|
|
alt = {} ,
|
|
style = { normal } ,
|
|
prefix = {} ,
|
|
suffix = {} ,
|
|
degree = {} ,
|
|
role = {} ,
|
|
orcid = {} ,
|
|
collab = { false } ,
|
|
type = { author } ,
|
|
anon = { false } ,
|
|
deceased = { false } ,
|
|
twitter = {} ,
|
|
facebook = {} ,
|
|
linkedin = {} ,
|
|
plus = {} ,
|
|
gplus = {} ,
|
|
}
|
|
|
|
\keys_define:nn { stm / ausetup }
|
|
{
|
|
type .choice: ,
|
|
type / authors .meta:n =
|
|
{
|
|
size = \large ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
before = \bigskipamount ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
color = black ,
|
|
lskip = 0pt ,
|
|
rskip = 0pt ,
|
|
} ,
|
|
type / collaboration .meta:n =
|
|
{
|
|
size = \Large ,
|
|
shape = \upshape ,
|
|
weight = \mdseries ,
|
|
before = \bigskipamount ,
|
|
after = 0pt ,
|
|
align = \raggedright ,
|
|
color = black ,
|
|
lskip = 0pt ,
|
|
rskip = 0pt ,
|
|
} ,
|
|
size .tl_set:N = \l_stm_augroup_size_tl ,
|
|
shape .tl_set:N = \l_stm_augroup_shape_tl ,
|
|
weight .tl_set:N = \l_stm_augroup_weight_tl ,
|
|
before .dim_set:N = \l_stm_augroup_before_dim ,
|
|
after .dim_set:N = \l_stm_augroup_after_dim ,
|
|
align .tl_set:N = \l_stm_augroup_align_tl ,
|
|
color .tl_set:N = \l_stm_augroup_color_tl ,
|
|
lskip .dim_set:N = \l_stm_augroup_lskip_tl ,
|
|
rskip .dim_set:N = \l_stm_augroup_rskip_tl ,
|
|
}
|
|
|
|
\DeclareDocumentCommand \stmAuthorSetup { m }
|
|
{ \keys_set:nn { stm / ausetup } { #1 } }
|
|
\DeclareDocumentCommand \stmausetup { m }
|
|
{ \tl_set:Nn \l_stm_au_setup_tl
|
|
{ \keys_set:nn { stm / ausetup } { #1 } }
|
|
}
|
|
\DeclareDocumentCommand \stmclbsetup { m }
|
|
{ \tl_set:Nn \l_stm_clb_setup_tl
|
|
{ \keys_set:nn { stm / ausetup } { #1 } }
|
|
}
|
|
|
|
\stmausetup { }
|
|
\stmclbsetup { }
|
|
|
|
\seq_new:N \g_stm_maltese_seq
|
|
\seq_new:N \g_stm_facebook_seq
|
|
\seq_new:N \g_stm_twitter_seq
|
|
\seq_new:N \g_stm_gplus_seq
|
|
\seq_new:N \g_stm_linkedin_seq
|
|
\bool_new:N \g_stm_nologo_bool
|
|
\bool_gset_false:N \g_stm_nologo_bool
|
|
|
|
\NewDocumentCommand \twitterauthor { m m }
|
|
{
|
|
\seq_gput_right:Nn \g_stm_twitter_seq
|
|
{
|
|
\parsename { #2 }
|
|
\url{https://twitter.com/\tl_to_str:n{#1}}\space(\eadauthor)
|
|
}
|
|
}
|
|
\NewDocumentCommand \facebookauthor { m m }
|
|
{
|
|
\seq_gput_right:Nn \g_stm_facebook_seq
|
|
{
|
|
\parsename { #2 }
|
|
\url{https://www.facebook.com/\tl_to_str:n{#1}}\space(\eadauthor) %
|
|
}
|
|
}
|
|
\NewDocumentCommand \gplusauthor { m m }
|
|
{
|
|
\seq_gput_right:Nn \g_stm_gplus_seq
|
|
{
|
|
\parsename { #2 }
|
|
\url{https://plus.google.com/\tl_to_str:n{#1}}\space(\eadauthor)%
|
|
}
|
|
}
|
|
\NewDocumentCommand \linkedinauthor { m m }
|
|
{
|
|
\seq_gput_right:Nn \g_stm_linkedin_seq
|
|
{
|
|
\parsename { #2 }
|
|
\url{https://www.linkedin.com/profile/view?id=\tl_to_str:n{#1}}%
|
|
\space(\eadauthor)
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \printmaltese { }
|
|
{
|
|
\seq_use:Nn { \g_stm_maltese_seq } { }
|
|
}
|
|
\NewDocumentCommand \printfacebook { }
|
|
{
|
|
\seq_if_empty:NTF \g_stm_facebook_seq { }
|
|
{
|
|
\tex_def:D \thefootnote{}
|
|
\footnotetext
|
|
{
|
|
\bool_if:NTF \g_stm_nologo_bool
|
|
{ Facebook:\c_space_token }
|
|
{ \includegraphics[height=8pt]{thumbnails/cas-facebook.jpeg}\c_space_token }
|
|
\seq_use:Nn \g_stm_facebook_seq {,\c_space_token }
|
|
}
|
|
}
|
|
}
|
|
\NewDocumentCommand \printtwitter { }
|
|
{
|
|
\seq_if_empty:NTF \g_stm_twitter_seq { }
|
|
{
|
|
\tex_def:D \thefootnote{}
|
|
\footnotetext
|
|
{
|
|
\bool_if:NTF \g_stm_nologo_bool
|
|
{ Twitter:\c_space_token }
|
|
{ \includegraphics[height=8pt]{thumbnails/cas-twitter.jpeg}\c_space_token }
|
|
\seq_use:Nn \g_stm_twitter_seq {,\c_space_token }
|
|
}
|
|
}
|
|
}
|
|
\NewDocumentCommand \printgplus { }
|
|
{
|
|
\seq_if_empty:NTF \g_stm_gplus_seq { }
|
|
{
|
|
\tex_def:D \thefootnote{}
|
|
\footnotetext
|
|
{
|
|
\bool_if:NTF \g_stm_nologo_bool
|
|
{ Google+:\c_space_token }
|
|
{ \includegraphics[height=8pt]{thumbnails/cas-gplus.jpeg}\c_space_token }
|
|
\seq_use:Nn \g_stm_gplus_seq {,\c_space_token }
|
|
}
|
|
}
|
|
}
|
|
\NewDocumentCommand \printlinkedin { }
|
|
{
|
|
\seq_if_empty:NTF \g_stm_linkedin_seq { }
|
|
{
|
|
\tex_def:D \thefootnote{}
|
|
\footnotetext
|
|
{
|
|
\bool_if:NTF \g_stm_nologo_bool
|
|
{ LinkedIn:\c_space_token }
|
|
{ \includegraphics[height=8pt]{thumbnails/cas-linkedin.jpeg}\c_space_token }
|
|
\seq_use:Nn \g_stm_linkedin_seq {,\c_space_token }
|
|
}
|
|
}
|
|
}
|
|
|
|
\seq_new:N \g_stm_prelimsau_seq
|
|
|
|
\csxdef{infoauthors}{}
|
|
\cs_new:Nn \no_break_space: { \nobreak{~} \penalty 10000 }
|
|
\RenewDocumentCommand \author { O{} m O{} }
|
|
{
|
|
\ResetMarks
|
|
\tl_if_blank:nTF { #3 } { }
|
|
{ \keys_set:nn { stm / author } { #3 } }
|
|
%
|
|
\int_gincr:N \g_stm_au_int
|
|
\tex_gdef:D \theau@ { \int_use:N \g_stm_au_int }
|
|
%
|
|
\seq_gput_right:Nn \g_stm_prelimsau_seq { #2 }
|
|
\bool_if:NTF \l_stm_au_collab_bool
|
|
{ \seq_gput_right:cn { g_stm_clau\int_use:N \g_stm_augr_int _seq } }
|
|
{ \seq_gput_right:cn { g_stm_au\int_use:N \g_stm_augr_int _seq } }
|
|
{
|
|
\int_gincr:N \g_stm_aau_int
|
|
\tex_gdef:D \theauthor {\int_use:N \g_stm_aau_int }
|
|
\keys_set:nn { stm /author } { #3 }
|
|
\tl_if_head_eq_catcode:nNTF { #1 } a
|
|
{ \processAffRef { #1 } }
|
|
{ \processAffNum { #1 } }
|
|
\tl_if_empty:NF \l_stm_au_prefix
|
|
{ \l_stm_au_prefix_tl \c_space_token }
|
|
\str_if_eq:VnTF \l_stm_au_style_tl { chinese }
|
|
{ %\iow_term:n {STYLE~T=\l_stm_au_style_tl........}
|
|
\invparsename { #2 }
|
|
\textcolor{\l_stm_augroup_color_tl}{\surname}
|
|
\no_break_space:
|
|
\textcolor{\l_stm_augroup_color_tl !50}{\firstname}
|
|
}
|
|
{ %\iow_term:n {STYLE~F=\l_stm_au_style_tl........}
|
|
\parsename { #2 }
|
|
\textcolor{\l_stm_augroup_color_tl !50}{\firstname}
|
|
\no_break_space:
|
|
\textcolor{\l_stm_augroup_color_tl}{\surname}
|
|
}
|
|
\tl_if_empty:NF \l_stm_au_suffix_tl
|
|
{ \c_space_token \l_stm_au_suffix_tl }
|
|
\unskip
|
|
\textsuperscript
|
|
{
|
|
\tl_if_blank:nTF { #1 }
|
|
{ \tex_def:D \sep{} }
|
|
{ {\itshape\listAff} \tex_def:D \sep{\unskip,} }
|
|
\process@marks
|
|
\bool_if:NT \l_stm_au_deceased_bool
|
|
{ \sep \maltese
|
|
\tex_def:D \sep { \unksip, }
|
|
}
|
|
}
|
|
\tl_if_empty:NF \l_stm_au_degree_tl
|
|
{ ,\c_space_token \l_stm_au_degree_tl }
|
|
\tl_if_empty:NF \l_stm_au_role_tl
|
|
{ \c_space_token (\l_stm_au_role_tl) }
|
|
%
|
|
\ResetMarks
|
|
}
|
|
%
|
|
\bool_if:NT \l_stm_au_deceased_bool
|
|
{
|
|
\seq_gput_right:Nn \g_stm_maltese_seq
|
|
{
|
|
\tex_def:D \thefootnote { \maltese }
|
|
\footnotetext{Deceased~author.}
|
|
}
|
|
}
|
|
% various social media
|
|
\tl_if_empty:NTF \l_stm_au_facebook_tl { }
|
|
{
|
|
\wrAux { \token_to_str:N \facebookauthor
|
|
{ \l_stm_au_facebook_tl } { \exp_not:n {#2} } }
|
|
}
|
|
\tl_if_empty:NF \l_stm_au_twitter_tl
|
|
{
|
|
\wrAux { \token_to_str:N \twitterauthor
|
|
{ \l_stm_au_twitter_tl } { \exp_not:n {#2} } }
|
|
}
|
|
\tl_if_empty:NF \l_stm_au_gplus_tl
|
|
{
|
|
\wrAux { \token_to_str:N \gplusauthor
|
|
{ \l_stm_au_gplus_tl } { \exp_not:n {#2} } }
|
|
}
|
|
\tl_if_empty:NF \l_stm_au_linkedin_tl
|
|
{
|
|
\wrAux { \token_to_str:N \linkedinauthor
|
|
{ \l_stm_au_linkedin_tl } { \exp_not:n {#2} } }
|
|
}
|
|
\tl_if_empty:NF \l_stm_au_orcid_tl
|
|
{
|
|
\wrAux { \token_to_str:N \orcidauthor
|
|
{ \l_stm_au_orcid_tl } { \exp_not:n {#2} } }
|
|
}
|
|
%
|
|
\@eadauthor={#2}
|
|
\pdfstringdef\__info_au: { #2 }
|
|
\int_compare:nNnTF { \theau@ } < { 4 }
|
|
{ \xappto \infoauthors { \__info_au: , ~ } }
|
|
{
|
|
\int_compare:nNnTF { \theau@ } = { 4 }
|
|
{ \xappto \infoauthors { et~al. } }
|
|
{ }
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \stmauthors { }
|
|
{
|
|
\group_begin:
|
|
\stmAuthorSetup { type = authors }
|
|
\l_stm_au_setup_tl
|
|
\par \vskip\l_stm_augroup_before_dim
|
|
\l_stm_augroup_align_tl
|
|
\l_stm_augroup_size_tl
|
|
\l_stm_augroup_shape_tl
|
|
\l_stm_augroup_weight_tl
|
|
\color{ \l_stm_augroup_color_tl }
|
|
\bool_if:NTF \g_stm_augr_bool
|
|
{ \seq_use:Nn \g_stm_augr_seq { \par } }
|
|
{
|
|
\seq_use:cnnn { g_stm_au\int_use:N\g_stm_augr_int _seq }
|
|
{ ,~ } { ,~ } { ~and~ }
|
|
}
|
|
\par\vskip\l_stm_augroup_after_dim
|
|
\group_end:
|
|
}
|
|
|
|
\seq_new:c { g_stm_collab0_seq }
|
|
\bool_new:N \g_stm_in_clau_bool
|
|
|
|
\NewDocumentCommand \stmcollab { }
|
|
{
|
|
\bool_if:NTF \g_stm_augr_bool
|
|
{ }
|
|
{
|
|
\group_begin:
|
|
\stmAuthorSetup { type = collaboration }
|
|
\l_stm_clb_setup_tl
|
|
\par \vskip \l_stm_augroup_before_dim
|
|
\l_stm_augroup_align_tl
|
|
\l_stm_augroup_size_tl
|
|
\l_stm_augroup_shape_tl
|
|
\l_stm_augroup_weight_tl
|
|
\color{ \l_stm_augroup_color_tl }
|
|
\seq_use:cn {g_stm_collab\int_use:N \g_stm_aaugr_int _seq} { }
|
|
\seq_use:cnnn {g_stm_clau\int_use:N \g_stm_aaugr_int _seq}
|
|
{ ~and~ } { ,~ } { ~and~ }
|
|
\par \vskip \l_stm_augroup_after_dim
|
|
\group_end:
|
|
}
|
|
}
|
|
|
|
\newenvironment{collaboration}[1][]
|
|
{
|
|
\seq_gput_right:cn {g_stm_collab\int_use:N \g_stm_augr_int _seq}
|
|
{ \textit{Collaboration:~} #1 \par \smallskip }
|
|
}
|
|
{ }
|
|
|
|
\NewDocumentCommand \dept { m } { #1 }
|
|
\NewDocumentCommand \divn { m } { #1 }
|
|
\NewDocumentCommand \aline { m } { #1 }
|
|
\NewDocumentCommand \city { m } { #1 }
|
|
\NewDocumentCommand \cnty { m } { #1 }
|
|
\NewDocumentCommand \phone { m } { #1 }
|
|
\NewDocumentCommand \fax { m } { #1 }
|
|
\NewDocumentCommand \aurl { m } { #1 }
|
|
|
|
\seq_new:c { g_stm_aff0_seq }
|
|
\int_new:N \g_stm_aff_int
|
|
\tl_new:N \l_addrtype_tl
|
|
|
|
\keys_define:nn { stm / address }
|
|
{
|
|
foot .bool_gset:N = \g_stm_addr_foot_bool ,
|
|
name .tl_set:N = \l_stm_addr_name_tl ,
|
|
type .multichoice: ,
|
|
type/alt .code:n = { \tl_set:Nn \l_stm_addr_type_tl
|
|
{ Alternate~address } } ,
|
|
type/addl .code:n = { \tl_set:Nn \l_stm_addr_type_tl
|
|
{ Additional~address } } ,
|
|
type/regular .code:n = { \tl_set:Nn \l_stm_addr_type_tl
|
|
{ } } ,
|
|
type/custom .code:n = { \tl_set:Nn \l_stm_addr_type_tl
|
|
{ \l_stm_addr_name_tl } } ,
|
|
}
|
|
\DeclareDocumentCommand \stmAddrSetup { m }
|
|
{ \keys_set:nn { stm / address } { #1 } }
|
|
|
|
\keys_set:nn { stm / address }
|
|
{
|
|
foot = { false } ,
|
|
type = { regular } ,
|
|
name = { Alternate~address } ,
|
|
}
|
|
|
|
\cs_new:Nn \__reset_addr:
|
|
{
|
|
\bool_gset_false:N \g_stm_addr_foot_bool
|
|
\tl_set:Nn \l_stm_addr_type_tl { }
|
|
\tl_set:Nn \l_stm_addr_name_tl { Alternate~address }
|
|
}
|
|
|
|
\seq_new:N \g_stm_aff_foot_seq
|
|
|
|
\NewDocumentCommand \printaddrinfoot { }
|
|
{
|
|
{ \seq_use:Nn \g_stm_aff_foot_seq { \par } }
|
|
}
|
|
|
|
\NewDocumentCommand \address { O{} m O{} }
|
|
{
|
|
\__reset_addr:
|
|
\keys_set:nn { stm / address } { #3 }
|
|
\bool_if:NTF \g_stm_addr_foot_bool
|
|
{ \__foot_address:nnn [#1]{#2}[#3] }
|
|
{
|
|
\seq_gput_right:cn { g_stm_aff\int_use:N \g_stm_augr_int _seq }
|
|
{ \tl_if_blank:nTF { #1 }
|
|
{
|
|
\tex_xdef:D \thefootnote{}
|
|
{ #2 }
|
|
}
|
|
{
|
|
\tl_if_head_eq_catcode:nNTF { #1 } a
|
|
{
|
|
\int_gincr:N \g_stm_aff_int
|
|
\tex_xdef:D \@currentlabel
|
|
{ \int_to_alph:n { \int_use:N \g_stm_aff_int } }
|
|
\stmLabel {#1}
|
|
\textsuperscript{\itshape\@currentlabel} #2
|
|
}
|
|
{
|
|
\int_gset:Nn \g_stm_aff_int { #1 }
|
|
\tex_xdef:D \@currentlabel
|
|
{ \int_to_alph:n { \int_use:N \g_stm_aff_int } }
|
|
\textsuperscript{\itshape\@currentlabel} #2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_new:Npn \__foot_address:nnn [#1]#2[#3]
|
|
{
|
|
\keys_set:nn { stm / address } { #3 }
|
|
\seq_gput_right:cn { g_stm_aff_foot_seq }
|
|
{
|
|
\tl_if_empty:nTF { #1 }
|
|
{
|
|
\tl_if_empty:NTF \l_stm_addr_type_tl
|
|
{ \footnotetext{#2} }
|
|
{
|
|
\footnotetext{\textit{\l_stm_addr_type_tl}:
|
|
\c_space_token #2 }
|
|
}
|
|
}
|
|
{
|
|
\tl_if_head_eq_catcode:nNTF { #1 } a
|
|
%
|
|
{
|
|
\tex_def:D \thefootnote{\itshape\@currentlabel}
|
|
\tl_if_empty:NTF \l_stm_addr_type_tl
|
|
{ \footnotetext{#2} }
|
|
{ \footnotetext{\textit{\l_stm_addr_type_tl}: \c_space_token #2} }
|
|
}
|
|
{
|
|
\tex_def:D \thefootnote { \itshape\int_to_alph:n { #1 } }
|
|
\tl_if_empty:NTF \l_stm_addr_type_tl
|
|
{ \footnotetext{#2} }
|
|
{ \footnotetext{\textit{\l_stm_addr_type_tl}:
|
|
\c_space_token #2 } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
\keys_define:nn { stm / affsetup }
|
|
{
|
|
type .choice: ,
|
|
type / normal .code:n =
|
|
{ \tl_set:Nn \l_stm_aff_type_tl { 0 } } ,
|
|
type / nonum .code:n =
|
|
{ \tl_set:Nn \l_stm_aff_type_tl { 1 } } ,
|
|
|
|
size .tl_set:N = \l_stm_aff_size_tl ,
|
|
shape .tl_set:N = \l_stm_aff_shape_tl ,
|
|
weight .tl_set:N = \l_stm_aff_weight_tl ,
|
|
before .dim_set:N = \l_stm_aff_before_dim ,
|
|
after .dim_set:N = \l_stm_aff_after_dim ,
|
|
align .tl_set:N = \l_stm_aff_align_tl ,
|
|
color .tl_set:N = \l_stm_aff_color_tl ,
|
|
lskip .dim_set:N = \l_stm_aff_lskip_dim ,
|
|
rskip .dim_set:N = \l_stm_aff_rskip_dim ,
|
|
}
|
|
|
|
\DeclareDocumentCommand \stmAffSetup { m }
|
|
{ \keys_set:nn { stm / affsetup } { #1 } }
|
|
\DeclareDocumentCommand \stmaffsetup { m }
|
|
{ \tl_set:Nn \l_stm_aff_setup_tl
|
|
{ \keys_set:nn { stm / affsetup } { #1 } }
|
|
}
|
|
\stmaffsetup {
|
|
size = \footnotesize,
|
|
shape = \itshape,
|
|
color = black,
|
|
before = 0pt,
|
|
weight = \mdseries,
|
|
align = \raggedright,
|
|
}
|
|
|
|
\NewDocumentCommand \stmaddress { }
|
|
{
|
|
\bool_if:NTF \g_stm_augr_bool
|
|
{ }
|
|
{
|
|
\group_begin:
|
|
\stmAffSetup { type = normal }
|
|
\l_stm_aff_setup_tl
|
|
\par \vskip\l_stm_aff_before_dim
|
|
\l_stm_aff_align_tl
|
|
\l_stm_aff_size_tl
|
|
\l_stm_aff_shape_tl
|
|
\l_stm_aff_weight_tl
|
|
\color{ \l_stm_aff_color_tl }
|
|
\seq_use:cn { g_stm_aff\int_use:N \g_stm_aaugr_int _seq }
|
|
{ \par\vskip2pt }
|
|
\par\vskip\l_stm_aff_after_dim
|
|
\group_end:
|
|
}
|
|
}
|
|
|
|
\int_new:N \g_stm_augr_int
|
|
\seq_new:N \g_stm_augr_seq
|
|
\int_new:N \g_stm_aaugr_int
|
|
\bool_new:N \g_stm_augr_bool
|
|
|
|
\NewDocumentEnvironment { augroup } { }
|
|
{
|
|
\bool_gset_true:N \g_stm_augr_bool
|
|
\int_gincr:N \g_stm_augr_int
|
|
\seq_new:c {g_stm_au\int_use:N \g_stm_augr_int _seq}
|
|
\seq_new:c {g_stm_aff\int_use:N \g_stm_augr_int _seq}
|
|
\seq_new:c {g_stm_collab\int_use:N \g_stm_augr_int _seq}
|
|
\seq_new:c {g_stm_clau\int_use:N \g_stm_augr_int _seq}
|
|
% \iow_term:n { AUGR:~\int_use:N \g_stm_augr_int ... }
|
|
}
|
|
{
|
|
\seq_gput_right:Nn \g_stm_augr_seq
|
|
{
|
|
\int_gincr:N \g_stm_aaugr_int
|
|
\group_begin:
|
|
\stmAuthorSetup { type = collaboration }
|
|
\l_stm_clb_setup_tl
|
|
\par \vskip \l_stm_augroup_before_dim
|
|
\l_stm_augroup_align_tl
|
|
\l_stm_augroup_size_tl
|
|
\l_stm_augroup_shape_tl
|
|
\l_stm_augroup_weight_tl
|
|
\color{ \l_stm_augroup_color_tl }
|
|
\seq_use:cnnn { g_stm_au\int_use:N \g_stm_aaugr_int _seq }
|
|
{ ~and~ } { ,~ } { ~and~ }
|
|
\par \vskip \l_stm_augroup_after_dim
|
|
\group_end:
|
|
%
|
|
\group_begin:
|
|
\stmAffSetup { type = normal }
|
|
\l_stm_aff_setup_tl
|
|
\par \vskip\l_stm_aff_before_dim
|
|
\l_stm_aff_align_tl
|
|
\l_stm_aff_size_tl
|
|
\l_stm_aff_shape_tl
|
|
\l_stm_aff_weight_tl
|
|
\color{ \l_stm_aff_color_tl }
|
|
\seq_use:cn { g_stm_aff\int_use:N \g_stm_aaugr_int _seq }
|
|
{ \par \smallskip }
|
|
\par\vskip\l_stm_aff_after_dim
|
|
% \iow_term:n { AAUGR:~\int_use:N \g_stm_aaugr_int ... }
|
|
\group_end:
|
|
%
|
|
\group_begin:
|
|
\stmAuthorSetup { type = collaboration }
|
|
\l_stm_clb_setup_tl
|
|
\par \vskip \l_stm_augroup_before_dim
|
|
\l_stm_augroup_align_tl
|
|
\l_stm_augroup_size_tl
|
|
\l_stm_augroup_shape_tl
|
|
\l_stm_augroup_weight_tl
|
|
\color{ \l_stm_augroup_color_tl }
|
|
\seq_use:cn {g_stm_collab\int_use:N \g_stm_aaugr_int _seq} { }
|
|
\seq_use:cnnn {g_stm_clau\int_use:N \g_stm_aaugr_int _seq}
|
|
{ ~and~ } { ,~ } { ~and~ }
|
|
\par\vskip \l_stm_augroup_after_dim
|
|
\group_end:
|
|
}
|
|
}
|
|
|
|
%
|
|
% Abstract
|
|
%
|
|
\RequirePackage{moreverb}
|
|
|
|
\tex_gdef:D \abstractname { A\,B\,S\,T\,R\,A\,C\,T }
|
|
\tl_new:N \l_stm_abs_title_tl
|
|
\box_new:N \g_stm_abs_box
|
|
|
|
\NewDocumentEnvironment { Abstract } { o }
|
|
{
|
|
% \global\setbox \g_stm_abs_box = \vtop \bgroup
|
|
% \hsize = .65 \textwidth \parindent \z@
|
|
\group_begin:
|
|
\IfNoValueTF { #1 } { }
|
|
{ \tex_gdef:D \abstractname { #1 } }
|
|
\parindent \z@
|
|
\box_if_empty:NTF \g_stm_key_box
|
|
{ \leftskip = .35 \textwidth }
|
|
{
|
|
\dim_gset:Nn \l_tmpa_dim { \box_ht:N \g_stm_key_box }
|
|
\dim_gadd:Nn \l_tmpa_dim { \box_dp:N \g_stm_key_box }
|
|
\leftskip .35\textwidth
|
|
\hspace*{-.35 \textwidth }
|
|
\noindent\hbox_to_wd:nn { \z@ } { \box \g_stm_key_box }
|
|
\skip_vertical:n { - \l_tmpa_dim }
|
|
}
|
|
\noindent \abstractname \par
|
|
\skip_vertical:n { -4pt}
|
|
\noindent \rule{.65\textwidth}{.2pt}\par \footnotesize
|
|
\ignorespaces \everypar { \parindent=1.5em }
|
|
}
|
|
{ \par \group_end: }
|
|
|
|
\NewDocumentEnvironment { PrelimsAbstract } { O{} }
|
|
{\parindent=0pt
|
|
{ \fontsize{14pt}{16pt}\selectfont #1 }\par
|
|
\vskip12pt
|
|
{ \fontsize{12pt}{14pt}\bfseries\selectfont\casprelimstitle } \par
|
|
\vskip6pt
|
|
\seq_use:Nn \g_stm_prelimsau_seq { , }
|
|
\vskip12pt
|
|
\par
|
|
}
|
|
{}
|
|
|
|
\RenewDocumentEnvironment { abstract } { o }
|
|
{
|
|
\IfNoValueTF { #1 } { }
|
|
{ \tex_gdef:D \abstracttitle { #1 } }
|
|
\verbatimwrite{\jobname.abs}
|
|
}
|
|
{ \endverbatimwrite }
|
|
|
|
\newbox\casgrabsbox
|
|
\newbox\casauhlbox
|
|
\newbool { usecasgrabsbox }
|
|
\newbool { usecashlsbox }
|
|
|
|
\DeclareDocumentEnvironment { graphicalabstract } { O{Graphical~Abstract} }
|
|
{
|
|
\global \booltrue { usecasgrabsbox }
|
|
\global\setbox\casgrabsbox=\vbox\bgroup
|
|
\begin{PrelimsAbstract}[#1]
|
|
\noindent \ignorespaces
|
|
}
|
|
{
|
|
\end{PrelimsAbstract}
|
|
\egroup
|
|
}
|
|
|
|
\DeclareDocumentEnvironment { highlights } { O{Highlights} }
|
|
{
|
|
\global \booltrue { usecashlsbox }
|
|
\global\setbox\casauhlbox=\vbox\bgroup
|
|
\begin{PrelimsAbstract}[#1]
|
|
\noindent \ignorespaces
|
|
\begin{itemize}
|
|
}
|
|
{
|
|
\end{itemize}
|
|
\end{PrelimsAbstract}
|
|
\egroup
|
|
}
|
|
|
|
|
|
\NewDocumentCommand \dashrule { O{.4pt} m m }
|
|
{
|
|
\color{black!50}
|
|
\skip_vertical:n { #2 }
|
|
\noindent \rule { \linewidth } { #1}
|
|
\normalcolor \skip_vertical:n { #3 }
|
|
}
|
|
|
|
\NewDocumentCommand \keywordtitle { } { Keywords }
|
|
\NewDocumentCommand \keywordtitlesep { } {:\c_space_token }
|
|
\box_new:N \g_stm_key_box
|
|
|
|
\NewDocumentCommand \MSC { O{} m }
|
|
{
|
|
\par\noindent \textit { #1\c_space_token MSC:\c_space_token } #2
|
|
}
|
|
\NewDocumentCommand \JEL { m }
|
|
{
|
|
\par\noindent \textit { JEL:\c_space_token } #1
|
|
}
|
|
\NewDocumentCommand \PACS { m }
|
|
{
|
|
\par\noindent \textit { PACS:\c_space_token } #1
|
|
}
|
|
|
|
\NewDocumentEnvironment { keywords } { O{ Keywords } }
|
|
{
|
|
\tex_global:D \tex_setbox:D \g_stm_key_box = \vtop \bgroup
|
|
\hsize=.25 \textwidth
|
|
\cs_new:Nn \sep: { \par }
|
|
\cs_set_eq:NN \sep \sep:
|
|
\parindent \z@
|
|
A\,R\,T\,I\,C\,L\,E\ \ I\,N\,F\,O \par \skip_vertical:n { -3pt }
|
|
\rule{.25 \textwidth}{.2pt}\par\footnotesize
|
|
\noindent \textit { #1 }: \par
|
|
}
|
|
{ \egroup }
|
|
|
|
|
|
%
|
|
% Print all footnotes in the title page
|
|
%
|
|
|
|
\bool_new:N \g_stm_longmktitle_bool
|
|
\int_new:N \g_stm_jtype_int
|
|
\int_new:N \g_stm_blind_int
|
|
|
|
\NewDocumentCommand \printFirstPageNotes { }
|
|
{
|
|
\bool_if:NTF \g_stm_longmktitle_bool
|
|
{ \tex_let:D \columnwidth = \textwidth }
|
|
{ }
|
|
\int_compare:nTF { \g_stm_jtype_int > 5 }
|
|
{ \stmaddress }
|
|
{ }
|
|
\printtnotes
|
|
\printnonumnotes
|
|
\bool_if:NTF \g_stm_blind_bool
|
|
{ }
|
|
{
|
|
\printcornotes
|
|
\printmaltese
|
|
\printaddrinfoot
|
|
\printemails
|
|
\printurls
|
|
\printorcid
|
|
\printfacebook
|
|
\printtwitter
|
|
\printgplus
|
|
\printlinkedin
|
|
\printfnotes
|
|
}
|
|
\bool_if:NTF \g_stm_longmktitle_bool
|
|
{
|
|
\if@twocolumn
|
|
\tex_let:D \columnwidth = \Columnwidth \fi
|
|
}
|
|
{ }
|
|
\normalcolor
|
|
}
|
|
|
|
%
|
|
% Date History
|
|
%
|
|
\tl_new:N \g_stm_recd_tl
|
|
\tl_new:N \g_stm_accd_tl
|
|
\tl_new:N \g_stm_revd_tl
|
|
\tl_new:N \g_stm_pub_online_tl
|
|
\tl_new:N \g_stm_pub_print_tl
|
|
|
|
\cs_new:Npn \date_parse:n #1 { \date_parse_aux:w #1 \q_stop }
|
|
\cs_new:Npn \date_parse_aux:w #1 / #2 / #3 \q_stop
|
|
{ <do something with the date> }
|
|
|
|
\NewDocumentCommand \received { m }
|
|
{ \tl_gput_right:Nn \g_stm_recd_tl { #1 } }
|
|
\NewDocumentCommand \accepted { m }
|
|
{ \tl_gput_right:Nn \g_stm_accd_tl { #1 } }
|
|
\NewDocumentCommand \revised { m }
|
|
{ \tl_gput_right:Nn \g_stm_revd_tl { #1 } }
|
|
\NewDocumentCommand \published { O{} m }
|
|
{
|
|
\tl_if_eq:nnTF { #1 } { online }
|
|
{ \tl_if_gput_right:Nn \g_stm_pub_online_tl { #2 } }
|
|
{ \tl_if_gput_right:Nn \g_stm_pub_print_tl { #2 } }
|
|
}
|
|
|
|
%
|
|
% Verse/Recto
|
|
%
|
|
\tl_new:N \l_stm_verso_tl
|
|
\tl_new:N \l_stm_recto_tl
|
|
|
|
\NewDocumentCommand \verso { m }
|
|
{ \tl_set:Nn \l_stm_verso_tl { #1 } }
|
|
\NewDocumentCommand \recto { m }
|
|
{ \tl_set:Nn \l_stm_recto_tl { #1 } }
|
|
|
|
%
|
|
% Maketitle
|
|
%
|
|
|
|
\newcounter{au}
|
|
\newcounter{cnote}
|
|
\newcounter{tnote}
|
|
\newcounter{fnote}
|
|
\newcounter{aff}
|
|
|
|
\cs_new:Nn \__reset_title_counters:
|
|
{
|
|
\setcounter{cnote}{0}
|
|
\setcounter{fnote}{0}
|
|
\setcounter{tnote}{0}
|
|
\setcounter{footnote}{0}
|
|
}
|
|
|
|
\keys_define:nn { stm / mktitle }
|
|
{
|
|
blind .bool_gset:N = \g_stm_blind_bool ,
|
|
footer .multichoice:,
|
|
footer/default .tl_gset:N = \g_stm_footer_default_tl ,
|
|
footer/custom .tl_gset:N = \g_stm_footer_custom_tl ,
|
|
longtitle .bool_gset:N = \g_stm_longtitle_bool ,
|
|
longabstract .bool_gset:N = \g_stm_longtitle_bool ,
|
|
breakafter .clist_gset:N = \g_stm_breakafter_clist ,
|
|
nologo .bool_gset:N = \g_stm_nologo_bool ,
|
|
}
|
|
|
|
\bool_new:N \g_stm_breakafter_title_bool
|
|
\bool_new:N \g_stm_breakafter_auaff_bool
|
|
\bool_new:N \g_stm_breakafter_abstract_bool
|
|
|
|
\NewDocumentCommand \processbreakafter { }
|
|
{
|
|
\clist_if_empty:NTF \g_stm_breakafter_clist { }
|
|
{
|
|
\clist_map_inline:Nn \g_stm_breakafter_clist
|
|
{ \bool_gset_true:c { g_stm_breakafter_##1_bool } }
|
|
}
|
|
}
|
|
|
|
\NewDocumentCommand \pprintMaketitle { O{} }
|
|
{
|
|
\tl_if_blank:nTF { #1 } { }
|
|
{ \keys_set:nn { stm / mktitle } { #1 } }
|
|
\processbreakafter
|
|
\clearpage
|
|
\__reset_title_counters:
|
|
\tex_def:D \baselinestretch { 1 }
|
|
\printFirstPageNotes
|
|
\thispagestyle{pprintTitle}%
|
|
\group_begin:
|
|
\@title
|
|
\group_end:
|
|
\bool_if:NTF \g_stm_breakafter_title_bool
|
|
{ \newpage } { }
|
|
%
|
|
\bool_if:NTF \g_stm_blind_bool
|
|
{ \vspace* { 10 mm } }
|
|
{
|
|
\group_begin:
|
|
\normalsize \stmauthors \par
|
|
\stmcollab \par
|
|
\footnotesize \itshape \stmaddress \par \vskip36pt
|
|
\group_end:
|
|
\bool_if:NTF \g_stm_breakafter_auaff_bool
|
|
{ \newpage } { }
|
|
}
|
|
%
|
|
\printabsbox
|
|
\printkeybox
|
|
\bool_if:NTF \g_stm_breakafter_abstract_bool
|
|
{ \newpage } { }
|
|
%
|
|
\setcounter{footnote}{\c@fnote}
|
|
\tex_gdef:D \thefootnote { \arabic{footnote} }
|
|
\tex_def:D \baselinestretch { \@blstr }
|
|
\normalfont \normalsize
|
|
}
|
|
|
|
\NewDocumentCommand \MaketitleBox { }
|
|
{
|
|
\tex_def:D \baselinestretch{1}
|
|
\group_begin:
|
|
\@title
|
|
\group_end:
|
|
%
|
|
\bool_if:NTF \g_stm_blind_bool
|
|
{ \vspace* { 10 mm } }
|
|
{
|
|
\group_begin:
|
|
\normalsize \stmauthors \par
|
|
\stmcollab \par
|
|
\footnotesize \itshape \stmaddress \par
|
|
\group_end:
|
|
\bool_if:NTF \g_stm_breakafter_auaff_bool
|
|
{ \newpage } { }
|
|
}
|
|
% \printFirstPageNotes
|
|
%
|
|
\dashrule{0pt}{3pt}
|
|
\begin{Abstract}
|
|
\noindent \ignorespaces
|
|
\file_if_exist:nT { \jobname.abs } { \file_input:n { \jobname.abs } }
|
|
\end{Abstract}
|
|
\dashrule{6pt}{3pt}
|
|
\bool_if:NTF \g_stm_breakafter_abstract_bool
|
|
{ \newpage } { }
|
|
}
|
|
|
|
\box_new:N \g_stm_notes_box
|
|
\box_new:N \g_stm_front_box
|
|
\cs_set:Npn \__fn_text:n #1
|
|
{ \group_begin:\vbox_top:n { \footnotesize #1 } \group_end:\par}
|
|
|
|
\NewDocumentCommand \LongMaketitleBox { }
|
|
{
|
|
\vbox_gset:Nn \g_stm_front_box
|
|
{
|
|
\tex_def:D \baselinestretch{1}
|
|
\group_begin:
|
|
\@title
|
|
\group_end:
|
|
%
|
|
\group_begin:
|
|
\normalsize \stmauthors \par
|
|
\stmcollab \par
|
|
\footnotesize \itshape \stmaddress \par
|
|
\group_end:
|
|
%
|
|
\dashrule{0pt}{3pt}
|
|
\begin{Abstract}
|
|
\noindent \ignorespaces
|
|
\file_if_exist:nT { \jobname.abs } { \file_input:n { \jobname.abs } }
|
|
\end{Abstract}
|
|
\dashrule{3pt}{3pt}
|
|
}
|
|
\vbox_gset:Nn \g_stm_notes_box
|
|
{ \cs_set_eq:NN \footnotetext \__fn_text:n \printFirstPageNotes }
|
|
\dim_gset:Nn \g_tmpb_dim { \box_ht:N \g_stm_notes_box }
|
|
% \iow_term:x { ...~[ht: \dim_use:N \g_tmpb_dim ] }
|
|
\dim_gadd:Nn \g_tmpb_dim { \box_dp:N \g_stm_notes_box }
|
|
% \iow_term:x { ...~[ht+dp: \dim_use:N \g_tmpb_dim ] }
|
|
\ifbool{sc}{\dim_gadd:Nn \g_tmpb_dim { 12pt } } { }
|
|
|
|
}
|
|
|
|
\NewDocumentCommand \ProcessLongTitleBox { }
|
|
{
|
|
% \vbox_gset:Nn \g_stm_notes_box
|
|
% { \cs_set_eq:NN \footnotetext \__fn_text:n \printFirstPageNotes }
|
|
% \dim_gset:Nn \g_tmpb_dim { \box_ht:N \g_stm_notes_box }
|
|
% % \iow_term:x { ...~[ht: \dim_use:N \g_tmpb_dim ] }
|
|
% \dim_gadd:Nn \g_tmpb_dim { \box_dp:N \g_stm_notes_box }
|
|
% % \iow_term:x { ...~[ht+dp: \dim_use:N \g_tmpb_dim ] }
|
|
%
|
|
\dim_gset:Nn \g_tmpa_dim { \textheight }
|
|
% \vbox_unpack:N \g_stm_notes_box
|
|
% \iow_term:x { ...~[tmpa:~ \dim_use:N \g_tmpa_dim ] }
|
|
% \dim_gsub:Nn \g_tmpa_dim { \box_ht:N \g_stm_notes_box }
|
|
% \iow_term:x { ...~[tmpa-noteht:~ \dim_use:N \g_tmpa_dim ] }
|
|
% \dim_gsub:Nn \g_tmpa_dim { \box_dp:N \g_stm_notes_box }
|
|
% \iow_term:x { ...~[tmpa-notedp:~ \dim_use:N \g_tmpa_dim ] }
|
|
\dim_gsub:Nn \g_tmpa_dim { \g_tmpb_dim }
|
|
\vbox_set_split_to_ht:NNn \g_tmpb_box \g_stm_front_box { \g_tmpa_dim }
|
|
\noindent \vbox_unpack_clear:N \g_tmpb_box
|
|
\printFirstPageNotes
|
|
\dim_gzero:N \g_tmpa_dim
|
|
\dim_gset:Nn \g_tmpa_dim { \box_ht:N \g_stm_front_box }
|
|
% \iow_term:x { ...~[tmpa-ht:~ \dim_use:N \g_tmpa_dim ] }
|
|
\dim_gadd:Nn \g_tmpa_dim { \box_dp:N \g_stm_front_box }
|
|
% \iow_term:x { ...~[tmpa-ht+dp:~ \dim_use:N \g_tmpa_dim ~+~\the\textheight] }
|
|
\dim_compare:nNnTF { \dim_use:N \g_tmpa_dim } > { \the\textheight }
|
|
{
|
|
\vbox_set_split_to_ht:NNn \g_tmpb_box \g_stm_front_box { \textheight }
|
|
\vbox_unpack_clear:N \g_tmpb_box
|
|
\ifbool{dc}
|
|
{ \twocolumn[{\vbox_unpack_clear:N \g_stm_front_box}] }
|
|
{ \vbox_unpack_clear:N \g_stm_front_box }
|
|
}
|
|
{
|
|
\ifbool{dc}
|
|
{ \twocolumn[{\vbox_unpack_clear:N \g_stm_front_box}] }
|
|
{ \vbox_unpack_clear:N \g_stm_front_box }
|
|
}
|
|
\normalcolor \normalfont
|
|
}
|
|
\ExplSyntaxOff
|
|
|
|
%
|
|
% Headings
|
|
%
|
|
\def\@seccntDot{.}
|
|
\def\@seccntformat#1{\csname the#1\endcsname\@seccntDot\hskip 0.5em}
|
|
|
|
\newdimen\paraindent \paraindent=\parindent
|
|
\newdimen\subparaindent \subparaindent=\parindent
|
|
\def\ssssparaindent{}
|
|
\def\sectionfont{\rmfamily\fontsize{12pt}{14pt}%
|
|
\bfseries}
|
|
\def\ssectionfont{\rmfamily\fontsize{11pt}{13pt}%
|
|
\bfseries\selectfont}
|
|
\def\sssectionfont{\rmfamily\fontsize{10.5pt}{12pt}%
|
|
\fontseries{b}\fontshape{it}\selectfont}
|
|
\def\ssssectionfont{\rmfamily\fontsize{11pt}{10pt}\itshape\selectfont}
|
|
\def\sssssectionfont{\rmfamily\fontsize{11pt}{10pt}\selectfont}%
|
|
|
|
\AtBeginDocument{\global\@afterindentfalse}
|
|
|
|
\renewcommand\section{\@startsection{section}{1}{\z@}%
|
|
{15pt \@plus 3\p@ \@minus 3\p@}%
|
|
{4\p@}%
|
|
{%\let\@hangfrom\relax
|
|
\sectionfont\raggedright\hst[13pt]}}
|
|
|
|
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
|
|
{10pt \@plus 3\p@ \@minus 2\p@}%
|
|
{.1\p@}%
|
|
{%\let\@hangfrom\relax
|
|
\ssectionfont\raggedright }}
|
|
|
|
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
|
|
{10pt \@plus 1\p@ \@minus .3\p@}%
|
|
{.1\p@}%
|
|
{%\let\@hangfrom\relax
|
|
\sssectionfont\raggedright}}
|
|
|
|
\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
|
|
{10pt \@plus0.01pt \@minus0.01pt}%
|
|
{-6pt}%
|
|
{\ssssparaindent%
|
|
\ssssectionfont\itshape\raggedright}}
|
|
|
|
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
|
|
{0pt \@plus0.1pt \@minus0.1pt}%
|
|
{-6pt}%
|
|
{\hspace*{\subparaindent}
|
|
\sssssectionfont\raggedright}}
|
|
|
|
\def\thesubsection{\thesection.\arabic{subsection}}
|
|
\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
|
|
|
|
%
|
|
% Sundry lengths
|
|
%
|
|
\def\xstrut#1#2{\vrule height#1 depth #2 width\z@}
|
|
\def\hstrut#1{\vrule height#1 depth \z@ width 0pt}
|
|
\def\dstrut#1{\vrule height0pt depth#1 width 0pt}
|
|
\def\hst[#1]{\vrule height#1 depth \z@ width \z@}
|
|
\def\dst[#1]{\vrule height0pt depth#1 width 0pt}
|
|
\def\xst[#1][#2]{\vrule height#1 depth #2 width\z@}
|
|
|
|
\def\lastpage{100}
|
|
|
|
\AtEndDocument{%
|
|
% \clearpage
|
|
\immediate\write\@auxout{\string\csxdef{lastpage}{\thepage}}
|
|
}
|
|
|
|
\ExplSyntaxOn
|
|
|
|
%
|
|
% pagestyle
|
|
%
|
|
|
|
\cs_new:Npn \__first_footerline:
|
|
{
|
|
\group_begin:
|
|
\small
|
|
\sffamily \__short_authors: :~
|
|
{ \rmfamily \itshape Preprint~ submitted ~to ~Elsevier }
|
|
\group_end:
|
|
}
|
|
|
|
\cs_new:Npn \__first_head:
|
|
{
|
|
\parbox[t]{\textwidth}
|
|
{
|
|
\color{black!20}
|
|
\rule{\textwidth}{0pt}
|
|
}
|
|
}
|
|
|
|
|
|
\cs_new:Npn \__first_foot:
|
|
{
|
|
\parbox[t]{\textwidth}
|
|
{
|
|
\rule{\textwidth}{.2pt}\\
|
|
\__first_footerline: \hfill Page~ \thepage {} ~of~ \lastpage }
|
|
}
|
|
|
|
|
|
\cs_new:Npn \__cas_head:
|
|
{
|
|
\parbox{\textwidth}
|
|
{
|
|
\sffamily\small\centering
|
|
\__short_title:
|
|
}
|
|
}
|
|
|
|
|
|
\cs_new:Npn \__cas_foot:
|
|
{
|
|
\parbox[t]{\textwidth}
|
|
{
|
|
\rule{\textwidth}{.2pt}\\
|
|
\sffamily\small
|
|
\__first_footerline:
|
|
\hfill Page~\thepage {}~of~ \lastpage
|
|
}
|
|
}
|
|
|
|
\newcommand \ps@first
|
|
{
|
|
\cs_set_eq:NN \@oddhead \__first_head:
|
|
\cs_set_eq:NN \@evenhead \__first_head:
|
|
\cs_set_eq:NN \@evenfoot \__first_foot:
|
|
\cs_set_eq:NN \@oddfoot \__first_foot:
|
|
}
|
|
|
|
|
|
\newcommand \ps@cas
|
|
{
|
|
\cs_set_eq:NN \@oddhead \__cas_head:
|
|
\cs_set_eq:NN \@evenhead \__cas_head:
|
|
\cs_set_eq:NN \@evenfoot \__cas_foot:
|
|
\cs_set_eq:NN \@oddfoot \__cas_foot:
|
|
}
|
|
|
|
\ps@cas
|
|
|
|
|
|
%
|
|
% Floats
|
|
%
|
|
|
|
\def\topfraction{.9}
|
|
\def\bottomfraction{.9}
|
|
\setcounter{topnumber}{4}
|
|
\setcounter{bottomnumber}{3}
|
|
\setcounter{totalnumber}{5}
|
|
\renewcommand\textfraction{.1}
|
|
\renewcommand\floatpagefraction{.9}
|
|
\setcounter{dbltopnumber}{2}
|
|
\renewcommand\dbltopfraction{.9}
|
|
\renewcommand\dblfloatpagefraction{.95}
|
|
\newdimen \FullWidth
|
|
\FullWidth=\textwidth
|
|
|
|
\newcolumntype{L}{@{\extracolsep{\fill}}l}
|
|
\newcolumntype{R}{@{\extracolsep{\fill}}r}
|
|
\newcolumntype{C}{@{\extracolsep{\fill}}c}
|
|
|
|
\cs_gset_eq:NN \thead \toprule
|
|
\cs_gset_eq:NN \endthead \midrule
|
|
\cs_gset_eq:NN \tabref \ref
|
|
|
|
\dim_new:N \l_tbl_width_dim
|
|
\dim_set:Nn \l_tbl_width_dim { \linewidth }
|
|
|
|
\cs_new:Npn \__make_tbl_caption:nn #1#2
|
|
{
|
|
\l_tbl_align_tl
|
|
\skip_vertical:N \l_tbl_abovecap_skip
|
|
% \bool_if:NTF \g_tbl_full_bool
|
|
% {
|
|
% \color{scolor!70}\rule{\FullWidth}{2pt}\normalcolor\\
|
|
% }
|
|
% { \color{scolor!70}\rule{\tblwidth}{2pt}\normalcolor\\ }
|
|
% \fboxsep=4pt
|
|
% \colorbox{white}
|
|
{\parbox{ \dimexpr(\l_tbl_width_dim)}
|
|
{\rightskip=0pt\sffamily\small\textbf{\color{scolor}#1}\par#2\par\vskip4pt }}
|
|
\skip_vertical:N \l_tbl_belowcap_skip
|
|
}
|
|
|
|
\keys_define:nn { cas / tbl }
|
|
{
|
|
width .dim_set:N = \l_tbl_width_dim ,
|
|
pos .tl_set:N = \l_tbl_pos_tl ,
|
|
cols .tl_set:N = \l_tbl_cols_tl ,
|
|
align .tl_set:N = \l_tbl_align_tl,
|
|
abovecap .skip_set:N = \l_tbl_abovecap_skip ,
|
|
belowcap .skip_set:N = \l_tbl_belowcap_skip ,
|
|
abovetbl .skip_set:N = \l_tbl_abovetbl_skip ,
|
|
belowtbl .skip_set:N = \l_tbl_belowtbl_skip ,
|
|
full .bool_gset:N = \g_tbl_full_bool ,
|
|
unknown .code:n = {
|
|
\ifstrempty { #1 }
|
|
{
|
|
\tl_set:Nn \l_fig_pos_tl { \l_keys_key_tl }
|
|
}
|
|
{
|
|
\l_keys_key_tl=#1
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_set:Npn \__reset_tbl:
|
|
{
|
|
\tl_set:Nx \l_tbl_pos_tl { t }
|
|
\tl_set:Nx \l_tbl_cols_tl { 1 }
|
|
\tl_set:Nn \l_tbl_align_tl { \centering }
|
|
\skip_set:Nn \l_tbl_abovecap_skip { 6pt }
|
|
\skip_set:Nn \l_tbl_belowcap_skip { 0pt }
|
|
\skip_set:Nn \l_tbl_abovetbl_skip { 6pt }
|
|
\skip_set:Nn \l_tbl_belowtbl_skip { 6pt }
|
|
|
|
}
|
|
|
|
\RenewDocumentEnvironment { table } { O{} }
|
|
{
|
|
\__reset_tbl:
|
|
\bool_gset_false:N \g_tbl_full_bool
|
|
\dim_set:Nn \l_tbl_width_dim { \linewidth }
|
|
\keys_set:nn { cas / tbl } { #1 }
|
|
\csxdef{fps@table}{\l_tbl_pos_tl}
|
|
\csgdef{tblwidth}{\dim_use:N \l_tbl_width_dim}
|
|
\cs_set_eq:NN \@makecaption \__make_tbl_caption:nn
|
|
\@float{table}
|
|
\l_tbl_align_tl
|
|
\sffamily\small
|
|
}
|
|
{
|
|
\end@float
|
|
}
|
|
|
|
|
|
\RenewDocumentEnvironment { table* } { O{width=\FullWidth} }
|
|
{
|
|
\__reset_tbl:
|
|
\bool_gset_true:N \g_tbl_full_bool
|
|
\dim_set:Nn \l_tbl_width_dim { \FullWidth }
|
|
\keys_set:nn { cas / tbl } { #1 }
|
|
\csxdef{fps@table}{\l_tbl_pos_tl}
|
|
\csgdef{tblwidth}{\dim_use:N \l_tbl_width_dim}
|
|
\cs_set_eq:NN \@makecaption \__make_tbl_caption:nn
|
|
\@dblfloat{table}
|
|
\l_tbl_align_tl
|
|
\sffamily\small
|
|
% \leftskip=-\FullWidth
|
|
}
|
|
{
|
|
\end@dblfloat
|
|
}
|
|
|
|
|
|
\dim_new:N \l_fig_width_dim
|
|
\dim_set:Nn \l_fig_width_dim { \linewidth }
|
|
|
|
\cs_new:Npn \__make_fig_caption:nn #1#2
|
|
{
|
|
\l_fig_align_tl
|
|
\skip_vertical:N \l_fig_abovecap_skip
|
|
% \bool_if:NTF \g_fig_full_bool
|
|
% { \skip_horizontal:n { -\FullWidth } } { }
|
|
\parbox{ \l_fig_width_dim }
|
|
{\rightskip=0pt\sffamily\small\textbf{\color{scolor}#1:}~#2\par }
|
|
\skip_vertical:N \l_fig_belowcap_skip
|
|
}
|
|
|
|
\keys_define:nn { cas / fig }
|
|
{
|
|
width .dim_set:N = \l_fig_width_dim ,
|
|
pos .tl_set:N = \l_fig_pos_tl ,
|
|
cols .tl_set:N = \l_fig_cols_tl ,
|
|
align .tl_set:N = \l_fig_align_tl,
|
|
abovecap .skip_set:N = \l_fig_abovecap_skip ,
|
|
belowcap .skip_set:N = \l_fig_belowcap_skip ,
|
|
abovefig .skip_set:N = \l_fig_abovefig_skip ,
|
|
belowfig .skip_set:N = \l_fig_belowfig_skip ,
|
|
full .bool_gset:N = \g_fig_full_bool ,
|
|
unknown .code:n = {
|
|
\ifstrempty { #1 }
|
|
{
|
|
\tl_set:Nn \l_fig_pos_tl { \l_keys_key_tl }
|
|
}
|
|
{
|
|
\l_keys_key_tl=#1,
|
|
}
|
|
}
|
|
}
|
|
|
|
\cs_set:Npn \__reset_fig:
|
|
{
|
|
\tl_set:Nx \l_fig_pos_tl { t }
|
|
\tl_set:Nx \l_fig_cols_tl { 1 }
|
|
\tl_set:Nn \l_fig_align_tl { \raggedleft }
|
|
\skip_set:Nn \l_fig_abovecap_skip { 6pt }
|
|
\skip_set:Nn \l_fig_belowcap_skip { 6pt }
|
|
\skip_set:Nn \l_fig_abovefig_skip { 6pt }
|
|
\skip_set:Nn \l_fig_belowfig_skip { 6pt }
|
|
|
|
}
|
|
|
|
\RenewDocumentEnvironment { figure } { O{} }
|
|
{
|
|
\__reset_fig:
|
|
\bool_gset_false:N \g_fig_full_bool
|
|
\dim_set:Nn \l_fig_width_dim { \linewidth }
|
|
\keys_set:nn { cas / fig } { #1 }
|
|
\csxdef{fps@figure}{\l_fig_pos_tl}
|
|
\csgdef{figwidth}{\dim_use:N \l_fig_width_dim}
|
|
\cs_set_eq:NN \@makecaption \__make_fig_caption:nn
|
|
\@float{figure}
|
|
\l_fig_align_tl
|
|
\sffamily\small
|
|
}
|
|
{
|
|
\end@float
|
|
}
|
|
|
|
|
|
\RenewDocumentEnvironment { figure* } { O{width=\textwidth} }
|
|
{
|
|
\__reset_fig:
|
|
\bool_gset_true:N \g_fig_full_bool
|
|
\dim_set:Nn \l_fig_width_dim { \FullWidth }
|
|
\keys_set:nn { cas / fig } { #1 }
|
|
\csxdef{fps@figure}{\l_fig_pos_tl}
|
|
\csgdef{figwidth}{\dim_use:N \l_fig_width_dim}
|
|
\cs_set_eq:NN \@makecaption \__make_fig_caption:nn
|
|
\@dblfloat{figure}
|
|
\l_fig_align_tl
|
|
\sffamily\small
|
|
% \leftskip=-\FullWidth
|
|
}
|
|
{ \end@dblfloat }
|
|
|
|
%
|
|
% wrapped figure
|
|
%
|
|
\RequirePackage{wrapfig}
|
|
|
|
\dim_new:N \l_wrap_figwidth_dim
|
|
\dim_new:N \l_wrap_fighspace_dim
|
|
\dim_new:N \l_wrap_figvspace_dim
|
|
\dim_new:N \l_wrap_fighcorr_dim
|
|
\dim_new:N \l_wrap_figvcorr_dim
|
|
\dim_new:N \l_above_bio_dim
|
|
\int_new:N \l_wrap_figlcorr_int
|
|
\int_new:N \l_wrap_figlines_int
|
|
\tl_new:N \l_wrap_figfile_tl
|
|
|
|
\NewDocumentCommand \wfigwidth { m }
|
|
{ \dim_set:Nn \l_wrap_figwidth_dim { #1 } }
|
|
\NewDocumentCommand \wfighspace { m }
|
|
{ \dim_set:Nn \l_wrap_fighspace_dim { #1 } }
|
|
\NewDocumentCommand \wfigvspace { m }
|
|
{ \dim_set:Nn \l_wrap_figvspace_dim { #1 } }
|
|
\NewDocumentCommand \wfighcorr { m }
|
|
{ \dim_set:Nn \l_wrap_fighcorr_dim { #1 } }
|
|
\NewDocumentCommand \wfigvcorr { m }
|
|
{ \dim_set:Nn \l_wrap_figvcorr_dim { #1 } }
|
|
\NewDocumentCommand \addfiglines { m }
|
|
{ \int_set:Nn \l_wrap_figlcorr_int { #1 } }
|
|
\NewDocumentCommand \abovebioskip { m }
|
|
{ \dim_set:Nn \l_above_bio_dim { #1 } }
|
|
|
|
\cs_new:Nn \__fig_defaults:
|
|
{
|
|
\wfigwidth { 25.5mm }
|
|
\wfighspace { 0mm }
|
|
\wfigvspace { 0mm }
|
|
\wfighcorr { 0pt }
|
|
\wfigvcorr { -12pt }
|
|
\wfigvcorr { 0pt }
|
|
\abovebioskip { 12pt }
|
|
\tl_set:Nn \l_wrap_figpos_tl { l }
|
|
\int_set:Nn \l_wrap_figlines_int { 3 }
|
|
\int_set:Nn \l_wrap_figlcorr_int { 1 }
|
|
\tl_clear:N \l_wrap_figcap_tl
|
|
}
|
|
|
|
\__fig_defaults:
|
|
|
|
\keys_define:nn { wrap / fig }
|
|
{
|
|
width .dim_set:N = \l_wrap_figwidth_dim ,
|
|
hspace .dim_set:N = \l_wrap_fighspace_dim ,
|
|
vspace .dim_set:N = \l_wrap_figvspace_dim ,
|
|
hcorr .dim_set:N = \l_wrap_fighcorr_dim ,
|
|
vcorr .dim_set:N = \l_wrap_figvcorr_dim ,
|
|
lcorr .int_set:N = \l_wrap_figlcorr_int ,
|
|
pos .tl_set:N = \l_wrap_figpos_tl ,
|
|
lines .int_set:N = \l_wrap_figlines_int ,
|
|
cap .tl_set:N = \l_wrap_figcap_tl ,
|
|
}
|
|
|
|
\cs_new:Npn \__find_fig_height:n #1
|
|
{
|
|
\box_clear:N \g_tmpa_box
|
|
\hbox_gset:Nn \g_tmpa_box
|
|
{ \includegraphics [ width = \l_wrap_figwidth_dim ] { #1 } }
|
|
\dim_zero:N \l_tmpa_dim
|
|
\dim_set:Nn \l_tmpa_dim { \box_ht:N \g_tmpa_box }
|
|
\dim_add:Nn \l_tmpa_dim { \box_dp:N \g_tmpa_box }
|
|
\fp_set:Nn \l_tmpa_fp { \dim_to_fp:n { \l_tmpa_dim } }
|
|
\fp_set:Nn \l_tmpb_fp { \dim_to_fp:n { \baselineskip } }
|
|
%
|
|
\fp_set:Nn \l_wrap_figlines_fp
|
|
{ \fp_eval:n { ( \l_tmpa_fp / \l_tmpb_fp ) + .5 } }
|
|
\int_set:Nn \l_wrap_figlines_int
|
|
{ \fp_to_int:N \l_wrap_figlines_fp }
|
|
%
|
|
\iow_term:x { ...~wr-fig:~[BL:~\the\baselineskip] ~ ...}
|
|
\iow_term:x { ...~wr-fig:~[LINE-FP:~ \fp_use:N \l_wrap_figlines_fp]~ ...}
|
|
\iow_term:x { ...~wr-fig:~[LINE-INT:~ \int_use:N \l_wrap_figlines_int]~ ...}
|
|
}
|
|
|
|
\newbox \l_bio_text_box
|
|
|
|
\NewDocumentCommand \WrapFigure { o m }
|
|
{
|
|
\__fig_defaults:
|
|
\IfNoValueTF { #1 } { } { \keys_set:nn { wrap / fig } { #1 } }
|
|
\stepcounter { ca_biography_ctr }
|
|
\__find_fig_height:n { #2 }
|
|
\dim_zero:N \l_tmpb_dim
|
|
\dim_set:Nn \l_tmpb_dim
|
|
{ \l_wrap_figwidth_dim + \l_wrap_fighspace_dim }
|
|
\int_gadd:Nn \l_wrap_figlines_int { \int_use:N \l_wrap_figlcorr_int }
|
|
\setlength { \columnsep } { 5pt }
|
|
\setlength { \intextsep } { 0pt }
|
|
% \mbox{}
|
|
\ifbool { dc }
|
|
{ \xdef\Columnwidth{238.25pt} }
|
|
{ \xdef\Columnwidth{\the\textwidth} }
|
|
\ifcsundef { cabio\theca_biography_ctr lines }
|
|
{
|
|
\setbox \l_bio_text_box = \vbox \bgroup
|
|
\hsize = \dimexpr ( \Columnwidth - 72.28pt )
|
|
}
|
|
{
|
|
\ifbool { dc } {
|
|
\int_gset:Nn \l_wrap_figlines_int
|
|
{ \csuse { cabio\theca_biography_ctr lines } }
|
|
} { }
|
|
\skip_vertical:N \l_above_bio_dim
|
|
\begin{wrapfigure}[\int_use:N \l_wrap_figlines_int]
|
|
{ \l_wrap_figpos_tl }
|
|
[ \dim_use:N \l_wrap_fighcorr_dim ]
|
|
{ \dim_use:N \l_tmpb_dim }
|
|
%\skip_vertical:N \l_wrap_figvcorr_dim
|
|
\includegraphics[width=\l_wrap_figwidth_dim]{#2}
|
|
\end{wrapfigure}
|
|
\setbox \l_bio_text_box = \vbox \bgroup
|
|
\hsize = \dimexpr ( \Columnwidth )
|
|
}
|
|
}
|
|
|
|
\cs_set:Nn \__fwidth: { 1in }
|
|
\cs_set:Nn \__fpos: { l }
|
|
|
|
%
|
|
% short authors/title
|
|
%
|
|
|
|
\newcommand\shortauthors[1]{ \cs_gset:Nn \__short_authors: { #1 } }
|
|
\newcommand\shorttitle[1]{ \cs_gset:Nn \__short_title: { #1 } }
|
|
|
|
\shortauthors{First~Author~et~al.}
|
|
\shorttitle{Short ~Title ~of~the~Article}
|
|
|
|
\newcounter { ca_biography_ctr }
|
|
\newbool { cas_no_pic_bio }
|
|
\boolfalse { cas_no_pic_bio }
|
|
|
|
\NewDocumentCommand \bio { O{} m }
|
|
{
|
|
\global \boolfalse { cas_no_pic_bio }
|
|
\casbiographyfont
|
|
\par \medskip \tl_set:Nn \l_tmpa_tl { #2 }
|
|
\tl_if_empty:NTF \l_tmpa_tl
|
|
{ \global \booltrue { cas_no_pic_bio } }
|
|
{ \WrapFigure [ #1 ]{ #2 } }
|
|
\noindent \ignorespaces
|
|
}
|
|
|
|
\int_new:N \l_ca_temp_inta
|
|
|
|
\NewDocumentCommand \endbio { } {
|
|
\ifbool{ cas_no_pic_bio } { } {
|
|
\egroup
|
|
% \fp_set:Nn \l_wrap_figlines_fp
|
|
% { \fp_eval:n { ( ( \l_tmpa_fp +
|
|
% \numexpr\dimexpr\the\ht\l_bio_text_box )
|
|
% / \l_tmpb_fp ) + .5 } }
|
|
\int_gset:Nn \l_ca_temp_inta
|
|
{ \numexpr\dimexpr(\the\ht\l_bio_text_box + 2\baselineskip )/
|
|
\dimexpr\the\baselineskip }
|
|
\iow_now:Nx \@auxout {
|
|
\string\csgdef{cabio\theca_biography_ctr lines}
|
|
{ \int_use:N \l_ca_temp_inta } }
|
|
\mbox{}\vspace*{-4.5pt}\noindent
|
|
\unvbox \l_bio_text_box }
|
|
}
|
|
|
|
\let\casbiographyfont\relax
|
|
|
|
\NewDocumentEnvironment { biography } { o m }
|
|
{
|
|
\IfValueTF { #1 }
|
|
{ \par\medskip \noindent \includegraphics[width=1in]{#1} }
|
|
{ }
|
|
\par\smallskip
|
|
\noindent \textbf{#2:}\enspace
|
|
}
|
|
{ }
|
|
|
|
\ExplSyntaxOff
|
|
|
|
%
|
|
% Customized Enumeration
|
|
%
|
|
\def\blstr#1{\gdef\@bslstr{#1}}
|
|
\def\@blstr{1}
|
|
\newdimen\leftMargin
|
|
\leftMargin=2em
|
|
\newtoks\@enLab %\newtoks\@enfont
|
|
\def\@enQmark{?}
|
|
\def\@enLabel#1#2{%
|
|
\edef\@enThe{\noexpand#1{\@enumctr}}%
|
|
\@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}%
|
|
\@enloop}
|
|
\def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= }
|
|
\def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop}
|
|
\def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop}
|
|
\def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop}
|
|
\def\@enloop{\futurelet\@entemp\@enloop@}
|
|
\def\@enloop@{%
|
|
\ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else
|
|
\ifx a\@entemp \def\@tempa{\@enLabel\alph }\else
|
|
\ifx i\@entemp \def\@tempa{\@enLabel\roman }\else
|
|
\ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else
|
|
\ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else
|
|
\ifx \@sptoken\@entemp \let\@tempa\@enSpace \else
|
|
\ifx \bgroup\@entemp \let\@tempa\@enGroup \else
|
|
\ifx \@enum@\@entemp \let\@tempa\@gobble \else
|
|
\let\@tempa\@enOther
|
|
\fi\fi\fi\fi\fi\fi\fi\fi
|
|
\@tempa}
|
|
\newlength{\@sep} \newlength{\@@sep}
|
|
\setlength{\@sep}{.5\baselineskip plus.2\baselineskip
|
|
minus.2\baselineskip}
|
|
\setlength{\@@sep}{.1\baselineskip plus.01\baselineskip
|
|
minus.05\baselineskip}
|
|
\providecommand{\sfbc}{\rmfamily\upshape}
|
|
\providecommand{\sfn}{\rmfamily\upshape}
|
|
\def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt}
|
|
\def\enumerate{%
|
|
\ifnum \@enumdepth >3 \@toodeep\else
|
|
\advance\@enumdepth \@ne
|
|
\edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi
|
|
\@ifnextchar[{\@@enum@}{\@enum@}}
|
|
\def\@@enum@[#1]{%
|
|
\@enLab{}\let\@enThe\@enQmark
|
|
\@enloop#1\@enum@
|
|
\ifx\@enThe\@enQmark\@warning{The counter will not be printed.%
|
|
^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi
|
|
\expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}%
|
|
\expandafter\let\csname the\@enumctr\endcsname\@enThe
|
|
\csname c@\@enumctr\endcsname7
|
|
\expandafter\settowidth
|
|
\csname leftmargin\romannumeral\@enumdepth\endcsname
|
|
{\the\@enLab\hskip\labelsep}%
|
|
\@enum@}
|
|
\def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}%
|
|
{\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}%
|
|
\ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else
|
|
\setlength{\topsep}{\@sep}\fi
|
|
\ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}%
|
|
\else \setlength{\itemsep}{\@@sep}\fi
|
|
%\setlength\leftmargin{\leftMargin}%%%{1.8em}
|
|
\setlength{\parsep}{0pt plus1pt minus1pt}%
|
|
\setlength{\parskip}{0pt plus1pt minus1pt}
|
|
}}
|
|
|
|
\def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else
|
|
\addvspace{\@sep}\fi \endlist}
|
|
|
|
\def\sitem{\@noitemargtrue\@item[\@itemlabel *]}
|
|
|
|
\def\itemize{\@ifnextchar[{\@Itemize}{\@Itemize[]}}
|
|
|
|
\def\@Itemize[#1]{\def\next{#1}%
|
|
\ifnum \@itemdepth >\thr@@\@toodeep\else
|
|
\advance\@itemdepth\@ne
|
|
\ifx\next\@empty\else\expandafter\def\csname
|
|
labelitem\romannumeral\the\@itemdepth\endcsname{#1}\fi%
|
|
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
|
|
\expandafter\list\csname\@itemitem\endcsname
|
|
{\def\makelabel##1{\hss\llap{##1}}}%
|
|
\fi}
|
|
|
|
%
|
|
% Customized theorem
|
|
% (non-italic enunciations)
|
|
%
|
|
|
|
\def\newdefinition#1{%
|
|
\@ifnextchar[{\@odfn{#1}}{\@ndfn{#1}}}%]
|
|
\def\@ndfn#1#2{%
|
|
\@ifnextchar[{\@xndfn{#1}{#2}}{\@yndfn{#1}{#2}}}
|
|
\def\@xndfn#1#2[#3]{%
|
|
\expandafter\@ifdefinable\csname #1\endcsname
|
|
{\@definecounter{#1}\@newctr{#1}[#3]%
|
|
\expandafter\xdef\csname the#1\endcsname{%
|
|
\expandafter\noexpand\csname the#3\endcsname \@dfncountersep
|
|
\@dfncounter{#1}}%
|
|
\global\@namedef{#1}{\@dfn{#1}{#2}}%
|
|
\global\@namedef{end#1}{\@enddefinition}}}
|
|
\def\@yndfn#1#2{%
|
|
\expandafter\@ifdefinable\csname #1\endcsname
|
|
{\@definecounter{#1}%
|
|
\expandafter\xdef\csname the#1\endcsname{\@dfncounter{#1}}%
|
|
\global\@namedef{#1}{\@dfn{#1}{#2}}%
|
|
\global\@namedef{end#1}{\@enddefinition}}}
|
|
\def\@odfn#1[#2]#3{%
|
|
\@ifundefined{c@#2}{\@nocounterr{#2}}%
|
|
{\expandafter\@ifdefinable\csname #1\endcsname
|
|
{\global\@namedef{the#1}{\@nameuse{the#2}}
|
|
\global\@namedef{#1}{\@dfn{#2}{#3}}%
|
|
\global\@namedef{end#1}{\@enddefinition}}}}
|
|
\def\@dfn#1#2{%
|
|
\refstepcounter{#1}%
|
|
\@ifnextchar[{\@ydfn{#1}{#2}}{\@xdfn{#1}{#2}}}
|
|
\def\@xdfn#1#2{%
|
|
\@begindefinition{#2}{\csname the#1\endcsname}\ignorespaces}
|
|
\def\@ydfn#1#2[#3]{%
|
|
\@opargbegindefinition{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
|
|
\def\@dfncounter#1{\noexpand\arabic{#1}}
|
|
\def\@dfncountersep{.}
|
|
\def\@begindefinition#1#2{\trivlist
|
|
\item[\hskip\labelsep{\bfseries #1\ #2.}]\upshape}
|
|
\def\@opargbegindefinition#1#2#3{\trivlist
|
|
\item[\hskip\labelsep{\bfseries #1\ #2\ (#3).}]\upshape}
|
|
\def\@enddefinition{\endtrivlist}
|
|
|
|
\def\@begintheorem#1#2{\trivlist
|
|
\let\baselinestretch\@blstr
|
|
\item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape}
|
|
\def\@opargbegintheorem#1#2#3{\trivlist
|
|
\let\baselinestretch\@blstr
|
|
\item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\itshape}
|
|
%
|
|
% Unnumbered roman proofs
|
|
%
|
|
\def\newproof#1{%
|
|
\@ifnextchar[{\@oprf{#1}}{\@nprf{#1}}}
|
|
\def\@nprf#1#2{%
|
|
\@ifnextchar[{\@xnprf{#1}{#2}}{\@ynprf{#1}{#2}}}
|
|
\def\@xnprf#1#2[#3]{%
|
|
\expandafter\@ifdefinable\csname #1\endcsname
|
|
{\@definecounter{#1}\@newctr{#1}[#3]%
|
|
\expandafter\xdef\csname the#1\endcsname{%
|
|
\expandafter\noexpand\csname the#3\endcsname \@prfcountersep
|
|
\@prfcounter{#1}}%
|
|
\global\@namedef{#1}{\@prf{#1}{#2}}%
|
|
\global\@namedef{end#1}{\@endproof}}}
|
|
\def\@ynprf#1#2{%
|
|
\expandafter\@ifdefinable\csname #1\endcsname
|
|
{\@definecounter{#1}%
|
|
\expandafter\xdef\csname the#1\endcsname{\@prfcounter{#1}}%
|
|
\global\@namedef{#1}{\@prf{#1}{#2}}%
|
|
\global\@namedef{end#1}{\@endproof}}}
|
|
\def\@oprf#1[#2]#3{%
|
|
\@ifundefined{c@#2}{\@nocounterr{#2}}%
|
|
{\expandafter\@ifdefinable\csname #1\endcsname
|
|
{\global\@namedef{the#1}{\@nameuse{the#2}}%
|
|
\global\@namedef{#1}{\@prf{#2}{#3}}%
|
|
\global\@namedef{end#1}{\@endproof}}}}
|
|
\def\@prf#1#2{%
|
|
\refstepcounter{#1}%
|
|
\@ifnextchar[{\@yprf{#1}{#2}}{\@xprf{#1}{#2}}}
|
|
\def\@xprf#1#2{%
|
|
\@beginproof{#2}{\csname the#1\endcsname}\ignorespaces}
|
|
\def\@yprf#1#2[#3]{%
|
|
\@opargbeginproof{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
|
|
\def\@prfcounter#1{\noexpand\arabic{#1}}
|
|
\def\@prfcountersep{.}
|
|
\def\@beginproof#1#2{\trivlist\let\baselinestretch\@blstr
|
|
\item[\hskip \labelsep{\scshape #1.}]\rmfamily}
|
|
\def\@opargbeginproof#1#2#3{\trivlist\let\baselinestretch\@blstr
|
|
\item[\hskip \labelsep{\scshape #1\ (#3).}]\rmfamily}
|
|
\def\@endproof{\endtrivlist}
|
|
\newcommand*{\qed}{\hbox{}\hfill$\Box$}
|
|
|
|
\xspaceaddexceptions{]}
|
|
|
|
\ABD{\bibsep=0pt}
|
|
%\ifbool{casfinallayout}
|
|
% {%
|
|
\ABD{\gdef\bibfont{\fontsize{8pt}{10pt}\selectfont}%
|
|
\gdef\casbiographyfont{\fontsize{8pt}{10pt}\selectfont}%
|
|
}%
|
|
% }
|
|
% {}
|
|
|
|
\endinput
|