summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-11-25 03:03:12 +0000
committerNorbert Preining <norbert@preining.info>2023-11-25 03:03:12 +0000
commitad976e54f48605a66054bc56e945dabc425c956a (patch)
treef3905ec1ab486d1cf12b064887e311f2ea10bebf /macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
parentac5a5e57a4c9b3c436c3bac327fe885acea28ba4 (diff)
CTAN sync 202311250303
Diffstat (limited to 'macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty')
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty567
1 files changed, 201 insertions, 366 deletions
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
index e433c3021b..9cfd99a620 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version 1.12 (2023/09/23)
+%% This is version {2.0} {2023/11/23}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -23,382 +23,217 @@
%% CCA stands for "Control and Automation Engineering Course" (Portuguese acronym)
%%%==============================================================================
\NeedsTeXFormat{LaTeX2e}[2022/06/01]
-\def\tc@tmp@packname{ufrgscca-cover}
-\def\tc@tmp@altpackname{ufrgsccacover}
-\def\tc@tmp@packdesc{UFRGS/CCA cover commands}
-\def\tc@tmp@packdate{2023/09/23}
-\def\tc@tmp@packversion{1.12}
-\let\@exp\expandafter
-\@exp\edef\csname\tc@tmp@altpackname version\endcsname{\tc@tmp@packversion}
-\@exp\@exp\@exp\ProvidesPackage\@exp\@exp\@exp{\@exp\tc@tmp@packname\@exp}\@exp[\tc@tmp@packdate\space v\tc@tmp@packversion\space\tc@tmp@packdesc]
-
-\DeclareKeys[ufrgscca-cover]{
- report.usage = load,
- report.if = tcif@report,
- internship.usage = load,
- internship.if = tcif@internship,
- nonrequired.usage = load,
- nonrequired.if = tcif@nonrequired,
-}
-\ProcessKeyOptions[ufrgscca-cover]\relax
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-% student commands%
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\cmdfactory<cover>{course}
-\cmdfactory<cover>{courseacronym}%
-\cmdfactory<cover>{graduationtitle}
-\cmdfactory<cover>{university,universityacronym,universitydivision}
-\cmdfactory<cover>{divisiongradcouncil}%
-\cmdfactory<cover>{department,classcode,classname,subject}%
-\cmdfactory<cover>{secretaryacronym,secdivisionacronym}%
-\cmdfactory<cover>{advisorname,coadvisorname}
-\cmdfactory<cover>{examinername}%
-\cmdfactory<cover>{reportspecificinfo,approvalspecificinfo}%
-\cmdfactory<cover>{advisorwidth}
-\cmdfactory<cover>{profname,coprofname}%
-\cmdfactory<cover>{tutorname,supervisorname}%
-\cmdfactory<cover>{internshiptitle}%
-\cmdfactory<cover>{internshipinfo}%
-%
-\advisorwidth{0.55\textwidth}%
-%
-\NewDocumentCommand{\class}{mm}{\classcode{#1}\classname{#2}}%
-%
-
-
-%%%%%%%%%%%%%%%%%%%%%%%
-%%%%
-%%% cover pages and related macros%
-%%%%
-%%%%%%%%%%%%%%%%%%%%%%%
-\newlength{\tc@formwinvoffset}%
-\setlength{\tc@formwinvoffset}{24mm}%
-\NewDocumentCommand\tc@formtopbox{O{}+m+m}{%%
- \begin{center}%%
- \noindent%%
- \parbox[t]{\textwidth}{%%
- \centering%%
- \vbox to \tc@formwinvoffset{%%
- \tccover@covertopinfo%%
- {\sc #2}%
- }%%
- }%
-
- {\bf #3}\@ifundefined{#1}{}{\footnote[1]{\csname #1\endcsname}}%%
- \end{center}%%
-}%
-
-
-%
-\NewDocumentCommand{\tccover@covertopinfo}{}{%%
- \@ifundefined{tcdef@cover@university}{}{\MakeUppercase{\tcdef@cover@university}\\}%
- \@ifundefined{tcdef@cover@universitydivision}{}{\MakeUppercase{\tcdef@cover@universitydivision}\\}%
- \@ifundefined{tcdef@cover@course}{}{\MakeUppercase{\tcdef@cover@course}\\}%
- \@ifundefined{tcdef@cover@department}{}{\MakeUppercase{\tcdef@cover@department}\\}%%
- \@ifundefined{tcdef@cover@classname}{}{\MakeUppercase{\tcdef@cover@classcode\ --\ \tcdef@cover@classname}\\}%
- \@ifundefined{tcdef@cover@subject}{}{\MakeUppercase{\tcdef@cover@subject}}%
-}%
-
-
-\NewDocumentCommand{\tccover@coveradvisorinfo}{}{%%
- \@ifundefined{tc@studentA@advisor}{}{\vfill{\scshape\tcdef@cover@advisorname}:\\\null\hfill\tc@studentA@advisor}%
- \@ifundefined{tc@studentA@coadvisor}{}{\\[6ex]{\scshape\tcdef@cover@coadvisorname}:\\\null\hfill\tc@studentA@coadvisor}%
-}%
-%
-\NewDocumentCommand{\tccover@reportadvisorinfo}{}{%%
- \@ifundefined{tc@studentA@advisor}{}{\vfill{\scshape\iftcif@internship\tcdef@cover@advisorname\else\tcdef@cover@profname\fi}:\\\null\hfill\tc@studentA@advisor}%
- \@ifundefined{tc@studentA@coadvisor}{}{\\[6ex]{\scshape\iftcif@internship\tcdef@cover@coadvisorname\else\tcdef@cover@coprofname\fi}:\\\null\hfill\tc@studentA@coadvisor}%
-}%
-%
-%%%%%%%%%%%%%%%%%%%
-\let\tc@org@maketitle\maketitle
-\RenewDocumentCommand{\maketitle}{}{\coverpages}%
+\ProvidesExplPackage
+ {ufrgscca-cover}
+ {2023/11/23}
+ {2.0}
+ {UFRGS/CCA cover commands}
-\NewDocumentCommand{\coverpages}{}{%%
- \thecoverpage%that´s the first page%
- \thetitlepage%that´s the second page (for tcc)%
- \tccapprovalpage%that´s the third page (for tcc)%
-}%
-
-\iftcif@report
- \RenewDocumentCommand{\coverpages}{}{%%
- \thecoverpage%that´s the first page%
- }%
-\fi
-
-\iftcif@internship
- \AtBeginDocument{\title{\tcdef@cover@internshiptitle}}
- \RenewDocumentCommand{\coverpages}{}{%%
- \thecoverpage%that´s the first page%
- \internapprovalpage%that´s the second page (for internship)%
- }%
-\fi
-
-%
-%%%%%%%%%
+%%%%%%%
%%%
-%% 1st cover page%
+%%% Just an attempt of having my packages info in a regular way
+%%% Idea being: { <pck-name> / pkg info } for each and all.
%%%
-%%%%%%%%%
-%%
-\newlength{\tc@coverwinwidth}\setlength{\tc@coverwinwidth}{95mm}%%
-\newlength{\tc@coverwinheight}\setlength{\tc@coverwinheight}{64mm}%%
-\newlength{\tc@coverwinvoffset}\setlength{\tc@coverwinvoffset}{112mm}%%
+%%%%%%%
+\keys_define:nn { ufrgscca-cover / pkg info}
+ {
+ name .code:n = {ufrgscca-cover} ,
+ prefix .code:n = {ufrgscca} ,
+ date .code:n = {2023/11/23},
+ version .code:n = {2.0} ,
+ description .code:n = {UFRGS/CCA~ cover~pages}
+ }
+\cs_if_exist:NF \__codedesc_pkg_info:nn
+ {
+ \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
+ { \keys_set:nn {#1 / pkg info}{#2} }
+ }
+\cs_if_exist:NF \PkgInfo
+ { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
+\cs_if_exist:NF \PkgDescription
+ {
+ \NewDocumentCommand \PkgDescription {m}
+ {
+ \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
+ }
+ }
+%%%%%%%
+%%% End of cut-n-paste
+%%%%%%%
+
+
+\NewDocumentCommand{\class}{mm}{%
+ \SetHeadings{%
+ class.code = {#1} ,
+ class.name = {#2} ,
+ }
+}%
+%
+
+\cs_generate_variant:Nn \text_uppercase:n {e}
+
\NewDocumentCommand{\location}{mm}{%%
- \gdef\tc@city{#1}%%
- \gdef\tc@state{#2}%%
+ \SetConsts{%
+ publ.city = {#1} ,
+ publ.state = {#2} ,
+ }
}%%
-\NewDocumentCommand{\thecoverpage}{}{%%
- \begin{titlepage}%
- \noindent\tc@covertopbox%
- \vfill%
- \iftcif@report{%%
- \@ifundefined{tc@studentA@advisor}{}{%%
- \hspace*{\fill}\parbox[b]{\tcdef@cover@advisorwidth}{\tccover@reportadvisorinfo}%
- \vfill%
- }%%
- }%%
- \else\fi
- \centerline{\tc@city}%
- \centerline{\tc@date}%
- \end{titlepage}%%
- \tc@pagebreak
-}%
-%
-%
-%%%%%%%%%
-%%%
-%% 2nd cover page (title page)%
-%%%
-%%%%%%%%%
-\NewDocumentCommand{\thetitlepage}{}{%%
- \begin{titlepage}%
- \noindent\tc@covertopbox%
- \vfill%
- \@ifundefined{tcdef@cover@reportspecificinfo}{}{%
- \hspace*{\fill}\makebox[.55\textwidth][l]{%%
- \parbox[b]{8.5cm}{\tcdef@cover@reportspecificinfo}%%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@advisor}{}{%
- \hspace*{\fill}\parbox[b]{\tcdef@cover@advisorwidth}{%%
- \tccover@coveradvisorinfo%
- }%
- \vfill%
- }%
- \centerline{\tc@city}%
- \centerline{\tc@date}%
- \end{titlepage}%
- \tc@pagebreak
-}%
-%
-%
-%
-\NewDocumentCommand{\tccover@studentdesc}{m}{\@ifundefined{#1}{}{\MakeUppercase{\textbf{\csname #1\endcsname\ - \csname #1ID\endcsname}}\\}}
-%
-
-
-\NewDocumentCommand\tc@covertopbox{}{%%
- \parbox[t]{\textwidth}{%%
- \centering%%
- \vbox to \tc@coverwinvoffset{%%
- \tccover@covertopinfo\vfill\tc@winbox%
- }%
- }%
-}%
+\prop_new:N \l__ufrgscca_coverpages_prop
- \NewDocumentCommand\tc@winbox{}{%%
- %\fbox{%
- \parbox[b]{\tc@coverwinwidth}{%%
- \centering\vbox to \tc@coverwinheight{%%
- \vspace*{\fill}%
- \iftcif@report%
- \tccover@studentdesc{tc@studentA}%
- \tccover@studentdesc{tc@studentB}%
- \tccover@studentdesc{tc@studentC}%
- \tccover@studentdesc{tc@studentD}%%
- \else%
- \tccover@studentdesc{tc@studentA}%%
- \fi%
- \vspace{\stretch{4}}%
- {\large\MakeUppercase{\textbf{\@title}}\par}%
- \vfill%
- }%%
- %}%%
- }%%
- }%
-
-
-
-%
-%%%%%%%%%
-%%%
-%% 3rd cover page (approval page)%
-%%%
-%%%%%%%%%
-\NewDocumentCommand{\tccapprovalpage}{}{%%
- \begin{center}%
- \noindent\tc@covertopbox%
- \vfill%
- \@ifundefined{tcdef@cover@approvalspecificinfo}{}{%
- \hspace*{\fill}\makebox[.55\textwidth][l]{%%
- \parbox[b]{8.5cm}{\tcdef@cover@approvalspecificinfo}%%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@advisor}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpageadvisorinfo%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@examinerA}{}{%
- \hspace*{\fill}\parbox[b]{1.0\textwidth}{\tcdef@cover@examinername:}%
- \vfill%
- \hspace*{\fill}\parbox[b]{.90\textwidth}{%%
- \tccover@approvalpageexaminerinfo%
- }%
- \vfill%
- }%
- \@ifundefined{tcdef@core@coursecoord}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpagecoordinfo%
- }%
- \vfill%
- }%
- \vfill%
- \hfill\tc@city, \tc@monthyeardate
- \end{center}%
- \tc@pagebreak
-}%
-%
-%
-%
-%
-%
-%%%%%%%%%
-%%%
-%% 2nd cover page (internship, approval page)%
-%%%
-%%%%%%%%%
-\NewDocumentCommand{\internapprovalpage}{}{%%
- \begin{center}%
- \noindent\tc@covertopbox%
- \vfill%
- \@ifundefined{tcdef@cover@internshipinfo}{}{%
- \hspace*{\fill}\makebox[.55\textwidth][l]{%%
- \parbox[b]{8.5cm}{\tcdef@cover@internshipinfo}%%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@tutor}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpagetutorinfo%
- }%
- \vfill%
- }%
- \@ifundefined{tc@studentA@supervisor}{}{%
- \vfill%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpagesupervisorinfo%
- }%
- \vfill%
- }%
- \iftcif@nonrequired
- \else
- \@ifundefined{tcdef@core@coursecoord}{}{%
- \hspace*{\fill}\parbox[b]{.70\textwidth}{%%
- \tccover@approvalpageinternshipcoordinfo%
- }%
- \vfill%
- }%
- \fi
- \vfill%
- \hfill\tc@city, \tc@monthyeardate
- \end{center}%
- \tc@pagebreak
-}%
-%
-%
-%
-%
-%
-\NewDocumentCommand{\tccover@approvalpageadvisorinfo}{}{%%
- \@ifundefined{tc@studentA@advisor}{}{%%
- \vfill%
- \tcdef@cover@advisorname: \hrulefill\\%
- \tc@studentA@advisor, \tc@studentA@advisorinstitution\\%
- \tc@studentA@advisortitleinfo %
- }%
-}%
-\NewDocumentCommand{\tccover@approvalpagetutorinfo}{}{%%
- \@ifundefined{tc@studentA@tutor}{}{%%
- \vfill%
- \tcdef@cover@tutorname: \hrulefill\\%
- \tc@studentA@tutor, \tc@studentA@tutorinstitution\\%
- \tc@studentA@tutortitleinfo %
- }%
-}%
-
-\NewDocumentCommand{\tccover@@aprovalexaminerinfo}{m}{
- \@ifundefined{#1}{}{%%
- \csname #1\endcsname, \csname #1institution\endcsname\\%
- \csname #1titleinfo\endcsname\\%
- }%
-}%
-\NewDocumentCommand{\tccover@approvalpageexaminerinfo}{}{%%
- \vfill%
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerA}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerB}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerC}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerD}%
-
- \tccover@@aprovalexaminerinfo{tc@studentA@examinerE}%
-}%
-%
-\NewDocumentCommand{\tccover@approvalpagesupervisorinfo}{}{%%
- \vfill%
- \@ifundefined{tc@studentA@supervisor}{}{%%
- \tcdef@cover@supervisorname: \hrulefill\\%
- \tc@studentA@supervisor, \tc@studentA@supervisorregister\\%
- \tc@studentA@supervisoroffice\\%
- }%
-}%
-%
-
-
-\NewDocumentCommand{\tccover@approvalpagecoordinfo}{}{%%
- \@ifundefined{tcdef@core@coursecoord}{}{%%
- \vfill%
- \hrulefill\\%
- \tcdef@core@coursecoord\\%
- \tcdef@core@coursecoordtitle\\%
- \tcdef@cover@course%
- }%
-}%
-%
-\NewDocumentCommand{\tccover@approvalpageinternshipcoordinfo}{}{%%
- \@ifundefined{tcdef@core@internshipcoord}{}{%%
- \vfill%
- \hrulefill\\%
- \tcdef@core@internshipcoord\\%
- \tcdef@core@internshipcoordtitle\\%
- \tcdef@cover@course%
- }%
-}%
-
+\NewDocumentCommand{\SetCoverFields}{mm+m}{
+ \prop_put:Nnn \l__ufrgscca_coverpages_prop {#1.#2}{#3}
+}
+\NewDocumentCommand{\MakeCoverPages}{m}
+ {
+ \seq_set_from_clist:Ne \l__ufrgscca_tmp_seq {\prop_item:Nn \l__ufrgscca_coverpages_prop {#1.clist} }
+
+ \seq_map_inline:Nn \l__ufrgscca_tmp_seq
+ {
+ \keys_set:nn { ufrgscca / layout }{##1 = #1}
+ }
+
+ }
+
+
+\keys_define:nn { ufrgscca / layout }
+ {
+ cover .usage:n = general,
+ cover .code:n = {\__ufrgscca_cover_page:n{#1}},
+ desc .usage:n = general,
+ desc .code:n = {\__ufrgscca_desc_page:n{#1}},
+ approval .usage:n = general,
+ approval .code:n = {\__ufrgscca_approval_page:n{#1}},
+ }
+
+\cs_generate_variant:Nn \seq_map_inline:Nn {Ne}
+\cs_generate_variant:Nn \seq_set_from_clist:Nn {Ne}
+
+\coffin_new:N \l__ufrgscca_top_coffin
+\coffin_new:N \l__ufrgscca_student_coffin
+\coffin_new:N \l__ufrgscca_title_coffin
+\coffin_new:N \l__ufrgscca_desc_coffin
+\coffin_new:N \l__ufrgscca_adv_coffin
+\coffin_new:N \l__ufrgscca_board_coffin
+\coffin_new:N \l__ufrgscca_coord_coffin
+
+\dim_new:N \l__ufrgscca_top_ht_dim
+
+\dim_new:N \l__ufrgscca_student_voffset_dim
+\dim_new:N \l__ufrgscca_student_ht_dim
+
+\dim_new:N \l__ufrgscca_title_voffset_dim
+\dim_new:N \l__ufrgscca_title_wd_dim
+\dim_new:N \l__ufrgscca_title_ht_dim
+
+\dim_new:N \l__ufrgscca_desc_wd_dim
+\dim_new:N \l__ufrgscca_desc_ht_dim
+\dim_new:N \l__ufrgscca_desc_voffset_dim
+
+\dim_new:N \l__ufrgscca_adv_wd_dim
+\dim_new:N \l__ufrgscca_adv_ht_dim
+\dim_new:N \l__ufrgscca_adv_voffset_dim
+
+
+\cs_new_protected:Npn \__ufrgscca_cover_page_base:n #1
+ {
+ \dim_gset:Nn \l__ufrgscca_title_wd_dim {0.6\textwidth}% {95mm}
+ \dim_gset:Nn \l__ufrgscca_desc_wd_dim {0.6\textwidth}% {95mm}
+ \dim_gset:Nn \l__ufrgscca_adv_wd_dim {0.68\textwidth}% {95mm}
+
+ \vcoffin_gset:Nnn \l__ufrgscca_top_coffin {\textwidth}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.top} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_student_coffin {\l__ufrgscca_title_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.students} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_title_coffin {\l__ufrgscca_title_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.title} }
+
+ \dim_gset:Nn \l__ufrgscca_student_ht_dim {\coffin_ht:N \l__ufrgscca_student_coffin}
+ \dim_gset:Nn \l__ufrgscca_top_ht_dim {\coffin_ht:N \l__ufrgscca_top_coffin}
+ \dim_gset:Nn \l__ufrgscca_title_voffset_dim {0.29\textheight} %%{0.3\textheight}
+ \dim_gset:Nn \l__ufrgscca_desc_voffset_dim {0.42\textheight} %%{0.45\textheight}
+ \dim_gset:Nn \l__ufrgscca_adv_voffset_dim {0.54\textheight}
+ \dim_gset:Nn \l__ufrgscca_student_voffset_dim {(\l__ufrgscca_title_voffset_dim + \l__ufrgscca_top_ht_dim - \l__ufrgscca_student_ht_dim)/2}
+
+ \coffin_gjoin:NnnNnnnn \l__ufrgscca_top_coffin {hc}{t} \l__ufrgscca_student_coffin {hc}{t} {0pt} {-\l__ufrgscca_student_voffset_dim}
+ \coffin_gjoin:NnnNnnnn \l__ufrgscca_top_coffin {hc}{t} \l__ufrgscca_title_coffin {hc}{t} {0pt} {-\l__ufrgscca_title_voffset_dim}
+ }
+
+
+
+
+\cs_new_protected:Npn \__ufrgscca_cover_page:n #1
+ {
+ \__ufrgscca_cover_page_base:n{#1}
+
+ \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt}
+
+ \vfill
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom} }
+ %\newpage
+ \__ufrgscca_clearpage:
+ }
+
+\cs_new_protected:Npn \__ufrgscca_desc_page:n #1
+ {
+ \__ufrgscca_cover_page_base:n{#1}
+
+ \vcoffin_gset:Nnn \l__ufrgscca_desc_coffin {\l__ufrgscca_desc_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.text-descpage} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_adv_coffin {\l__ufrgscca_adv_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.advisor-descpage} }
+
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_desc_coffin {r}{t} {0pt} {-\l__ufrgscca_desc_voffset_dim}
+
+ %\coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-3\parsep}
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-\l__ufrgscca_adv_voffset_dim}
+
+ \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt}
+
+ \vfill
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom-descpage} }
+ %\newpage
+ \__ufrgscca_clearpage:
+ }
+
+
+\cs_new_protected:Npn \__ufrgscca_approval_page:n #1
+ {
+ \__ufrgscca_cover_page_base:n{#1}
+ \vcoffin_gset:Nnn \l__ufrgscca_desc_coffin {\l__ufrgscca_desc_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.text-approvalpage} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_adv_coffin {\l__ufrgscca_adv_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.advisor-approvalpage} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_board_coffin {\textwidth}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.board} }
+
+ \vcoffin_gset:Nnn \l__ufrgscca_coord_coffin {\l__ufrgscca_adv_wd_dim}
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.coord} }
+
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_desc_coffin {r}{t} {0pt} {-\l__ufrgscca_desc_voffset_dim}
+
+ %\coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-3\parsep}
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{t} \l__ufrgscca_adv_coffin {r}{t} {0pt} {-\l__ufrgscca_adv_voffset_dim}
+
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {l}{b} \l__ufrgscca_board_coffin {l}{t} {0pt} {-3\parsep}
+ \coffin_join:NnnNnnnn \l__ufrgscca_top_coffin {r}{b} \l__ufrgscca_coord_coffin {r}{t} {0pt} {-3\parsep}
+
+ \noindent\coffin_typeset:Nnnnn \l__ufrgscca_top_coffin {l}{b} {0pt}{0pt}
+
+ \vfill
+ { \prop_item:Nn \l__ufrgscca_coverpages_prop {#1.bottom-approvalpage} }
+ %\newpage
+ \__ufrgscca_clearpage:
+ }