diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls | 246 |
1 files changed, 153 insertions, 93 deletions
diff --git a/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls b/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls index b48703d7456..e3643987e33 100644 --- a/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls +++ b/Master/texmf-dist/tex/latex/mitthesis/mitthesis.cls @@ -4,11 +4,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% This file provides the mitthesis LaTeX class for formatting theses according to -%% MIT Libraries' requirements as of 2023. +%% MIT Libraries' requirements as of 2024. %% %% This file's version and date: - \def\versionno{1.11} - \def\versiondate{2023/11/02\space} + \def\versionno{1.12} + \def\versiondate{2024/07/02\space} %% %% Author: John H. Lienhard, V %% Department of Mechanical Engineering @@ -25,7 +25,7 @@ %% %% LICENSE: %% -%% Copyright (c) 2023 John H. Lienhard +%% Copyright (c) 2024 John H. Lienhard %% %% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and %% associated documentation files (the "Software"), to deal in the Software without restriction, @@ -57,34 +57,24 @@ \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}% compare version to date; \If... added to latex 2020/10/01 \providecommand\IfPackageAtLeastTF{\@ifpackagelater}% compare version to date; \If... added to latex 2020/10/01 -\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If...added to latex 2021/11/15 +\providecommand\IfPDFManagementActiveTF{\@secondoftwo}% \If... added to latex 2021/07/23 +\providecommand\IfPackageLoadedTF{\@ifpackageloaded}% \If... added to latex 2021/11/15 +\providecommand\ClassNoteNoLine[2]{\typeout{^^JClass Note #1: #2.^^J}}% log & terminal note... added to latex 2021/11/15 \IfFormatAtLeastTF{2020/10/01}{% - \typeout{^^JYour LaTeX format is dated \fmtversion. LaTeX distributions from 2022/11/01 or later are strongly recommended for best results^^J} + \ClassNoteNoLine{\ClassName}{Your LaTeX format is dated \fmtversion. LaTeX distributions from 2022/11/01 or later are strongly recommended for best results} }{% \ClassError{\ClassName}{Your LaTeX format is dated \fmtversion. Formats dated 2022/11/01 or later are strongly recommended for this class. Older formats may generate errors}{Please UPDATE your LaTeX distribution to obtain best results. TeX Live is available for download at no charge: \string https://www.tug.org/texlive/. You can try to click past the errors for now...}% } -% check whether pdfmanagement (\DocumentMetadata) has been loaded (if not, fall back to hyperxmp) +% check whether pdfmanagement (\DocumentMetadata) has been loaded (if not, fall back to hyperxmp and bookmark packages after loading hyperref) \newif\ifmit@pdfmanagement -\ExplSyntaxOn - \msg_new:nnn { \ClassName } { loading_hyperxmp } { pdfmanagement\ is\ not\ active.\ Will\ load\ hyperxmp\ instead. } - % As of 2021/07/23 we could instead use \IfPDFManagementActiveTF{true code}{false code} - \IfFormatAtLeastTF{2020/10/01}{ - \bool_if:nTF - { - \bool_lazy_and_p:nn - { \cs_if_exist_p:N \pdfmanagement_if_active_p: } - { \pdfmanagement_if_active_p: } - } - { \mit@pdfmanagementtrue } - { \mit@pdfmanagementfalse - \msg_warning:nn { \ClassName } { loading_hyperxmp } - } - }{ \mit@pdfmanagementfalse - \msg_warning:nn { \ClassName } { loading_hyperxmp } - } -\ExplSyntaxOff +\IfPDFManagementActiveTF{ + \mit@pdfmanagementtrue +}{ + \mit@pdfmanagementfalse + \ClassWarningNoLine{\ClassName}{pdfmanagement is not active. Will load hyperxmp and bookmark packages instead} +} % Enable pre-2020/10 formats to access essential macros later moved into LaTeX kernel \ifdefined\NewDocumentCommand\else @@ -163,19 +153,35 @@ %%%%%%%%%%%%% Patch table of contents, list of figures, and list of tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\RequirePackage{etoolbox}% provides \patchcmd - -% We'd like these sections to have pdf bookmarks and to have the two lists appear in the table of contents +% We'd like these sections to have pdf bookmarks and to have the two lists appear in the table of contents and have +% pdf bookmarks. This is not automatic for \chapter*, which is the format of toc, lof, and lot. -\patchcmd{\tableofcontents}{\@starttoc{toc}}{\pdfbookmark[0]{Table of Contents}{toc}\@starttoc{toc}}{}{} -\patchcmd{\listoffigures}{\chapter*{\listfigurename}}{\chapter*{\listfigurename}\addcontentsline{toc}{chapter}{\listfigurename}}{}{} -\patchcmd{\listoftables}{\chapter*{\listtablename}}{\chapter*{\listtablename}\addcontentsline{toc}{chapter}{\listtablename}}{}{} +\RequirePackage{etoolbox}% provides \patchcmd +\patchcmd{\tableofcontents}{\contentsname}{\pdfbookmark[0]{Table of Contents}{toc}\contentsname}{}{} % placement matters. +\patchcmd{\listoffigures}{\chapter*{\listfigurename}}{\chapter*{\phantomsection\listfigurename}\addcontentsline{toc}{frontmatter}{\listfigurename}}{}{} +\patchcmd{\listoftables}{\chapter*{\listtablename}}{\chapter*{\phantomsection\listtablename}\addcontentsline{toc}{frontmatter}{\listtablename}}{}{} + +\NewCommandCopy\l@frontmatter\l@chapter +\NewCommandCopy\l@backmatter\l@chapter +\providecommand*{\toclevel@frontmatter}{0}% prevent warning, see hyperref manual Sec. 13.3 +\providecommand*{\toclevel@backmatter}{0} +%% if you want different formatting for front/back matter, change here (cf. report.cls). This approach preserves tagging hooks. +\AtBeginDocument{ + \patchcmd{\l@frontmatter}{\bfseries}{\itshape}{}{} + \patchcmd{\l@frontmatter}{\nobreak\hfil}{\upshape\nobreak\hfil}{}{} + \patchcmd{\l@frontmatter}{1.0em}{3pt}{}{} + \patchcmd{\l@backmatter}{\bfseries}{\itshape}{}{} + \patchcmd{\l@backmatter}{\nobreak\hfil}{\upshape\nobreak\hfil}{}{} +} %%%%%%%%%%%%% Geometry, mathtools, graphics, design, fonts, hyperrefs, bookmarks, footnotes %%%%%%%%%%%%%%%%%%% -%\RequirePackage[letterpaper,top=1in,bottom=0.97136in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.47136in]{geometry} % bottom margin allows 45\baselineskip in \textheight -\RequirePackage[letterpaper,top=1in,bottom=1in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in,heightrounded]{geometry} % 44\baselineskip = \texteheight - \topskip = 650.0pt - 12pt with rounded height +%\RequirePackage[letterpaper,top=1in,bottom=0.97136in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.47136in]{geometry} +% bottom margin allows 45\baselineskip in \textheight + +\RequirePackage[letterpaper,top=1in,bottom=1in,left=1in,right=1in,marginparwidth=50pt,headsep=12pt,footskip=0.5in,heightrounded]{geometry} +% 44\baselineskip = \texteheight - \topskip = 650.0pt - 12pt with rounded height \RequirePackage{mathtools}% loads and extends amsmath; must load before hyperref and unicode-math @@ -198,16 +204,17 @@ https://ctan.org/tex-archive/macros/latex/contrib/mitthesis/MIT-thesis-template.}% }% \else - \RequirePackage[hyperref,dvipsnames,svgnames,x11names]{xcolor} + \RequirePackage[dvipsnames,svgnames,x11names]{xcolor} % \RequirePackage{caption,subcaption} % \RequirePackage{titlesec} % these titlesec commands just automate the bold math in some headings (rest follows default styles) % NOT every font includes a bold math version, so you may need to use other math macros in the headings to get bold math <== - \titleformat{\section}{\mathversion{bold}\normalfont\Large\bfseries}{\thesection }{1em}{} + % Predefined fontsets for which bold math exists are: CMR, Fira, Libertinus, Lucida, newtx + \titleformat{\section}{\mathversion{bold}\normalfont\Large\bfseries}{\thesection}{1em}{} \titleformat{\subsection}{\mathversion{bold}\normalfont\large\bfseries}{\thesubsection}{1em}{} - \titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{} + \titleformat{\subsubsection}{\mathversion{bold}\normalfont\normalsize\bfseries}{\thesubsubsection}{1em}{} % \AtBeginDocument{ \hypersetup{ @@ -226,21 +233,21 @@ \RequirePackage{iftex}[2019/11/07]% provides \ifpdftex, etc. -\typeout{^^JFontset key is \mit@fontset.^^J} +\ClassNoteNoLine{\ClassName}{Fontset key is \mit@fontset} \IfFileExists{fontsets/\ClassName-\mit@fontset.tex}{% 2023/07/03 \input{fontsets/\ClassName-\mit@fontset.tex} }{% - \ClassWarning{\ClassName}{^^JFontset file \ClassName-\mit@fontset.tex or subdirectory fontsets not found, will look for \mit@fontset.tex in your working directory.} + \ClassWarning{\ClassName}{Fontset file \ClassName-\mit@fontset.tex or subdirectory fontsets not found, will look for \mit@fontset.tex in your working directory} \IfFileExists{\mit@fontset.tex}{% 2023/08/30 \input{\mit@fontset.tex} }{ - \ClassWarning{\ClassName}{^^JFontset file \mit@fontset.tex not found, using default fonts. You may need to place the fontset file into your working directory.} + \ClassWarning{\ClassName}{Fontset file \mit@fontset.tex not found, using default fonts. You may need to place the fontset file into your working directory} \ifpdftex - \typeout{^^JLoading Computer Modern text and math fonts (default for pdftex).^^J} + \ClassNoteNoLine{\ClassName}{Loading Computer Modern text and math fonts (default for pdftex)} \RequirePackage[T1]{fontenc} \RequirePackage{bm} \else - \typeout{^^JLoading Latin Modern text and math fonts (default for unicode engines).^^J} + \ClassNoteNoLine{\ClassName}{Loading Latin Modern text and math fonts (default for unicode engines)} \RequirePackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math} % suppress tiresome warnings about lack of integration between mathtools and unicode-math. % Unicode-math loads fontspec package, but default fonts are not selected by fontspec in this case. @@ -251,15 +258,18 @@ %%%%%%%%%%%% Hyperref %%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage[psdextra]{hyperref} -% the new pdf-management scheme loads the bookmarks package internally. % authors should use hypersetup to set details, in root .tex file \urlstyle{same} % this changes font for \url to the current text font -\providecommand\hrefurl[2]{\href{#1}{#2}}% in case \DocumentMetadata has not been loaded \RequirePackage{doi} % create macro for hyperlinking doi numbers +%% In case \DocumentMetadata was not loaded +\providecommand\hrefurl[2]{\href{#1}{#2}} + +% pdfmanagement loads bookmarks package internally \ifmit@pdfmanagement\else \RequirePackage{hyperxmp} + \RequirePackage{bookmark} \fi % the user can alter these choices in the preamble, or by @@ -289,7 +299,7 @@ \pdfstringdefDisableCommands{% \def\bm#1#{\relax}% } -%%% Let's disable \( and \) in pdf bookmarks +%% Let's disable \( and \) in pdf bookmarks \pdfstringdefDisableCommands{% \def\({\relax}% \def\){\relax}% @@ -312,10 +322,22 @@ \def\footnote#1{}% } +%%% Here's a more cumbersome removal of the warning for $ (math shift) in pdfbookmarks. +%%% Not implementing this by default, since novice authors may benefit from the warning. +%%% https://tex.stackexchange.com/a/620360/119566 +%\let\oldHyPsd@CatcodeWarning\HyPsd@CatcodeWarning +%\renewcommand{\HyPsd@CatcodeWarning}[1]{% +% \ifnum\pdfstrcmp{#1}{math shift}=0 % If 'math shift' is present, do nothing +% \else +% \oldHyPsd@CatcodeWarning{#1}% % else, keep usual warning. +% \fi +%} \ExplSyntaxOn %\debug_on:n {all} +\prop_gput:Nnn \g_msg_module_type_prop { \ClassName } { Class } + %%%%%%%%%% Commas between successive footnotes %%% \cs_new:Npn \__mitthesis_NoteComma:n { \peek_meaning:NT \footnote {\textsuperscript{\mdseries,}} } @@ -339,18 +361,19 @@ \tl_gremove_all:No \g__dd_month_tl { \space } \tl_gremove_all:No \g__dd_year_tl { \space } \str_case_e:nnF -% { \str_casefold:e { \tl_to_str:N \g__dd_month_tl } } % not def'd until 2022/10/16 +% { \str_casefold:e { \tl_to_str:N \g__dd_month_tl } } % command not def'd until 2022/10/16 { \str_lowercase:f { \tl_to_str:N \g__dd_month_tl } } { {february}{} {may}{} {june}{} {september}{}} { \msg_error:nnn { \ClassName } { wrong_month } {#1} } } \msg_new:nnnn { \ClassName } { wrong_month } {The\ degree\ month\ must\ be\ one\ of\ February,\ May,\ June,\ or\ September.} {You\ cannot\ use\ #1\ as\ the\ degree\ month.} -\cs_generate_variant:Nn \text_titlecase:n {o,V} +\cs_generate_variant:Nn \text_titlecase_first:n {V} +\cs_generate_variant:Nn \text_titlecase_all:n {V} \NewDocumentCommand\DegreeDate{mm}{% {month}{year} \__dd_setdates:nn {#1}{#2} - \cs_new:Npn \DegreeMonth { \text_titlecase:V { \g__dd_month_tl } } - \cs_new:Npn \DegreeYear { \text_titlecase:V { \g__dd_year_tl } } + \cs_new:Npn \DegreeMonth { \text_titlecase_first:V { \str_lowercase:f \g__dd_month_tl } } + \cs_new:Npn \DegreeYear { \text_expand:n { \g__dd_year_tl } }% edited 2024/06/24 } \msg_new:nnnn { \ClassName } { no_degree_date } {Missing\ degree\ date!}{ You\ MUST\ issue\ the\ \DegreeDate{month}{year}\ command\ between\ \string\begin{document}\ and\ \string\maketitle.} @@ -516,7 +539,6 @@ \seq_new:N \g_supervisor_title_seq \int_gzero_new:N \g_supervisor_supervisorcnt_int - \NewDocumentCommand\Supervisor{mm}{ \tl_if_blank:nTF{#1}{ \msg_error:nn { \ClassName } { blank_supervisor } @@ -535,10 +557,22 @@ \cs_new_protected:Nn \__supervisor_data_add:nn { \int_gincr:N \g_supervisor_supervisorcnt_int - \seq_gput_right:cx { g_supervisor_name_seq } { \tl_trim_spaces:n {#1} } + \seq_gput_right:cx { g_supervisor_name_seq } { \tl_trim_spaces:n {#1} } \seq_gput_right:cx { g_supervisor_title_seq } { \tl_trim_spaces:n {#2} } } +\tl_new:N \g_titlepage_supervisor_designation_tl +\tl_new:N \g_abstract_supervisor_designation_tl +\tl_gset:Nn \g_titlepage_supervisor_designation_tl {Thesis\ Supervisor} +\tl_gset:Nn \g_abstract_supervisor_designation_tl {Thesis\ supervisor}% style from MIT Libraries + +% If for some reason you need to change "Thesis Supervisor" to a different string (say, "Doctoral Advisor") +% This construction removes leading and trailing spaces and lowercases the string. +% Commands in output modules handle titlecasing. +\NewDocumentCommand\SupervisorDesignation{ m } { + \tl_gset:Nn \g_titlepage_supervisor_designation_tl { \str_lowercase:f { \tl_trim_spaces:n {#1} } } + \tl_gset:Nn \g_abstract_supervisor_designation_tl { \str_lowercase:f { \tl_trim_spaces:n {#1} } } + } \cs_new:Nn \__supervisor_abstractblock: { \int_zero_new:N \l__supervisor_supervisorno_int @@ -549,11 +583,13 @@ \msg_error:nn { \ClassName } { no_supervisor } } {\int_until_do:nNnn { \l__supervisor_supervisorno_int } = { \g_supervisor_supervisorcnt_int } { - Thesis\ supervisor:\space \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par + \text_titlecase_first:V { \g_abstract_supervisor_designation_tl } :\space + \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par Title:\space \seq_item:cn { g_supervisor_title_seq } { \l__supervisor_supervisorno_int }\par\medskip \int_incr:N \l__supervisor_supervisorno_int } - Thesis\ supervisor:\space \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par + \text_titlecase_first:V { \g_abstract_supervisor_designation_tl } :\space + \seq_item:cn { g_supervisor_name_seq } { \l__supervisor_supervisorno_int }\par Title:\space \seq_item:cn { g_supervisor_title_seq } { \l__supervisor_supervisorno_int }\ignorespaces } } @@ -607,36 +643,56 @@ %%%%%%%%%% End Acceptor Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%% Degree Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% extensive edits 2024/06/25 \seq_new:N \g_degree_name_seq \seq_new:N \g_degree_department_seq \int_gzero_new:N \g_degree_degreecnt_int -\int_gzero_new:N \g__degree_degreeflag_int +\int_gzero_new:N \g_degree_deptcnt_int \NewDocumentCommand\Degree{mm} { - \tl_if_blank:nTF {#1} { - \msg_error:nn { \ClassName } { blank_degree } - }{ - \__degree_data_add:nn { #1 } { #2 } - } - \tl_if_blank:nT {#2} { - \int_gset_eq:NN \g__degree_degreeflag_int \g_degree_degreecnt_int - \msg_warning:nnx { \ClassName } { blank_degree_dep } { \int_to_arabic:n { \g__degree_degreeflag_int } } - \tl_if_blank:nT {#1} { \int_gincr:N \g__degree_degreeflag_int }% in case both are blank - } + \int_compare:nNnTF { \g_degree_deptcnt_int } = {0} { + \tl_if_blank:nTF {#1} { + \msg_error:nn { \ClassName } { no_degree_name } + }{ + \__degree_data_add:nn { #1 } { #2 } + \int_gincr:N \g_degree_degreecnt_int + } + \tl_if_blank:nT {#2} { + \msg_error:nn { \ClassName } { no_degree_dep } + }{ + \int_gincr:N \g_degree_deptcnt_int + } + }{ + \tl_if_blank:nTF {#1} { + \msg_warning:nn { \ClassName } { blank_degree } + }{ + \__degree_data_add:nn { #1 } { #2 } + \int_gincr:N \g_degree_degreecnt_int + } + \tl_if_blank:nTF {#2} { + \msg_warning:nn { \ClassName } { blank_degree_dep } + }{ + \int_gincr:N \g_degree_deptcnt_int + \tl_if_blank:nT {#1} { % in case department is blank + \__degree_data_add:nn { #1 } { #2 } + } + } + } } + \cs_new_protected:Nn \__degree_data_add:nn { - \int_gincr:N \g_degree_degreecnt_int \seq_gput_right:cx { g_degree_name_seq } { \tl_trim_spaces:n {#1} } \seq_gput_right:cx { g_degree_department_seq } { \tl_trim_spaces:n {#2} } } -\msg_new:nnnn { \ClassName } { blank_degree } {Missing\ degree\ name,\ check\ for\ blank\ in\ \Degree\ command.} - {You\ MUST\ provide\ a\ degree\ name\ using\ the\ \Degree{name}{department}\ command.} -\msg_new:nnnn { \ClassName } { blank_degree_dep } {Missing\ degree\ department\ for\ Degree\ command\ number\ - #1.\ Will\ treat\ as\ a\ duplicate\ of\ previous\ department.}{} +\msg_new:nnnn { \ClassName } { no_degree_name } {Missing\ degree\ name,\ check\ for\ blank\ in\ \Degree\ command.} + {You\ MUST\ provide\ at\ least\ one\ degree\ name\ using\ the\ \Degree{name}{department}\ command.} +\msg_new:nnnn { \ClassName } { no_degree_dep } {Missing\ degree\ department\ for\ Degree\ command.} + {You\ MUST\ provide\ at\ least\ one\ department\ name\ using\ the\ \Degree{name}{department}\ command.} +\msg_new:nnnn { \ClassName } { blank_degree } {Missing\ degree\ name\ in\ second\ Degree\ command.\ Will\ treat\ as\ two\ departments\ issuing\ one\ degree.}{} +\msg_new:nnnn { \ClassName } { blank_degree_dep } {Missing\ degree\ department\ in\ second\ \ Degree\ command.\ Will\ treat\ as\ one\ department\ issuing\ two\ degrees.}{} \int_zero_new:N \l__degree_degreeno_int \int_zero_new:N \l__degree_departmentno_int @@ -651,20 +707,18 @@ \int_incr:N \l__degree_departmentno_int \cs_new:Nx \__degree_prevdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } } \cs_new:Nn \__degree_currdept: {} - \mbox {Submitted\ to\ the\ } \mbox {\__degree_prevdept:} - \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_degreecnt_int } { +% \mbox {Submitted\ to\ the\ } \mbox {\__degree_prevdept:} + {Submitted\ to\ the\ \__degree_prevdept:} + \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_deptcnt_int } { \int_incr:N \l__degree_departmentno_int \cs_set:Nx \__degree_currdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } } - \int_compare:nNnTF { \l__degree_departmentno_int } = {\g__degree_degreeflag_int } { \scan_stop: } - { - \mbox {\ and\ the}\linebreak - \mbox {\__degree_currdept: } - } - } + \mbox {\ and}\linebreak + \mbox {the\ \__degree_currdept: } + } \linebreak \mbox {in\ partial\ fulfillment\ of\ the\ requirements\ for\ the\ \int_compare:nNnTF { \g_degree_degreecnt_int } > {1} {degrees} {degree} \ of} - \par%\medskip, removed 2023/10/25 to work better with four block layout of title page + \par \int_until_do:nNnn { \l__degree_degreeno_int } = { \g_degree_degreecnt_int } { \text_uppercase:n {\seq_item:cn { g_degree_name_seq } { \l__degree_degreeno_int }}\par and\par \int_incr:N \l__degree_degreeno_int @@ -681,16 +735,14 @@ \int_set:Nn \l__degree_departmentno_int {1} \cs_set:Nx \__degree_prevdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } } \cs_set:Nn \__degree_currdept: {} - \mbox {Submitted\ to\ the\ }\mbox{\__degree_prevdept:} - \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_degreecnt_int } { - \int_incr:N \l__degree_departmentno_int +% \mbox {Submitted\ to\ the\ }\mbox {\__degree_prevdept:} % changed 2024/4/20 + {Submitted\ to\ the\ \__degree_prevdept:} + \int_until_do:nNnn { \l__degree_departmentno_int } = { \g_degree_deptcnt_int } { + \int_incr:N \l__degree_departmentno_int \cs_set:Nx \__degree_currdept: {\seq_item:cn { g_degree_department_seq } { \l__degree_departmentno_int } } - \int_compare:nNnTF { \g__degree_degreeflag_int } = { \g_degree_degreecnt_int } { \scan_stop: } - { - \mbox {\ and\ the}\linebreak - \mbox { \__degree_currdept: } - } - } + \mbox {\ and}\linebreak + \mbox {the\ \__degree_currdept: } + } \linebreak \mbox{on\ \g_dd_thesisdate_tl\ in\ partial\ fulfillment\ of\ the\ requirements\ for\ the\ \int_compare:nNnTF { \g_degree_degreecnt_int } > {1} {degrees} {degree} \ of} @@ -749,7 +801,9 @@ \int_do_while:nNnn { \g__signature_supno_int } < { \g_supervisor_supervisorcnt_int } { \int_gincr:N \g__signature_supno_int Certified\ by: \> \seq_item:cn { g_supervisor_name_seq } { \g__signature_supno_int } \\ - \> \seq_item:cn { g_supervisor_title_seq } { \g__signature_supno_int },\ Thesis\ Supervisor\\[1em] + \> \seq_item:cn { g_supervisor_title_seq } { \g__signature_supno_int },\ + \text_titlecase_all:V { \g_titlepage_supervisor_designation_tl }\\[1em] + %\ Thesis\ Supervisor\\[1em] } \int_compare:nNnF { \g_acceptor_acceptorcnt_int } = {0} { \int_do_while:nNnn { \g__signature_accno_int } < { \g_acceptor_acceptorcnt_int } { @@ -908,8 +962,10 @@ {\centering \vbox_to_ht:nn { \vsize }% to prevent signature block from breaking across page { \setlength{\parskip}{7.5pt plus 1pt minus 1pt}% edited all vertical space on this page 2023/10/25 - \setlength{\parindent}{0pt} - {\Large\textbf{\g_mitthesis_title_tl}\phantomsection\addcontentsline{toc}{chapter}{Title\ page}\par} % revise for tagging in future + \setlength{\parindent}{0pt}\pdfbookmark[0]{Title\ page}{titlepage} + {\Large\textbf{\g_mitthesis_title_tl} + %\phantomsection\addcontentsline{toc}{chapter}{Title\ page} + \par} \__titlepage_blockskip:nn {12}{1.5}% new idea \__author_block: \__titlepage_blockskip:nn {12}{1.5} @@ -937,14 +993,17 @@ %%%%%%%%%% Abstract page Module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% to change abstract name, follow either of these approaches in your preamble: +% to change abstract name (e.g., to "Summary"), follow either approach in your preamble: % \RenewExpandableDocumentCommand\abstractname{}{Summary} % \renewcommand\abstractname{Summary} \RenewDocumentEnvironment{abstract}{+b}{ \newpage \begin{center} - {\large{\textbf{\g_mitthesis_title_tl}}\phantomsection\addcontentsline{toc}{chapter}{\abstractname}\par} % revise for tagging as LaTeX evolves further + \pdfbookmark[0]{Abstract}{abstract} + {\large{\textbf{\g_mitthesis_title_tl}} + %\phantomsection\addcontentsline{toc}{chapter}{\abstractname} + \par} \setlength{\parskip}{0.5\baselineskip plus 2pt minus 2pt} \__author_abstractblock: \par @@ -992,11 +1051,12 @@ % Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns. % Second optional argument can be used to rename the environment, e.g., to List of Symbols. % Third optional argument selects section-level or chapter-level style for the nomenclature list. +\newcounter{dummy}% for tagging code \NewDocumentEnvironment{nomenclature}{O{2em} O{\nomname} O{section}}{% \setlength\columnsep{2em} \setlength{\nomenwidth}{#1} \csname #3\endcsname *{#2}% this level will vary amongst users! - \phantomsection\addcontentsline{toc}{#3}{#2}% tagged pdf may not capture both of these ... 2023/10/18 + \refstepcounter{dummy}\addcontentsline{toc}{#3}{#2}% \refstepcounter is a hack until tagging code evolves more \raggedright \begin{list}{}{% \setlength{\itemsep}{0pt}% |