From 838c0e99dff5105c92ac08d5b7ed3f10c0318e1c Mon Sep 17 00:00:00 2001 From: Alexara Wu Date: Wed, 28 Dec 2022 00:08:40 +0800 Subject: [PATCH] V2 pretest --- .gitattributes | 2 - .latexmkrc | 12 +- build_v1.sh | 26 - build_v2.sh | 15 - contents/floats.tex | 63 +- contents/math_and_citations.tex | 2 +- contents/nomenclature.tex | 2 + dev-v2.tex | 203 -- figures/pressure15.jpg | Bin 34053 -> 0 bytes figures/pressure25.jpg | Bin 34670 -> 0 bytes setup.tex | 12 +- .../sjtutex/config/sjtu-lang-article-en.cfg | 63 + .../sjtutex/config/sjtu-lang-article-zh.cfg | 80 + .../sjtutex/config/sjtu-lang-report-en.cfg | 63 + .../sjtutex/config/sjtu-lang-report-zh.cfg | 85 + .../sjtutex/config/sjtu-lang-thesis-en.cfg | 63 + .../sjtutex/config/sjtu-lang-thesis-zh.cfg | 91 + .../sjtutex/config/sjtu-name-generic.cfg | 52 + .../latex/sjtutex/config/sjtu-name-thesis.cfg | 117 ++ .../latex/sjtutex/fd/sjtu-cjk-font-adobe.def | 57 + .../latex/sjtutex/fd/sjtu-cjk-font-fandol.def | 88 + .../sjtutex/fd/sjtu-cjk-font-founder.def | 56 + .../latex/sjtutex/fd/sjtu-cjk-font-mac.def | 78 + .../latex/sjtutex/fd/sjtu-cjk-font-ubuntu.def | 71 + .../sjtutex/fd/sjtu-cjk-font-windows.def | 56 + .../sjtutex/fd/sjtu-math-font-cambria.def | 42 + .../latex/sjtutex/fd/sjtu-math-font-lm.def | 55 + .../latex/sjtutex/fd/sjtu-math-font-newcm.def | 103 + .../latex/sjtutex/fd/sjtu-math-font-newpx.def | 48 + .../latex/sjtutex/fd/sjtu-math-font-newtx.def | 48 + .../sjtutex/fd/sjtu-math-font-stixtwo.def | 82 + .../latex/sjtutex/fd/sjtu-math-font-times.def | 43 + .../latex/sjtutex/fd/sjtu-math-font-xits.def | 88 + .../sjtutex/fd/sjtu-text-font-cambria.def | 40 + .../latex/sjtutex/fd/sjtu-text-font-lm.def | 36 + .../latex/sjtutex/fd/sjtu-text-font-newcm.def | 91 + .../latex/sjtutex/fd/sjtu-text-font-newpx.def | 66 + .../latex/sjtutex/fd/sjtu-text-font-newtx.def | 66 + .../sjtutex/fd/sjtu-text-font-stixtwo.def | 70 + .../latex/sjtutex/fd/sjtu-text-font-times.def | 44 + .../latex/sjtutex/fd/sjtu-text-font-xits.def | 66 + texmf/tex/latex/sjtutex/sjtuarticle.cls | 1348 +++++++++++++ texmf/tex/latex/sjtutex/sjtureport.cls | 1384 ++++++++++++++ texmf/tex/latex/sjtutex/sjtuthesis.cls | 1682 +++++++++++++++++ .../vi/sjtu-vi-badge-black.pdf | Bin .../vi/sjtu-vi-badge-blue.pdf | Bin .../vi/sjtu-vi-badge-red.pdf | Bin .../vi/sjtu-vi-logo-black.pdf | Bin .../vi/sjtu-vi-logo-blue.pdf | Bin .../vi/sjtu-vi-logo-red.pdf | Bin .../vi/sjtu-vi-name-black.pdf | Bin .../vi/sjtu-vi-name-blue.pdf | Bin .../vi/sjtu-vi-name-red.pdf | Bin .../sjtuthesis/fd/sjtu-cjk-font-adobe.def | 45 - .../sjtuthesis/fd/sjtu-cjk-font-fandol.def | 65 - .../sjtuthesis/fd/sjtu-cjk-font-founder.def | 45 - .../latex/sjtuthesis/fd/sjtu-cjk-font-mac.def | 56 - .../sjtuthesis/fd/sjtu-cjk-font-ubuntu.def | 51 - .../sjtuthesis/fd/sjtu-cjk-font-windows.def | 45 - .../sjtuthesis/fd/sjtu-math-font-cambria.def | 33 - .../latex/sjtuthesis/fd/sjtu-math-font-lm.def | 41 - .../sjtuthesis/fd/sjtu-math-font-newcm.def | 84 - .../sjtuthesis/fd/sjtu-math-font-newpx.def | 42 - .../sjtuthesis/fd/sjtu-math-font-newtx.def | 42 - .../sjtuthesis/fd/sjtu-math-font-stixtwo.def | 79 - .../sjtuthesis/fd/sjtu-math-font-xits.def | 83 - .../sjtuthesis/fd/sjtu-text-font-cambria.def | 31 - .../latex/sjtuthesis/fd/sjtu-text-font-lm.def | 28 - .../sjtuthesis/fd/sjtu-text-font-newcm.def | 76 - .../sjtuthesis/fd/sjtu-text-font-newpx.def | 51 - .../sjtuthesis/fd/sjtu-text-font-newtx.def | 51 - .../sjtuthesis/fd/sjtu-text-font-stixtwo.def | 61 - .../sjtuthesis/fd/sjtu-text-font-times.def | 31 - .../sjtuthesis/fd/sjtu-text-font-xits.def | 61 - .../latex/sjtuthesis/sjtuthesis-graduate.ltx | 180 -- .../sjtuthesis/sjtuthesis-undergraduate.ltx | 162 -- texmf/tex/latex/sjtuthesis/sjtuthesis.cls | 1329 ------------- 77 files changed, 6453 insertions(+), 3078 deletions(-) delete mode 100755 build_v1.sh delete mode 100755 build_v2.sh delete mode 100644 dev-v2.tex delete mode 100644 figures/pressure15.jpg delete mode 100644 figures/pressure25.jpg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-lang-article-en.cfg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-lang-article-zh.cfg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-lang-report-en.cfg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-lang-report-zh.cfg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-en.cfg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-zh.cfg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-name-generic.cfg create mode 100644 texmf/tex/latex/sjtutex/config/sjtu-name-thesis.cfg create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-adobe.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-fandol.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-founder.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-mac.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-ubuntu.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-windows.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-cambria.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-lm.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-newcm.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-newpx.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-newtx.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-stixtwo.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-times.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-math-font-xits.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-cambria.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-lm.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-newcm.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-newpx.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-newtx.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-stixtwo.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-times.def create mode 100644 texmf/tex/latex/sjtutex/fd/sjtu-text-font-xits.def create mode 100644 texmf/tex/latex/sjtutex/sjtuarticle.cls create mode 100644 texmf/tex/latex/sjtutex/sjtureport.cls create mode 100644 texmf/tex/latex/sjtutex/sjtuthesis.cls rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-badge-black.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-badge-blue.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-badge-red.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-logo-black.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-logo-blue.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-logo-red.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-name-black.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-name-blue.pdf (100%) rename texmf/tex/latex/{sjtuthesis => sjtutex}/vi/sjtu-vi-name-red.pdf (100%) delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-adobe.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-fandol.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-founder.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-mac.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-ubuntu.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-windows.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-cambria.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-lm.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newcm.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newpx.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newtx.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-stixtwo.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-xits.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-cambria.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-lm.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newcm.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newpx.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newtx.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-stixtwo.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-times.def delete mode 100644 texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-xits.def delete mode 100644 texmf/tex/latex/sjtuthesis/sjtuthesis-graduate.ltx delete mode 100644 texmf/tex/latex/sjtuthesis/sjtuthesis-undergraduate.ltx delete mode 100644 texmf/tex/latex/sjtuthesis/sjtuthesis.cls diff --git a/.gitattributes b/.gitattributes index acad8a88..6954a1b2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -13,5 +13,3 @@ /.github export-ignore .gitattributes export-ignore .gitignore export-ignore -build_v*.sh export-ignore -dev-v2.tex export-ignore diff --git a/.latexmkrc b/.latexmkrc index d331e1ab..116d25ae 100644 --- a/.latexmkrc +++ b/.latexmkrc @@ -9,15 +9,13 @@ $ENV{'TZ'}='Asia/Shanghai'; # Ensure './texmf//' is in '$TEXINPUTS'. ensure_path( 'TEXINPUTS', './texmf//' ); -# Use lualatex with latexmk. -# $pdf_mode = 4; - -# Use xelatex with latexmk. +# PDF generate method +# - 1 pdfTeX +# - 3 LaTeX + DVIPDFMx +# - 4 LuaLaTeX +# - 5 XeLaTeX $pdf_mode = 5; -# Disable postscript and dvi output. -$postscript_mode = $dvi_mode = 0; - # Add common patterns for tex engines. set_tex_cmds( '-synctex=1 %O %S' ); diff --git a/build_v1.sh b/build_v1.sh deleted file mode 100755 index e104c4c7..00000000 --- a/build_v1.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -set -e - -SJTUTEX_DIR="SJTUTeX-v1" - -if [ ! -d "${SJTUTEX_DIR}" ]; then - git clone https://github.com/sjtug/SJTUTeX -b v1 ${SJTUTEX_DIR} -fi - -cd ${SJTUTEX_DIR}/source -xetex -interaction=nonstopmode sjtuthesis.ins -cd ../../ - -rm -rf texmf/tex/latex/sjtuthesis -mkdir texmf/tex/latex/sjtuthesis - -RELEASE_DIR="texmf/tex/latex/sjtuthesis" - -cp ${SJTUTEX_DIR}/source/sjtuthesis.cls ${RELEASE_DIR} -cp ${SJTUTEX_DIR}/source/sjtuthesis-graduate.ltx ${RELEASE_DIR} -cp ${SJTUTEX_DIR}/source/sjtuthesis-undergraduate.ltx ${RELEASE_DIR} -cp -a ${SJTUTEX_DIR}/vi ${RELEASE_DIR} -mkdir -p ${RELEASE_DIR}/fd -cp ${SJTUTEX_DIR}/source/*-font-*.def ${RELEASE_DIR}/fd - -make main.pdf diff --git a/build_v2.sh b/build_v2.sh deleted file mode 100755 index aad9f9e4..00000000 --- a/build_v2.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -set -e - -SJTUTEX_DIR="SJTUTeX-v2" - -if [ ! -d "${SJTUTEX_DIR}" ]; then - git clone https://github.com/sjtug/SJTUTeX -b v2 ${SJTUTEX_DIR} -fi - -cd ${SJTUTEX_DIR} && make generate && cd .. -rm -rf texmf/tex/latex/sjtuthesis -ln -s $(pwd)/${SJTUTEX_DIR}/sjtuthesis/build/unpacked texmf/tex/latex/sjtuthesis - -latexmk dev-v2.tex -xelatex -time -file-line-error -halt-on-error -interaction=nonstopmode diff --git a/contents/floats.tex b/contents/floats.tex index 31b165ee..7ffe6a1a 100644 --- a/contents/floats.tex +++ b/contents/floats.tex @@ -30,13 +30,6 @@ \subsection{单个图形} \label{fig:cn_100t} \end{figure} -Lorem ipsum dolor sit amet, consectetur adipisici elit, sed do eiusmod tempor -incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis -nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu -fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in -culpa qui officia deserunt mollit anim id est laborum. - \subsection{多个图形} 简单插入多个图形的例子如图~\ref{fig:SRR} 所示。这两个水平并列放置的子图共用一个 @@ -69,13 +62,6 @@ \subsection{多个图形} \end{minipage} \end{figure} -Lorem ipsum dolor sit amet, consectetur adipisici elit, sed do eiusmod tempor -incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis -nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu -fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in -culpa qui officia deserunt mollit anim id est laborum. - 如果要为共用一个计数器的多个子图添加子图题,建议使用较新的 \pkg{subcaption}宏 包,不建议使用 \pkg{subfigure} 或 \pkg{subfig} 等宏包。 @@ -83,24 +69,6 @@ \subsection{多个图形} 下,子图号用 a)、b) 等表示。也可以使用 \pkg{subcaption} 宏包的 \cs{subcaption} (放在 minipage中,用法同 \cs{caption})。 -搭配 \pkg{bicaption} 宏包时,可以启用 \cs{subcaptionbox} 和 \cs{subcaption} 的双 -语变种 \cs{bisubcaptionbox} 和 \cs{bisubcaption},如图~\ref{fig:bisubcaptionbox} -所示。 - -\begin{figure}[!hbtp] - \centering - \bisubcaptionbox{$R_3 = 1.5\text{mm}$ 时轴承的压力分布云图}% - {Pressure contour of bearing when $R_3 = 1.5\text{mm}$}% - [6.4cm]{\includegraphics[height=2.5cm]{pressure15.jpg}} - \hspace{1cm} - \bisubcaptionbox{$R_3 = 2.5\text{mm}$ 时轴承的压力分布云图}% - {Pressure contour of bearing when $R_3 = 2.5\text{mm}$}% - [6.4cm]{\includegraphics[height=2.5cm]{/pressure25.jpg}} - \bicaption{包含子图题的范例(使用 subcaptionbox)} - {Example with subcaptionbox} - \label{fig:bisubcaptionbox} -\end{figure} - \pkg{subcaption} 宏包也提供了 \pkg{subfigure} 和 \pkg{subtable} 环境,如 图~\ref{fig:subfigure}。 @@ -121,12 +89,24 @@ \subsection{多个图形} \label{fig:subfigure} \end{figure} -Lorem ipsum dolor sit amet, consectetur adipisici elit, sed do eiusmod tempor -incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis -nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu -fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in -culpa qui officia deserunt mollit anim id est laborum. +搭配 \pkg{bicaption} 宏包时,可以启用 \cs{subcaptionbox} 和 \cs{subcaption} 的双 +语变种 \cs{bisubcaptionbox} 和 \cs{bisubcaption},如图~\ref{fig:bisubcaptionbox} +所示。 + +\begin{figure}[!hbtp] + \centering + \bisubcaptionbox{$R_3 = 1.5\text{mm}$ 时轴承的压力分布云图}% + {Pressure contour of bearing when $R_3 = 1.5\text{mm}$}% + [6.4cm]{\includegraphics[height=3cm]{example-image-a.pdf}} + \hspace{1cm} + \bisubcaptionbox{$R_3 = 2.5\text{mm}$ 时轴承的压力分布云图}% + {Pressure contour of bearing when $R_3 = 2.5\text{mm}$}% + [6.4cm]{\includegraphics[height=3cm]{example-image-b.pdf}} + \bicaption{包含子图题的范例(使用 subcaptionbox)} + {Example with subcaptionbox} + \label{fig:bisubcaptionbox} +\end{figure} + \section{表格} @@ -188,13 +168,6 @@ \subsection{复杂表格} \end{threeparttable} \end{table} -Lorem ipsum dolor sit amet, consectetur adipisici elit, sed do eiusmod tempor -incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis -nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu -fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in -culpa qui officia deserunt mollit anim id est laborum. - 如某个表需要转页接排,可以用 \pkg{longtable} 实现。接排时表题省略,表头应重复书 写,并在右上方写“续表 xx”,如表~\ref{tab:performance}。 diff --git a/contents/math_and_citations.tex b/contents/math_and_citations.tex index d6d9c50d..fc55b12b 100644 --- a/contents/math_and_citations.tex +++ b/contents/math_and_citations.tex @@ -120,7 +120,7 @@ \subsection{定理环境} \section{引用文献的标注} 按照教务处的要求,参考文献外观应符合国标 GB/T 7714 的要求。模版使用 \BibLaTeX\ -配合 \pkg{biblatex-gb7714-2015} 样式包 +配合 \pkg{biblatex-gb7714-2015} 样式包% \footnote{\url{https://www.ctan.org/pkg/biblatex-gb7714-2015}} 控制参考文献的输出样式,后端采用 \pkg{biber} 管理文献。 diff --git a/contents/nomenclature.tex b/contents/nomenclature.tex index 3ebe74f0..9c478187 100644 --- a/contents/nomenclature.tex +++ b/contents/nomenclature.tex @@ -3,6 +3,8 @@ \begin{nomenclature*} \label{chap:symb} +\sjtusetup{style={float-font=\normalsize}} + \begin{longtable}{rl} $\epsilon$ & 介电常数 \\ $\mu$ & 磁导率 \\ diff --git a/dev-v2.tex b/dev-v2.tex deleted file mode 100644 index 2a336329..00000000 --- a/dev-v2.tex +++ /dev/null @@ -1,203 +0,0 @@ -% !TeX encoding = UTF-8 - -% 这个模版是 SJTUTeX v2 的测试模版。如果您是 SJTUThesis 示例模版的用户,请无视这个文件。 - -% 载入 SJTUThesis 模版 -\documentclass[type=bachelor]{sjtuthesis} - -\title{上海交通大学学位论文 \LaTeX{} 模板示例文档} - -\sjtusetup{ - info = { - title = {上海交通大学学位论文 \LaTeX{} 模板示例文档}, - title* = {A Sample Document for \LaTeX-based SJTU Thesis Template}, - % display-title = {上海交通大学学位论文\\ \LaTeX{} 模板示例文档}, - % display-title* = {A Sample Document \\ for \LaTeX-based SJTU Thesis Template}, - % running-title = {示例文档}, - % running-title* = {Sample Document}, - keywords = {上海交大, 饮水思源, 爱国荣校}, - keywords* = {SJTU, master thesis, XeTeX/LaTeX template}, - author = {某\quad{}某}, - author* = {Mo Mo}, - supervisor = {某某教授}, - supervisor* = {Prof. Mou Mou}, - assoc-supervisor = {某某教授}, - assoc-supervisor* = {Prof. Uom Uom}, - id = {0010900990}, - degree = {工学硕士}, - degree* = {Master of Engineering}, - major = {某某专业}, - major* = {A Very Important Major}, - department = {某某系}, - department* = {Depart of XXX}, - }, - style = { - header-logo-color = blue, - title-logo-color = blue, - }, -} - -% 使用 BibLaTeX 处理参考文献 -% biblatex-gb7714-2015 常用选项 -% gbnamefmt=lowercase 姓名大小写由输入信息确定 -% gbpub=false 禁用出版信息缺失处理 -\usepackage[backend=biber,style=gb7714-2015]{biblatex} -% 文献表字体 -% \renewcommand{\bibfont}{\zihao{-5}} -% 文献表条目间的间距 -\setlength{\bibitemsep}{0pt} -% 导入参考文献数据库 -\addbibresource{bibdata/thesis.bib} - -% 定义图片文件目录与扩展名 -\graphicspath{{figures/}} -\DeclareGraphicsExtensions{.pdf,.eps,.png,.jpg,.jpeg} - -% 确定浮动对象的位置,可以使用 [H],强制将浮动对象放到这里(可能效果很差) -% \usepackage{float} - -% 固定宽度的表格 -% \usepackage{tabularx} - -% 表格中支持跨行 -\usepackage{multirow} - -% 表格中数字按小数点对齐 -\usepackage{dcolumn} -\newcolumntype{d}[1]{D{.}{.}{#1}} - -% 使用长表格 -\usepackage{longtable} - -% 附带脚注的表格 -\usepackage{threeparttable} - -% 附带脚注的长表格 -\usepackage{threeparttablex} - -% 使用三线表:toprule,midrule,bottomrule。 -\usepackage{booktabs} - -% 算法环境宏包 -\usepackage[ruled,vlined,linesnumbered]{algorithm2e} -% \usepackage{algorithm, algorithmicx, algpseudocode} - -% 代码环境宏包 -\usepackage{listings} -\lstnewenvironment{codeblock}[1][]% - {\lstset{style=lstStyleCode,#1}}{} - -% 物理科学和技术中使用的数学符号,定义了 \qty 命令,与 siunitx 3.0 有冲突 -% \usepackage{physics} - -% 直立体数学符号 -\newcommand{\dd}{\mathop{}\!\mathrm{d}} -\newcommand{\ee}{\mathrm{e}} -\newcommand{\ii}{\mathrm{i}} -\newcommand{\jj}{\mathrm{j}} - -% 国际单位制宏包 -\usepackage{siunitx}[=v2] - -% 定理环境宏包 -\usepackage{ntheorem} -% \usepackage{amsthm} - -% 绘图宏包 -\usepackage{tikz} -\usetikzlibrary{shapes.geometric, arrows} - -% 一些文档中用到的 logo -\usepackage{hologo} -\newcommand{\XeTeX}{\hologo{XeTeX}} -\newcommand{\BibLaTeX}{\textsc{Bib}\LaTeX} - -% 借用 ltxdoc 里面的几个命令方便写文档 -\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} -\providecommand\pkg[1]{{\sffamily#1}} - -% 自定义命令 - -% E-mail -\newcommand{\email}[1]{\href{mailto:#1}{\texttt{#1}}} - -% hyperref 宏包在最后调用 -\usepackage{hyperref} - -\begin{document} - -%TC:ignore - -% 标题页 -\maketitle - -% 原创性声明及使用授权书 -% \copyrightpage -% 插入外置原创性声明及使用授权书 -% \copyrightpage[scans/sample-copyright-old.pdf] - -% 前置部分 -\frontmatter - -% 摘要 -\input{contents/abstract} - -% 目录 -\tableofcontents -% 插图索引 -\listoffigures* -% 表格索引 -\listoftables* -% 算法索引 -\listofalgorithms* - -% 符号对照表 -\input{contents/nomenclature} - -%TC:endignore - -% 主体部分 -\mainmatter - -% 正文内容 -\input{contents/intro} -\input{contents/math_and_citations} -\input{contents/floats} -\input{contents/summary} - -%TC:ignore - -% 参考文献 -\printbibliography[heading=bibintoc] - -% 附录 -\appendix - -% 附录中图表不加入索引 -\captionsetup{list=no} - -% 附录内容 -\input{contents/app_maxwell_equations} -\input{contents/app_flow_chart} - -% 结尾部分 -\backmatter - -% 用于盲审的论文需隐去致谢、发表论文、科研成果、简历 - -% 致谢 -\input{contents/acknowledgements} - -% 发表论文、科研成果 -% 盲审论文中,发表论文及科研成果等仅以第几作者注明即可,不要出现作者或他人姓名 -\input{contents/achievements} - -% 简历 -\input{contents/resume} - -% 学士学位论文要求在最后有一个大摘要,单独编页码 -\input{contents/digest} - -%TC:endignore - -\end{document} diff --git a/figures/pressure15.jpg b/figures/pressure15.jpg deleted file mode 100644 index cf8f23751ba6536fd65d4a8648ca26a7ede76c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34053 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 diff --git a/figures/pressure25.jpg b/figures/pressure25.jpg deleted file mode 100644 index 196631b691e91cb915de1dc9c6c803c03f3409cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34670 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 I{_pDl0iUi|)&Kwi diff --git a/setup.tex b/setup.tex index 281a6a3f..64f4923d 100644 --- a/setup.tex +++ b/setup.tex @@ -45,8 +45,8 @@ % % 副指导教师 % - % assisupervisor = {某某教授}, - % assisupervisor* = {Prof. Uom Uom}, + % assoc-supervisor = {某某教授}, + % assoc-supervisor* = {Prof. Uom Uom}, % % 学号 % @@ -68,11 +68,6 @@ department = {某某系}, department* = {Depart of XXX}, % - % 课程名称 - % 仅课程论文适用 - % - course = {某某课程}, - % % 答辩日期 % 使用 ISO 格式 (yyyy-mm-dd);默认为当前时间 % @@ -120,6 +115,9 @@ % 导入参考文献数据库 \addbibresource{bibdata/thesis.bib} +% 脚注格式 +\usepackage[perpage,bottom,hang]{footmisc} + % 定义图片文件目录与扩展名 \graphicspath{{figures/}} \DeclareGraphicsExtensions{.pdf,.eps,.png,.jpg,.jpeg} diff --git a/texmf/tex/latex/sjtutex/config/sjtu-lang-article-en.cfg b/texmf/tex/latex/sjtutex/config/sjtu-lang-article-en.cfg new file mode 100644 index 00000000..1262078b --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-lang-article-en.cfg @@ -0,0 +1,63 @@ +%% +%% This is file `sjtu-lang-article-en.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `lang,article,en') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {SJTUArticle English config (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-article-en.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\clist_map_inline:nn + { + { assumption } + { Assumption } , + { axiom } + { Axiom } , + { conjecture } + { Conjecture } , + { corollary } + { Corollary } , + { definition } + { Definition } , + { example } + { Example } , + { exercise } + { Exercise } , + { lemma } + { Lemma } , + { problem } + { Problem } , + { proposition } + { Proposition } , + { remark } + { Remark } , + { solution } + { Solution } , + { theorem } + { Theorem } , + } + { \__sjtu_define_name_g:nn #1 } +\endinput +%% +%% End of file `sjtu-lang-article-en.cfg'. diff --git a/texmf/tex/latex/sjtutex/config/sjtu-lang-article-zh.cfg b/texmf/tex/latex/sjtutex/config/sjtu-lang-article-zh.cfg new file mode 100644 index 00000000..2e9a1781 --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-lang-article-zh.cfg @@ -0,0 +1,80 @@ +%% +%% This is file `sjtu-lang-article-zh.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `lang,article,zh') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {SJTUArticle Chinese config (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-article-zh.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\keys_set_known:nn { sjtu / name } + { + contents = 目 \quad 录 , + listfigure = 插 \quad 图 , + listtable = 表 \quad 格 , + figure = 图 , + table = 表 , + abstract = 摘 \quad 要 , + index = 索 \quad 引 , + appendix = 附录 , + proof = 证明 , + bib = 参考文献 , + figure* = Figure , + table* = Table , + algorithm = 算法 , + listalgorithm = 算 \quad 法 , + } +\clist_map_inline:nn + { + { assumption } + { 假设 } , + { axiom } + { 公理 } , + { conjecture } + { 猜想 } , + { corollary } + { 推论 } , + { definition } + { 定义 } , + { example } + { 例 } , + { exercise } + { 练习 } , + { lemma } + { 引理 } , + { problem } + { 问题 } , + { proposition } + { 命题 } , + { remark } + { 注 } , + { solution } + { 解 } , + { theorem } + { 定理 } , + } + { \__sjtu_define_name_g:nn #1 } +\endinput +%% +%% End of file `sjtu-lang-article-zh.cfg'. diff --git a/texmf/tex/latex/sjtutex/config/sjtu-lang-report-en.cfg b/texmf/tex/latex/sjtutex/config/sjtu-lang-report-en.cfg new file mode 100644 index 00000000..b648adcc --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-lang-report-en.cfg @@ -0,0 +1,63 @@ +%% +%% This is file `sjtu-lang-report-en.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `lang,report,en') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {SJTUReport English config (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-report-en.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\clist_map_inline:nn + { + { assumption } + { Assumption } , + { axiom } + { Axiom } , + { conjecture } + { Conjecture } , + { corollary } + { Corollary } , + { definition } + { Definition } , + { example } + { Example } , + { exercise } + { Exercise } , + { lemma } + { Lemma } , + { problem } + { Problem } , + { proposition } + { Proposition } , + { remark } + { Remark } , + { solution } + { Solution } , + { theorem } + { Theorem } , + } + { \__sjtu_define_name_g:nn #1 } +\endinput +%% +%% End of file `sjtu-lang-report-en.cfg'. diff --git a/texmf/tex/latex/sjtutex/config/sjtu-lang-report-zh.cfg b/texmf/tex/latex/sjtutex/config/sjtu-lang-report-zh.cfg new file mode 100644 index 00000000..964de842 --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-lang-report-zh.cfg @@ -0,0 +1,85 @@ +%% +%% This is file `sjtu-lang-report-zh.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `lang,report,zh') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {SJTUReport Chinese config (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-report-zh.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\keys_set_known:nn { sjtu / name } + { + contents = 目 \quad 录 , + listfigure = 插 \quad 图 , + listtable = 表 \quad 格 , + figure = 图 , + table = 表 , + abstract = 摘 \quad 要 , + index = 索 \quad 引 , + appendix = 附录 , + proof = 证明 , + bib = 参考文献 , + figure* = Figure , + table* = Table , + algorithm = 算法 , + listalgorithm = 算 \quad 法 , + } +\ctex_set:nn { chapter } + { + name = { 第 , 章 } , + number = \chinese { chapter } + } +\clist_map_inline:nn + { + { assumption } + { 假设 } , + { axiom } + { 公理 } , + { conjecture } + { 猜想 } , + { corollary } + { 推论 } , + { definition } + { 定义 } , + { example } + { 例 } , + { exercise } + { 练习 } , + { lemma } + { 引理 } , + { problem } + { 问题 } , + { proposition } + { 命题 } , + { remark } + { 注 } , + { solution } + { 解 } , + { theorem } + { 定理 } , + } + { \__sjtu_define_name_g:nn #1 } +\endinput +%% +%% End of file `sjtu-lang-report-zh.cfg'. diff --git a/texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-en.cfg b/texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-en.cfg new file mode 100644 index 00000000..fa60187e --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-en.cfg @@ -0,0 +1,63 @@ +%% +%% This is file `sjtu-lang-thesis-en.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `lang,thesis,en') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {SJTUThesis English config (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-thesis-en.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\clist_map_inline:nn + { + { assumption } + { Assumption } , + { axiom } + { Axiom } , + { conjecture } + { Conjecture } , + { corollary } + { Corollary } , + { definition } + { Definition } , + { example } + { Example } , + { exercise } + { Exercise } , + { lemma } + { Lemma } , + { problem } + { Problem } , + { proposition } + { Proposition } , + { remark } + { Remark } , + { solution } + { Solution } , + { theorem } + { Theorem } , + } + { \__sjtu_define_name_g:nn #1 } +\endinput +%% +%% End of file `sjtu-lang-thesis-en.cfg'. diff --git a/texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-zh.cfg b/texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-zh.cfg new file mode 100644 index 00000000..c8be36b7 --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-lang-thesis-zh.cfg @@ -0,0 +1,91 @@ +%% +%% This is file `sjtu-lang-thesis-zh.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `lang,thesis,zh') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {SJTUThesis Chinese config (SJTUTeX)} +\ProvidesExplFile{sjtu-lang-thesis-zh.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\keys_set_known:nn { sjtu / name } + { + contents = 目 \quad 录 , + listfigure = 插 \quad 图 , + listtable = 表 \quad 格 , + figure = 图 , + table = 表 , + index = 索 \quad 引 , + appendix = 附录 , + proof = 证明 , + bib = 参考文献 , + figure* = Figure , + table* = Table , + algorithm = 算法 , + listalgorithm = 算 \quad 法 , + abbr = 缩略语对照表 , + nom = 符号对照表 , + summary = 全文总结 , + ack = 致 \quad 谢 , + resume = 个人简历 , + digest = 大摘要 , + achv = 学术论文和科研成果目录 + } +\ctex_set:nn { chapter } + { + name = { 第 , 章 } , + number = \chinese { chapter } + } +\clist_map_inline:nn + { + { assumption } + { 假设 } , + { axiom } + { 公理 } , + { conjecture } + { 猜想 } , + { corollary } + { 推论 } , + { definition } + { 定义 } , + { example } + { 例 } , + { exercise } + { 练习 } , + { lemma } + { 引理 } , + { problem } + { 问题 } , + { proposition } + { 命题 } , + { remark } + { 注 } , + { solution } + { 解 } , + { theorem } + { 定理 } , + } + { \__sjtu_define_name_g:nn #1 } +\endinput +%% +%% End of file `sjtu-lang-thesis-zh.cfg'. diff --git a/texmf/tex/latex/sjtutex/config/sjtu-name-generic.cfg b/texmf/tex/latex/sjtutex/config/sjtu-name-generic.cfg new file mode 100644 index 00000000..06105ec0 --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-name-generic.cfg @@ -0,0 +1,52 @@ +%% +%% This is file `sjtu-name-generic.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `name,generic') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Generic name config (SJTUTeX)} +\ProvidesExplFile{sjtu-name-generic.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\clist_map_inline:nn + { + { author } { 姓名 } , + { id } { 学号 } , + { supervisor } { 指导教师 } , + { assoc_supervisor } { 副指导教师 } , + { department } { 院系 } , + } + { \__sjtu_define_name:nn #1 } +\clist_map_inline:nn + { + { univ } { 上海交通大学 } { Shanghai~ Jiao~ Tong~ University } , + { address } { 中国 \quad 上海 } { Shanghai,~ P.R.~ China } , + { title_page } { 题名页 } { Title~ Page } , + { keywords } { 关键词: } { Key~words:~ } , + { info_sep } { : } { :~ } , + { item_sep } { , } { ,~ } + } + { \__sjtu_define_name_g:nnn #1 } +\endinput +%% +%% End of file `sjtu-name-generic.cfg'. diff --git a/texmf/tex/latex/sjtutex/config/sjtu-name-thesis.cfg b/texmf/tex/latex/sjtutex/config/sjtu-name-thesis.cfg new file mode 100644 index 00000000..a08735e3 --- /dev/null +++ b/texmf/tex/latex/sjtutex/config/sjtu-name-thesis.cfg @@ -0,0 +1,117 @@ +%% +%% This is file `sjtu-name-thesis.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `name,thesis') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Name config for thesis template (SJTUTeX)} +\ProvidesExplFile{sjtu-name-thesis.cfg} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_define_symbol:nn { white_square } { "25A1 } +\__sjtu_define_name_from_clist:nNnn { degree_level } + \g__sjtu_thesis_type_int + { 学士 , 硕士 , 博士 } + { Bachelor, Master, Doctor } +\clist_map_inline:nn + { + { id } { 学号 } , + { department } { 院系 } , + { major } { 学科 / 专业 } , + { degree } { 申请学位 } , + { thesis } { 学位论文 } , + { decl_author } { 学位论文作者 } , + { decl_supervisor } { 指导教师 } + } + { \__sjtu_define_name:nn #1 } +\clist_map_inline:nn + { + { author } { 姓名 } { Author } , + { supervisor } { 导师 } { Supervisor } , + { assoc_supervisor } { 副导师 } { Assoc.~ Supervisor } , + { co_supervisor } { 联合导师 } { Co-supervisor } + } + { \__sjtu_define_name:nnn #1 } +\clist_map_inline:nn + { + { univ } { 上海交通大学 } { Shanghai~ Jiao~ Tong~ University } , + { address } { 中国 \quad 上海 } { Shanghai,~ P.R.~ China } , + { title_page } { 题名页 } { Title~ Page } , + { orig_decl } { 原创性声明 } { Statement~ of~ Originality } , + { auth_decl } { 使用授权书 } { Copyright~ Permission } , + { decl } + { + \c__sjtu_name_orig_decl_zh_tl + 及 + \c__sjtu_name_auth_decl_zh_tl + } + { + { \c__sjtu_name_orig_decl_en_tl }~ + and~ + { \c__sjtu_name_auth_decl_en_tl } + } , + { abstract } { 摘 \quad 要 } { Abstract } , + { keywords } { 关键词: } { Key~words:~ } , + { info_sep } { : } { :~ } , + { item_sep } { , } { ,~ } + } + { \__sjtu_define_name_g:nnn #1 } +\tl_const:Nn \c__sjtu_orig_decl_text_zh_tl + { + 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工 + 作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 + 或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集 + 体,均已在文中以明确方式标明。本人完全知晓本声明的法律后果由本人承 + 担。 + } +\tl_const:Nn \c__sjtu_auth_decl_text_zh_tl + { + 本人同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许 + 论文被查阅和借阅。 \par + \vskip 6 bp + \noindent + 本学位论文属于: \par + { \c__sjtu_symbol_white_square_tl } \textbf { 公开论文 } \par + { \c__sjtu_symbol_white_square_tl } \textbf { 内部论文 }, + 保密 { \c__sjtu_symbol_white_square_tl }~ 1~ 年 / + { \c__sjtu_symbol_white_square_tl }~ 2~ 年 / + { \c__sjtu_symbol_white_square_tl }~ 3~ 年, + 过保密期后适用本授权书。 \par + { \c__sjtu_symbol_white_square_tl } \textbf { 秘密论文 }, + 保密 \underline { \hspace { 2 em } } 年(不超过~ 10~ 年), + 过保密期后适用本授权书。 \par + { \c__sjtu_symbol_white_square_tl } \textbf { 机密论文 }, + 保密 \underline { \hspace { 2 em } } 年(不超过~ 20~ 年), + 过保密期后适用本授权书。 \par + \hspace { 6 em }(请在以上方框内选择打“ \ensuremath { \checkmark } ”) + } +\tl_const:Nn \c__sjtu_signature_text_zh_tl + { + 签名: \\ + 日期: \hspace { \stretch { 3 } } 年 + \hspace { \stretch { 2 } } 月 + \hspace { \stretch { 2 } } 日 + } +\endinput +%% +%% End of file `sjtu-name-thesis.cfg'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-adobe.def b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-adobe.def new file mode 100644 index 00000000..f13b35b1 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-adobe.def @@ -0,0 +1,57 @@ +%% +%% This is file `sjtu-cjk-font-adobe.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `cjkfont,adobe') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Adobe CJK fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-cjk-font-adobe.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nnn + { \__sjtu_fontset_error:nn { cjk } { adobe } } + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { adobe } + \ctex_punct_set:n { adobe } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } + { + \setCJKmainfont { AdobeSongStd-Light } + [ AutoFakeBold = 3, ItalicFont = AdobeKaitiStd-Regular ] + \setCJKsansfont { AdobeHeitiStd-Regular } [ BoldFont = * ] + \setCJKmonofont { AdobeFangsongStd-Regular } + \setCJKfamilyfont { zhsong } { AdobeSongStd-Light } + [ AutoFakeBold = 3, ItalicFont = AdobeKaitiStd-Regular ] + \setCJKfamilyfont { zhhei } { AdobeHeitiStd-Regular } [ BoldFont = * ] + \setCJKfamilyfont { zhfs } { AdobeFangsongStd-Regular } + \setCJKfamilyfont { zhkai } { AdobeKaitiStd-Regular } + } +\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } +\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } +\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } +\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } +\endinput +%% +%% End of file `sjtu-cjk-font-adobe.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-fandol.def b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-fandol.def new file mode 100644 index 00000000..98fd36ff --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-fandol.def @@ -0,0 +1,88 @@ +%% +%% This is file `sjtu-cjk-font-fandol.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `cjkfont,fandol') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Fandol CJK fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-cjk-font-fandol.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nnn + { \__sjtu_fontset_error:nn { cjk } { fandol } } + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { fandol } + \ctex_punct_set:n { fandol } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } + { + \setCJKmainfont { FandolSong } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = FandolKai-Regular + ] + \setCJKsansfont { FandolHei } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Regular, + ] + \setCJKmonofont { FandolFang } + [ + Extension = .otf, + UprightFont = *-Regular, + ] + \setCJKfamilyfont { zhsong } { FandolSong } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold + ] + \setCJKfamilyfont { zhhei } { FandolHei } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Regular + ] + \setCJKfamilyfont { zhfs } { FandolFang } + [ + Extension = .otf, + UprightFont = *-Regular + ] + \setCJKfamilyfont { zhkai } { FandolKai } + [ + Extension = .otf, + UprightFont = *-Regular + ] + } +\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } +\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } +\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } +\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } +\endinput +%% +%% End of file `sjtu-cjk-font-fandol.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-founder.def b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-founder.def new file mode 100644 index 00000000..69d92556 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-founder.def @@ -0,0 +1,56 @@ +%% +%% This is file `sjtu-cjk-font-founder.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `cjkfont,founder') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Founder CJK fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-cjk-font-founder.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { founder } + \ctex_punct_set:n { founder } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } + { + \setCJKmainfont { FZShuSong-Z01 } + [ AutoFakeBold = 3, ItalicFont = FZKai-Z03 ] + \setCJKsansfont { FZHei-B01 } [ BoldFont = * ] + \setCJKmonofont { FZFangSong-Z02 } + \setCJKfamilyfont { zhsong } { FZShuSong-Z01 } + [ AutoFakeBold = 3, ItalicFont = FZKai-Z03 ] + \setCJKfamilyfont { zhhei } { FZHei-B01 } [ BoldFont = * ] + \setCJKfamilyfont { zhkai } { FZKai-Z03 } + \setCJKfamilyfont { zhfs } { FZFangSong-Z02 } + } +\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } +\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } +\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } +\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } +\endinput +%% +%% End of file `sjtu-cjk-font-founder.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-mac.def b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-mac.def new file mode 100644 index 00000000..afd0dac2 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-mac.def @@ -0,0 +1,78 @@ +%% +%% This is file `sjtu-cjk-font-mac.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `cjkfont,mac') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {macOS CJK fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-cjk-font-mac.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nnn + { \__sjtu_fontset_error:nn { cjk } { mac } } + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { mac } + \ctex_punct_set:n { mac } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_family:nn { \CJKsfdefault } { zhpf } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhpf } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } + { + \setCJKmainfont { Songti~SC } + [ + UprightFont = *~Light, + BoldFont = *~Bold, + ItalicFont = Kaiti~SC~Regular, + BoldItalicFont = Kaiti~SC~Bold + ] + \setCJKsansfont { Heiti~SC } + [ + UprightFont = *~Medium, + BoldFont = *~Medium + ] + \setCJKmonofont { STFangsong } + \setCJKfamilyfont { zhsong } { Songti~SC } + [ + UprightFont = *~Light, + BoldFont = *~Bold + ] + \setCJKfamilyfont { zhhei } { Heiti~SC } + [ + UprightFont = *~Medium, + BoldFont = *~Medium + ] + \setCJKfamilyfont { zhfs } { STFangsong } + \setCJKfamilyfont { zhkai } { Kaiti~SC } + [ + UprightFont = *~Regular, + BoldFont = *~Bold + ] + } +\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } +\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } +\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } +\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } +\endinput +%% +%% End of file `sjtu-cjk-font-mac.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-ubuntu.def b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-ubuntu.def new file mode 100644 index 00000000..4ce68959 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-ubuntu.def @@ -0,0 +1,71 @@ +%% +%% This is file `sjtu-cjk-font-ubuntu.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `cjkfont,ubuntu') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Ubuntu CJK fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-cjk-font-ubuntu.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nnn + { \__sjtu_fontset_error:nn { cjk } { ubuntu } } + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhsong } { ubuntu } + \ctex_punct_set:n { ubuntu } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } + { + \setCJKmainfont { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light, + BoldFont = *~Bold, + ItalicFont = AR~PL~KaitiM~GB + ] + \setCJKsansfont { Noto~Sans~CJK~SC } + [ + UprightFont = *~Medium, + BoldFont = *~Medium + ] + \setCJKmonofont { Noto~Sans~Mono~CJK~SC } + \setCJKfamilyfont { zhsong } { Noto~Serif~CJK~SC } + [ + UprightFont = *~Light, + BoldFont = *~Bold, + ItalicFont = AR~PL~KaitiM~GB + ] + \setCJKfamilyfont { zhhei } { Noto~Sans~CJK~SC } + [ + UprightFont = *~Medium, + BoldFont = *~Medium + ] + \setCJKfamilyfont { zhkai } { AR~PL~KaitiM~GB } + } +\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } +\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } +\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } +\endinput +%% +%% End of file `sjtu-cjk-font-ubuntu.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-windows.def b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-windows.def new file mode 100644 index 00000000..13876e28 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-cjk-font-windows.def @@ -0,0 +1,56 @@ +%% +%% This is file `sjtu-cjk-font-windows.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `cjkfont,windows') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Windows CJK fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-cjk-font-windows.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { + \ctex_load_zhmap:nnnn { zhsong } { zhhei } { zhfs } { windows } + \ctex_punct_set:n { windows } + \ctex_punct_map_family:nn { \CJKrmdefault } { zhsong } + \ctex_punct_map_bfseries:nn { \CJKrmdefault } { zhhei } + \ctex_punct_map_itshape:nn { \CJKrmdefault } { zhkai } + } + { + \setCJKmainfont { SimSun } + [ AutoFakeBold = 3, ItalicFont = KaiTi ] + \setCJKsansfont { SimHei } [ BoldFont = * ] + \setCJKmonofont { FangSong } + \setCJKfamilyfont { zhsong } { SimSun } + [ AutoFakeBold = 3, ItalicFont = KaiTi ] + \setCJKfamilyfont { zhhei } { SimHei } [ BoldFont = * ] + \setCJKfamilyfont { zhkai } { KaiTi } + \setCJKfamilyfont { zhfs } { FangSong } + } +\NewDocumentCommand \songti { } { \CJKfamily { zhsong } } +\NewDocumentCommand \heiti { } { \CJKfamily { zhhei } } +\NewDocumentCommand \fangsong { } { \CJKfamily { zhfs } } +\NewDocumentCommand \kaishu { } { \CJKfamily { zhkai } } +\endinput +%% +%% End of file `sjtu-cjk-font-windows.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-cambria.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-cambria.def new file mode 100644 index 00000000..3491aabf --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-cambria.def @@ -0,0 +1,42 @@ +%% +%% This is file `sjtu-math-font-cambria.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,cambria') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Cambria math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-cambria.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \__sjtu_fontset_error:nn { math } { cambria } } + { + \RequirePackage { unicode-math } + \setmathfont { Cambria~Math } + \setmathrm { Cambria } + \setmathsf { Calibri } + \setmathtt { Consolas } [ Scale = MatchLowercase ] + } +\endinput +%% +%% End of file `sjtu-math-font-cambria.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-lm.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-lm.def new file mode 100644 index 00000000..2c8fa626 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-lm.def @@ -0,0 +1,55 @@ +%% +%% This is file `sjtu-math-font-lm.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,lm') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Latin Modern math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-lm.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\RequirePackage { amssymb, upgreek } +\SetSymbolFont { operators } { normal } { OT1 } { lmr } { m } { n } +\SetSymbolFont { letters } { normal } { OML } { lmm } { m } { it } +\SetSymbolFont { symbols } { normal } { OMS } { lmsy } { m } { n } +\SetSymbolFont { largesymbols } { normal } { OMX } { lmex } { m } { n } +\SetSymbolFont { operators } { bold } { OT1 } { lmr } { bx } { n } +\SetSymbolFont { letters } { bold } { OML } { lmm } { b } { it } +\SetSymbolFont { symbols } { bold } { OMS } { lmsy } { b } { n } +\SetSymbolFont { largesymbols } { bold } { OMX } { lmex } { m } { n } +\SetMathAlphabet { \mathbf } { normal } { OT1 } { lmr } { bx } { n } +\SetMathAlphabet { \mathsf } { normal } { OT1 } { lmss } { m } { n } +\SetMathAlphabet { \mathit } { normal } { OT1 } { lmr } { m } { it } +\SetMathAlphabet { \mathtt } { normal } { OT1 } { lmtt } { m } { n } +\SetMathAlphabet { \mathbf } { bold } { OT1 } { lmr } { bx } { n } +\SetMathAlphabet { \mathsf } { bold } { OT1 } { lmss } { bx } { n } +\SetMathAlphabet { \mathit } { bold } { OT1 } { lmr } { bx } { it } +\SetMathAlphabet { \mathtt } { bold } { OT1 } { lmtt } { m } { n } +\bool_if:NF \g__sjtu_slint_bool + { \RequirePackage { cmupint } } +\RequirePackage { bm } +\__sjtu_set_slanted_greek: +\__sjtu_set_unimath_symbol: +\endinput +%% +%% End of file `sjtu-math-font-lm.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newcm.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newcm.def new file mode 100644 index 00000000..224a2a9a --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newcm.def @@ -0,0 +1,103 @@ +%% +%% This is file `sjtu-math-font-newcm.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,newcm') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {New Computer Modern math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-newcm.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \__sjtu_fontset_error:nn { math } { newcm } } + { + \RequirePackage { unicode-math } + \bool_if:NTF \g__sjtu_slint_bool + { \setmathfont { NewCMMath-Book.otf } } + { + \setmathfont { NewCMMath-Book.otf } + [ StylisticSet = 2 ] + } + \setmathfont { NewCMMath-Book.otf } + [ + range = { scr, bfscr }, + StylisticSet = 1 + ] + \setmathrm + { NewCM10 } + [ + Extension = .otf, + SizeFeatures = + { + { + Size = -9, + Font = NewCM08-Book, + ItalicFont = NewCM08-BookItalic, + SlantedFont = NewCM08-Book, + }, + { Size = 9- } + }, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldItalic, + SlantedFont = *-Book, + BoldSlantedFont = *-Bold, + SlantedFeatures = { FakeSlant = 0.25 }, + BoldSlantedFeatures = { FakeSlant = 0.25 } + ] + \setmathsf + { NewCMSans10 } + [ + Extension = .otf, + SizeFeatures = + { + { + Size = -9, + Font = NewCMSans08-Book, + ItalicFont = NewCMSans08-BookOblique, + }, + { Size = 9- } + }, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookOblique, + BoldItalicFont = *-BoldOblique + ] + \setmathtt + { NewCMMono10 } + [ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldOblique, + SlantedFont = *-Book, + SlantedFeatures = { FakeSlant = 0.25 }, + BoldSlantedFont = *-Bold, + BoldSlantedFeatures = { FakeSlant = 0.25 } + ] + } +\endinput +%% +%% End of file `sjtu-math-font-newcm.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newpx.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newpx.def new file mode 100644 index 00000000..27d4648b --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newpx.def @@ -0,0 +1,48 @@ +%% +%% This is file `sjtu-math-font-newpx.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,newpx') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {New PX math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-newpx.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\tl_set_eq:NN \g__sjtu_save_encodingdefault_tl \encodingdefault +\tl_set_eq:NN \g__sjtu_save_rmdefault_tl \rmdefault +\tl_set_eq:NN \g__sjtu_save_sfdefault_tl \sfdefault +\tl_set_eq:NN \g__sjtu_save_ttdefault_tl \ttdefault +\tl_set:Nn \encodingdefault { OT1 } +\tl_set:Nn \rmdefault { zpltlf } +\tl_set:Nn \sfdefault { qhv } +\tl_set:Nn \ttdefault { ntxtt } +\RequirePackage { newpxmath } +\RequirePackage { bm } +\tl_set_eq:NN \encodingdefault \g__sjtu_save_encodingdefault_tl +\tl_set_eq:NN \rmdefault \g__sjtu_save_rmdefault_tl +\tl_set_eq:NN \sfdefault \g__sjtu_save_sfdefault_tl +\tl_set_eq:NN \ttdefault \g__sjtu_save_ttdefault_tl +\__sjtu_set_unimath_symbol: +\endinput +%% +%% End of file `sjtu-math-font-newpx.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newtx.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newtx.def new file mode 100644 index 00000000..62633049 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-newtx.def @@ -0,0 +1,48 @@ +%% +%% This is file `sjtu-math-font-newtx.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,newtx') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {New TX math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-newtx.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\tl_set_eq:NN \g__sjtu_save_encodingdefault_tl \encodingdefault +\tl_set_eq:NN \g__sjtu_save_rmdefault_tl \rmdefault +\tl_set_eq:NN \g__sjtu_save_sfdefault_tl \sfdefault +\tl_set_eq:NN \g__sjtu_save_ttdefault_tl \ttdefault +\tl_set:Nn \encodingdefault { OT1 } +\tl_set:Nn \rmdefault { ntxtlf } +\tl_set:Nn \sfdefault { qhv } +\tl_set:Nn \ttdefault { ntxtt } +\RequirePackage { newtxmath } +\RequirePackage { bm } +\tl_set_eq:NN \encodingdefault \g__sjtu_save_encodingdefault_tl +\tl_set_eq:NN \rmdefault \g__sjtu_save_rmdefault_tl +\tl_set_eq:NN \sfdefault \g__sjtu_save_sfdefault_tl +\tl_set_eq:NN \ttdefault \g__sjtu_save_ttdefault_tl +\__sjtu_set_unimath_symbol: +\endinput +%% +%% End of file `sjtu-math-font-newtx.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-stixtwo.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-stixtwo.def new file mode 100644 index 00000000..0c4a1380 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-stixtwo.def @@ -0,0 +1,82 @@ +%% +%% This is file `sjtu-math-font-stixtwo.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,stixtwo') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {STIX Two math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-stixtwo.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { + \PassOptionsToPackage { notext } { stix2 } + \RequirePackage { upgreek, stix2, bm } + \__sjtu_set_slanted_greek: + } + { + \RequirePackage { unicode-math } + \bool_if:NTF \g__sjtu_slint_bool + { \setmathfont { STIXTwoMath-Regular.otf } } + { + \setmathfont { STIXTwoMath-Regular.otf } + [ StylisticSet = 8 ] + } + \setmathfont { STIXTwoMath-Regular.otf } + [ + range = { scr, bfscr }, + StylisticSet = 1 + ] + \setmathrm + { STIXTwoText } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] + \setmathsf + { texgyreheros } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic + ] + \setmathtt + { texgyrecursor } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + Ligatures = CommonOff + ] + } +\endinput +%% +%% End of file `sjtu-math-font-stixtwo.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-times.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-times.def new file mode 100644 index 00000000..1ccb75ca --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-times.def @@ -0,0 +1,43 @@ +%% +%% This is file `sjtu-math-font-times.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,times') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Times math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-times.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\RequirePackage { amssymb, upgreek } +\tl_set_eq:NN \g__sjtu_save_rmdefault_tl \rmdefault + \RequirePackage { mathptmx } +\tl_set_eq:NN \rmdefault \g__sjtu_save_rmdefault_tl +\DeclareMathAlphabet { \mathsf } { OT1 } { phv } { m } { n } +\DeclareMathAlphabet { \mathtt } { OT1 } { pcr } { m } { n } +\SetMathAlphabet { \mathsf } { bold } { OT1 } { phv } { b } { n } +\SetMathAlphabet { \mathtt } { bold } { OT1 } { pcr } { b } { n } +\RequirePackage { bm } +\__sjtu_set_unimath_symbol: +\endinput +%% +%% End of file `sjtu-math-font-times.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-math-font-xits.def b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-xits.def new file mode 100644 index 00000000..be36a031 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-math-font-xits.def @@ -0,0 +1,88 @@ +%% +%% This is file `sjtu-math-font-xits.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `mathfont,xits') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {XITS math fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-math-font-xits.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \__sjtu_fontset_error:nn { math } { xits } } + { + \RequirePackage { unicode-math } + \bool_if:NTF \g__sjtu_slint_bool + { + \setmathfont { XITSMath-Regular } + [ + Extension = .otf, + BoldFont = XITSMath-Bold, + ] + } + { + \setmathfont { XITSMath-Regular } + [ + Extension = .otf, + BoldFont = XITSMath-Bold, + StylisticSet = 8 + ] + } + \setmathfont { XITSMath-Regular.otf } + [ + range = { cal, bfcal }, + StylisticSet = 1 + ] + \setmathrm + { XITS } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] + \setmathsf + { texgyreheros } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic + ] + \setmathtt + { texgyrecursor } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + Ligatures = CommonOff + ] + } +\endinput +%% +%% End of file `sjtu-math-font-xits.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-cambria.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-cambria.def new file mode 100644 index 00000000..95bbdf9f --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-cambria.def @@ -0,0 +1,40 @@ +%% +%% This is file `sjtu-text-font-cambria.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,cambria') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Cambria text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-cambria.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \__sjtu_fontset_error:nn { text } { cambria } } + { + \setmainfont { Cambria } + \setsansfont { Calibri } + \setmonofont { Consolas } [ Scale = MatchLowercase ] + } +\endinput +%% +%% End of file `sjtu-text-font-cambria.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-lm.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-lm.def new file mode 100644 index 00000000..53a15f54 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-lm.def @@ -0,0 +1,36 @@ +%% +%% This is file `sjtu-text-font-lm.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,lm') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Latin Modern text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-lm.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\tl_set:Nn \rmdefault { lmr } +\tl_set:Nn \sfdefault { lmss } +\tl_set:Nn \ttdefault { lmtt } +\endinput +%% +%% End of file `sjtu-text-font-lm.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newcm.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newcm.def new file mode 100644 index 00000000..d75ae1a4 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newcm.def @@ -0,0 +1,91 @@ +%% +%% This is file `sjtu-text-font-newcm.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,newcm') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {New Computer Modern text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-newcm.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \__sjtu_fontset_error:nn { text } { newcm } } + { + \setmainfont + { NewCM10 } + [ + Extension = .otf, + SizeFeatures = + { + { + Size = -9, + Font = NewCM08-Book, + ItalicFont = NewCM08-BookItalic, + SlantedFont = NewCM08-Book, + }, + { Size = 9- } + }, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldItalic, + SlantedFont = *-Book, + BoldSlantedFont = *-Bold, + SlantedFeatures = { FakeSlant = 0.25 }, + BoldSlantedFeatures = { FakeSlant = 0.25 } + ] + \setsansfont + { NewCMSans10 } + [ + Extension = .otf, + SizeFeatures = + { + { + Size = -9, + Font = NewCMSans08-Book, + ItalicFont = NewCMSans08-BookOblique, + }, + { Size = 9- } + }, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookOblique, + BoldItalicFont = *-BoldOblique + ] + \setmonofont + { NewCMMono10 } + [ + Extension = .otf, + UprightFont = *-Book, + BoldFont = *-Bold, + ItalicFont = *-BookItalic, + BoldItalicFont = *-BoldOblique, + SlantedFont = *-Book, + SlantedFeatures = { FakeSlant = 0.25 }, + BoldSlantedFont = *-Bold, + BoldSlantedFeatures = { FakeSlant = 0.25 } + ] + } +\endinput +%% +%% End of file `sjtu-text-font-newcm.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newpx.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newpx.def new file mode 100644 index 00000000..0fcf80c7 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newpx.def @@ -0,0 +1,66 @@ +%% +%% This is file `sjtu-text-font-newpx.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,newpx') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {New PX text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-newpx.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \RequirePackage { newpxtext } } + { + \setmainfont + { TeXGyrePagellaX } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] + \setsansfont + { texgyreheros } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic + ] + \setmonofont + { texgyrecursor } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + Ligatures = CommonOff + ] + } +\endinput +%% +%% End of file `sjtu-text-font-newpx.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newtx.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newtx.def new file mode 100644 index 00000000..d69505a3 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-newtx.def @@ -0,0 +1,66 @@ +%% +%% This is file `sjtu-text-font-newtx.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,newtx') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {New TX text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-newtx.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \RequirePackage { newtxtext } } + { + \setmainfont + { TeXGyreTermesX } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] + \setsansfont + { texgyreheros } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic + ] + \setmonofont + { texgyrecursor } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + Ligatures = CommonOff + ] + } +\endinput +%% +%% End of file `sjtu-text-font-newtx.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-stixtwo.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-stixtwo.def new file mode 100644 index 00000000..16667e15 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-stixtwo.def @@ -0,0 +1,70 @@ +%% +%% This is file `sjtu-text-font-stixtwo.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,stixtwo') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {STIX Two text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-stixtwo.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { + \tl_set:Nn \rmdefault { stix2 } + \tl_set:Nn \sfdefault { phv } + \tl_set:Nn \ttdefault { pcr } + } + { + \setmainfont + { STIXTwoText } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] + \setsansfont + { texgyreheros } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic + ] + \setmonofont + { texgyrecursor } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + Ligatures = CommonOff + ] + } +\endinput +%% +%% End of file `sjtu-text-font-stixtwo.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-times.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-times.def new file mode 100644 index 00000000..d374397a --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-times.def @@ -0,0 +1,44 @@ +%% +%% This is file `sjtu-text-font-times.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,times') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Times text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-times.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { + \tl_set:Nn \rmdefault { ptm } + \tl_set:Nn \sfdefault { phv } + \tl_set:Nn \ttdefault { pcr } + } + { + \setmainfont { Times~New~Roman } [ Ligatures = Rare ] + \setsansfont { Arial } + \setmonofont { Courier~New } [ Scale = MatchLowercase ] + } +\endinput +%% +%% End of file `sjtu-text-font-times.def'. diff --git a/texmf/tex/latex/sjtutex/fd/sjtu-text-font-xits.def b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-xits.def new file mode 100644 index 00000000..0f526b80 --- /dev/null +++ b/texmf/tex/latex/sjtutex/fd/sjtu-text-font-xits.def @@ -0,0 +1,66 @@ +%% +%% This is file `sjtu-text-font-xits.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `textfont,xits') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {XITS text fonts definition (SJTUTeX)} +\ProvidesExplFile{sjtu-text-font-xits.def} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\__sjtu_fontset_case:nn + { \__sjtu_fontset_error:nn { text } { xits } } + { + \setmainfont + { XITS } + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic + ] + \setsansfont + { texgyreheros } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic + ] + \setmonofont + { texgyrecursor } + [ + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = MatchLowercase, + Ligatures = CommonOff + ] + } +\endinput +%% +%% End of file `sjtu-text-font-xits.def'. diff --git a/texmf/tex/latex/sjtutex/sjtuarticle.cls b/texmf/tex/latex/sjtutex/sjtuarticle.cls new file mode 100644 index 00000000..ccef1198 --- /dev/null +++ b/texmf/tex/latex/sjtutex/sjtuarticle.cls @@ -0,0 +1,1348 @@ +%% +%% This is file `sjtuarticle.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `class,article') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3} +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Article template for Shanghai Jiao Tong University} +\ProvidesExplClass{sjtuarticle} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\RequirePackage { xparse, xtemplate } +\msg_new:nnn { sjtutex } { l3-too-old } + { + Package~ "#1"~ is~ too~ old. \\\\ + Please~ update~ an~ up-to-date~ version~ of~ the~ bundles \\ + "l3kernel"~ and~ "l3packages"~ using~ your~ TeX~ package \\ + manager~ or~ from~ CTAN. + } +\@ifpackagelater { expl3 } { 2020/04/06 } { } + { \msg_error:nnn { sjtutex } { l3-too-old } {#1} } +\NewDocumentCommand \sjtuthesis { } { SJTU \textsc{ Thesis } } +\bool_new:N \l__sjtu_tmpa_bool +\int_new:N \l__sjtu_tmpa_int +\tl_new:N \l__sjtu_tmpa_tl +\tl_new:N \l__sjtu_tmpb_tl +\clist_new:N \l__sjtu_tmpa_clist +\clist_new:N \l__sjtu_tmpb_clist +\dim_new:N \l__sjtu_tmpa_dim +\dim_new:N \l__sjtu_tmpb_dim +\skip_new:N \l__sjtu_tmpa_skip +\box_new:N \l__sjtu_tmpa_box +\tl_new:N \g__sjtu_lang_tl +\tl_new:N \g__sjtu_lang_aux_tl +\tl_set:Nn \g__sjtu_lang_aux_tl { zh } +\tl_new:N \g__sjtu_zihao_tl +\dim_new:N \g__sjtu_font_size_dim +\dim_new:N \g__sjtu_line_skip_dim +\dim_new:N \g__sjtu_default_line_skip_dim +\fp_new:N \g__sjtu_line_spread_fp +\tl_new:N \g__sjtu_text_font_tl +\tl_new:N \g__sjtu_math_font_tl +\tl_new:N \g__sjtu_cjk_font_tl +\tl_new:N \g__sjtu_save_encodingdefault_tl +\tl_new:N \g__sjtu_save_rmdefault_tl +\tl_new:N \g__sjtu_save_sfdefault_tl +\tl_new:N \g__sjtu_save_ttdefault_tl +\int_new:N \g__sjtu_math_style_int +\bool_new:N \g__sjtu_intlimits_bool +\bool_set_false:N \g__sjtu_intlimits_bool +\bool_new:N \g__sjtu_slint_bool +\bool_set_false:N \g__sjtu_slint_bool +\clist_new:N \g__sjtu_options_to_ctex_class_clist +\clist_set:Nn \g__sjtu_options_to_ctex_class_clist + { UTF8, scheme = plain, fontset = none } +\clist_new:N \g__sjtu_options_to_packages_clist +\bool_new:N \g__sjtu_twoside_bool +\bool_set_false:N \g__sjtu_twoside_bool +\bool_new:N \g__sjtu_titlepage_bool +\bool_set_false:N \g__sjtu_titlepage_bool +\bool_new:N \g__sjtu_draft_bool +\keys_define:nn { sjtu / option } + { + lang .choice: , + lang .value_required:n = true , + lang .choices:nn = + { zh, en } + { + \tl_gset_eq:NN \g__sjtu_lang_tl \l_keys_choice_tl + \int_compare:nNnT { \l_keys_choice_int } = { 1 } + { \tl_gset:Nn \g__sjtu_lang_aux_tl { en } } + } , + lang .initial:n = { zh } , + zihao .choice: , + zihao .value_required:n = true , + zihao / -4 .code:n = + { + \tl_gset:Nn \g__sjtu_zihao_tl { -4 } + \dim_gset:Nn \g__sjtu_font_size_dim { 12 bp } + \dim_gset:Nn \g__sjtu_default_line_skip_dim { 20 bp } + } , + zihao / 5 .code:n = + { + \tl_gset:Nn \g__sjtu_zihao_tl { 5 } + \dim_gset:Nn \g__sjtu_font_size_dim { 10.5 bp } + \dim_gset:Nn \g__sjtu_default_line_skip_dim { 15.6 bp } + } , + zihao .initial:n = { 5 } , + lineskip .dim_gset:N = \g__sjtu_line_skip_dim , + text-font .tl_gset:N = \g__sjtu_text_font_tl , + text-font .initial:n = { newtx } , + math-font .tl_gset:N = \g__sjtu_math_font_tl , + cjk-font .tl_gset:N = \g__sjtu_cjk_font_tl , + math-style .choice: , + math-style .value_required: n = true, + math-style .choices:nn = + { TeX, ISO, GB } + { \int_gset_eq:NN \g__sjtu_math_style_int \l_keys_choice_int } , + math-style .initial:n = { TeX } , + nointlimits .value_forbidden:n = true, + intlimits .value_forbidden:n = true, + nointlimits .code:n = + { \bool_set_false:N \g__sjtu_intlimits_bool }, + intlimits .code:n = + { \bool_set_true:N \g__sjtu_intlimits_bool }, + upint .value_forbidden:n = true, + slint .value_forbidden:n = true, + upint .code:n = + { \bool_set_false:N \g__sjtu_slint_bool }, + slint .code:n = + { \bool_set_true:N \g__sjtu_slint_bool }, + oneside .value_forbidden:n = true, + twoside .value_forbidden:n = true, + oneside .code:n = + { \bool_set_false:N \g__sjtu_twoside_bool } , + twoside .code:n = + { \bool_set_true:N \g__sjtu_twoside_bool } , + titlepage .value_forbidden:n = true, + notitlepage .value_forbidden:n = true, + titlepage .code:n = + { \bool_set_true:N \g__sjtu_titlepage_bool } , + notitlepage .code:n = + { \bool_set_false:N \g__sjtu_titlepage_bool } , + draft .value_forbidden:n = true, + final .value_forbidden:n = true, + draft .code:n = + { \bool_set_true:N \g__sjtu_draft_bool }, + final .code:n = + { \bool_set_false:N \g__sjtu_draft_bool }, + unknown .code:n = { \msg_error:nn { sjtutex } { unknown-option } } + } +\msg_new:nnn { sjtutex } { unknown-option } + { Class~ option~ "\l_keys_key_tl"~ is~ unknown. } +\cs_if_exist:NTF \ProcessKeyOptions + { \ProcessKeyOptions [ sjtu / option ] } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { sjtu / option } + } +\dim_compare:nNnT \g__sjtu_line_skip_dim < \g__sjtu_font_size_dim + { \dim_set_eq:NN \g__sjtu_line_skip_dim \g__sjtu_default_line_skip_dim } +\fp_set:Nn \g__sjtu_line_spread_fp + { \dim_ratio:nn { \g__sjtu_line_skip_dim } { \g__sjtu_font_size_dim } / 1.2 } +\clist_put_right:Nx \g__sjtu_options_to_ctex_class_clist + { + zihao = \g__sjtu_zihao_tl , + linespread = \fp_use:N \g__sjtu_line_spread_fp , + \bool_if:NTF \g__sjtu_twoside_bool + { twoside } { oneside } , + \bool_if:NTF \g__sjtu_titlepage_bool + { titlepage } { notitlepage } , + \bool_if:NTF \g__sjtu_draft_bool + { draft } { final } + } +\exp_args:No \PassOptionsToClass + { \g__sjtu_options_to_ctex_class_clist } + { ctexart } +\clist_set:Nn \g__sjtu_options_to_packages_clist + { + { no-math } { fontspec }, + { titles } { tocloft }, + { perpage, bottom } { footmisc }, + { list = off } { bicaption }, + { warnings-off = + { + mathtools-overbracket, + mathtools-colon + } + } { unicode-math }, + { amsmath, thmmarks } { ntheorem }, + } +\int_compare:nNnT { \g__sjtu_math_style_int } > { 1 } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { slantedGreek } { newtxmath }, + { slantedGreek } { newpxmath }, + { slantedGreek } { mathptmx } + } + } +\bool_if:NTF \g__sjtu_intlimits_bool + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { intlimits } { amsmath }, + { displaylimits } { cmupint } + } + } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { nointlimits } { amsmath }, + { nolimits } { cmupint } + } + } +\bool_if:NF \g__sjtu_slint_bool + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { upint } { newtxmath }, + { upint } { newpxmath }, + { upint } { stix2 } + } + } +\clist_map_inline:Nn \g__sjtu_options_to_packages_clist + { \PassOptionsToPackage #1 } +\LoadClass { ctexart } +\RequirePackage + { + mathtools, + geometry, + fancyhdr, + tocloft, + caption, + bicaption, + subcaption, + xcolor, + graphicx, + enumitem + } +\cs_generate_variant:Nn \tl_const:Nn { co, Nv } +\cs_generate_variant:Nn \cs_gset:Npn { cpo } +\prg_generate_conditional_variant:Nnn \regex_match:nn { ne } { T } +\exp_args_generate:n { Nnv } +\cs_new:Npx \__sjtu_engine_case:nn #1#2 + { + \bool_lazy_or:nnTF + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + {#2} + { \sys_if_engine_pdftex:T {#1} } + } +\cs_new:Npx \__sjtu_engine_case:nnn #1#2#3 + { + \sys_if_engine_xetex:TF + {#2} + { + \sys_if_engine_luatex:TF + {#3} + { \sys_if_engine_pdftex:T {#1} } + } + } +\cs_new:Npx \__sjtu_unicode_engine_case:nn #1#2 + { + \sys_if_engine_xetex:TF + {#1} + { \sys_if_engine_luatex:T {#2} } + } +\__sjtu_engine_case:nn + { + \cs_new:Npn \__sjtu_unicode_char:n #1 + { + \Unicode + { \int_div_truncate:nn {#1} { 256 } } + { \int_mod:nn {#1} { 256 } } + } + } + { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } +\cs_new_protected:Npn \__sjtu_preto_cmd:Nn #1#2 + { + \ctex_preto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +\cs_new_protected:Npn \__sjtu_appto_cmd:Nn #1#2 + { + \ctex_appto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +\cs_new:Npn \__sjtu_fixed_line_skip:n #1 + { + \exp_args:Nx \linespread + { \fp_to_decimal:n { \dim_ratio:nn { #1 } { \f@size pt } / 1.2 } } + \selectfont + } +\NewDocumentCommand \fixedlineskip { m } + { \exp_args:Nx \__sjtu_fixed_line_skip:n {#1} \tex_ignorespaces:D } +\cs_new:Npn \__sjtu_dim_set_to_wd:Nn #1#2 + { + \hbox_set:Nn \l__sjtu_tmpa_box {#2} + \dim_set:Nn #1 { \box_wd:N \l__sjtu_tmpa_box } + } +\cs_new:Npn \__sjtu_dim_add_to_wd:Nn #1#2 + { + \hbox_set:Nn \l__sjtu_tmpa_box {#2} + \dim_add:Nn #1 { \box_wd:N \l__sjtu_tmpa_box } + } +\cs_generate_variant:Nn \__sjtu_dim_set_to_wd:Nn { Nv } +\cs_generate_variant:Nn \__sjtu_dim_add_to_wd:Nn { cv } +\cs_new_protected:Npn \__sjtu_vspace:N #1 + { + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + } +\cs_new_protected:Npn \__sjtu_vspace:n #1 + { + \skip_set:Nn \l__sjtu_tmpa_skip {#1} + \__sjtu_vspace:N \l__sjtu_tmpa_skip + } +\cs_new_protected:Npn \__sjtu_vspace_r:N #1 + { + \dim_set_eq:NN \l__sjtu_tmpa_dim \prevdepth + \hrule height \c_zero_dim + \nobreak + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + \dim_set_eq:NN \prevdepth \l__sjtu_tmpa_dim + } +\cs_new_protected:Npn \__sjtu_vspace_r:n #1 + { + \skip_set:Nn \l__sjtu_tmpa_skip {#1} + \__sjtu_vspace_r:N \l__sjtu_tmpa_skip + } +\__sjtu_engine_case:nnn + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \bool_set_false:N \l__sjtu_tmpa_bool + \cs_set_eq:NN \SJTU@CJK@filltwosidesSymbol \CJKsymbol + \cs_set:Npn \CJKsymbol ##1 + { + \bool_if:NTF \l__sjtu_tmpa_bool + { \hfil \SJTU@CJK@filltwosidesSymbol { ##1 } } + { + \SJTU@CJK@filltwosidesSymbol { ##1 } + \bool_set_true:N \l__sjtu_tmpa_bool + } + } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \cs_set:Npn \CJKglue + { \skip_horizontal:n { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \ltjsetparameter { kanjiskip = { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } +\cs_new_protected:Npn \__sjtu_left_aligned_box:nn #1#2 + { + \mode_leave_vertical: + \hbox_to_wd:nn {#1} { #2 \hfil } + } +\cs_new_protected:Npn \__sjtu_define_name:nn #1#2 + { \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} } +\cs_new_protected:Npn \__sjtu_define_name:nnn #1#2#3 + { + \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} + \tl_const:cn { c__sjtu_name_ #1 _en_tl } {#3} + } +\cs_new_protected:Npn \__sjtu_define_name_g:nn #1#2 + { \tl_const:cn { c__sjtu_name_ #1 _tl } {#2} } +\cs_new_protected:Npn \__sjtu_define_name_g:nnn #1#2#3 + { + \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} + \tl_const:cn { c__sjtu_name_ #1 _en_tl } {#3} + \tl_gset_eq:cc + { c__sjtu_name_ #1 _tl } + { c__sjtu_name_ #1 _ \g__sjtu_lang_tl _tl } + } +\cs_new_protected:Npn \__sjtu_define_name_from_clist:nNnn #1#2#3#4 + { + \tl_const:cx { c__sjtu_name_ #1 _zh_tl } + { \clist_item:nn {#3} {#2} } + \tl_const:cx { c__sjtu_name_ #1 _en_tl } + { \clist_item:nn {#4} {#2} } + } +\cs_new_protected:Npn \__sjtu_define_symbol:nn #1#2 + { \tl_const:co { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } +\cs_new:Npn \__sjtu_date_aux_zh:nnn #1#2#3 + { \__zhnum_date_aux:Nnnnn \int_to_arabic:n { ~ } {#1} {#2} {#3} } +\cs_new:Npn \__sjtu_date_aux_zh:w #1-#2-#3 \q_stop + { \__sjtu_date_aux_zh:nnn {#1} {#2} {#3} } +\clist_const:Nn \c__sjtu_name_month_en_clist + { + January, February, March, April, May, June, + July, August, September, October, November, December + } +\cs_new:Npn \__sjtu_ordinal_en:n #1 + { + \int_to_arabic:n {#1} + \exp_not:N \textsuperscript + { + \int_case:nnF { \int_mod:nn {#1} { 100 } } + { + { 11 } { th } + { 12 } { th } + { 13 } { th } + } + { + \int_case:nnF { \int_mod:nn {#1} { 10 } } + { + { 1 } { st } + { 2 } { nd } + { 3 } { rd } + } + { th } + } + } + } +\cs_new:Npn \__sjtu_date_aux_en:nnn #1#2#3 + { \clist_item:Nn \c__sjtu_name_month_en_clist {#2}~ \__sjtu_ordinal_en:n {#3},~ #1 } +\cs_new:Npn \__sjtu_date_aux_en:w #1-#2-#3 \q_stop + { \__sjtu_date_aux_en:nnn {#1} {#2} {#3} } +\clist_map_inline:nn + { zh, en } + { + \tl_const:cx { c__sjtu_today_ #1 _tl } + { + \use:c { __sjtu_date_aux_ #1 :nnn } + { \int_value:w \tex_year:D } + { \tex_month:D } + { \tex_day:D } + } + } +\tl_const:Nv \c__sjtu_today_tl { c__sjtu_today_ \g__sjtu_lang_tl _tl } +\file_input:n { sjtu-name-generic.cfg } +\NewDocumentCommand \sjtusetup { } { \keys_set:nn { sjtu } } +\keys_define:nn { sjtu } + { + info .meta:nn = { sjtu / info } {#1} , + style .meta:nn = { sjtu / style } {#1} , + name .meta:nn = { sjtu / name } {#1} + } +\clist_map_inline:nn + { + title, display_title, running_title, subject, author, date, + supervisor, assoc_supervisor, department, + } + { + \tl_new:c { l__sjtu_info_ #1 _zh_tl } + } +\tl_new:N \l__sjtu_info_id_zh_tl +\clist_map_inline:nn + { keywords } + { + \clist_new:c { l__sjtu_info_ #1 _zh_clist } + } +\keys_define:nn { sjtu / info } + { + title .code:n = + { + \tl_set:Nn \l__sjtu_info_title_zh_tl {#1} + \clist_map_inline:nn + { + \l__sjtu_info_display_title_zh_tl , + \l__sjtu_info_running_title_zh_tl + } + { \tl_if_empty:NT ##1 { \tl_set:Nn ##1 {#1} } } + } , + display-title .tl_set:N = \l__sjtu_info_display_title_zh_tl , + running-title .tl_set:N = \l__sjtu_info_running_title_zh_tl , + subject .tl_set:N = \l__sjtu_info_subject_zh_tl , + keywords .clist_set:N = \l__sjtu_info_keywords_zh_clist , + author .tl_set:N = \l__sjtu_info_author_zh_tl , + id .tl_set:N = \l__sjtu_info_id_zh_tl , + supervisor .tl_set:N = \l__sjtu_info_supervisor_zh_tl , + assoc-supervisor .tl_set:N = \l__sjtu_info_assoc_supervisor_zh_tl , + department .tl_set:N = \l__sjtu_info_department_zh_tl , + date .code:n = + { + \regex_match:neT { \d{4}-\d{2}-\d{2} } {#1} + { + \tl_set:Nx \l__sjtu_info_date_zh_tl + { \exp_last_unbraced:Ne \__sjtu_date_aux_zh:w #1 \q_stop } + \tl_set:Nx \l__sjtu_info_date_en_tl + { \exp_last_unbraced:Ne \__sjtu_date_aux_en:w #1 \q_stop } + } + } , + display-date .tl_set:N = \l__sjtu_info_date_zh_tl , + display-date .initial:V = \c__sjtu_today_tl , + } +\RenewDocumentCommand \title { s +m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { title* = {#2} } } + { \keys_set_known:nn { sjtu / info } { title = {#2} } } + } +\tl_set:Nn \@title { \l__sjtu_info_title_zh_tl } +\RenewDocumentCommand \author { s m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { author* = {#2} } } + { \keys_set_known:nn { sjtu / info } { author = {#2} } } + } +\tl_set:Nn \@author { \l__sjtu_info_author_zh_tl } +\RenewDocumentCommand \date { s m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { display-date* = {#2} } } + { \keys_set_known:nn { sjtu / info } { display-date = {#2} } } + } +\tl_set:Nn \@date { \l__sjtu_info_date_zh_tl } +\tl_set:Nv \today { c__sjtu_today_ \g__sjtu_lang_tl _tl } +\keys_define:nn { sjtu / style } + { + float-font .tl_set:N = \SJTU@style@float@font , + float-font .initial:n = \zihao { 5 } \fixedlineskip { 15.6 bp } , + caption-font .code:n = + { \DeclareCaptionFont { SJTU@font } {#1} } , + caption-font .initial:n = \zihao { 5 } \bfseries , + subcaption-font .code:n = + { \DeclareCaptionFont { SJTU@sub@font } {#1} } , + subcaption-font .initial:n = \zihao { 5 } \normalfont , + fnmark-font .tl_set:N = \l__sjtu_style_fnmark_font_tl , + fnmark-font .initial:n = , + float-num-sep .tl_set:N = \l__sjtu_style_fl_num_sep_tl , + float-num-sep .initial:n = { -- } , + equation-num-sep .tl_set:N = \l__sjtu_style_eq_num_sep_tl , + equation-num-sep .initial:n = { -- } , + title-logo-color .choice: , + title-logo-color .choices:nn = + { red, blue, black } + { \tl_set_eq:NN \l__sjtu_style_title_logo_color_tl \l_keys_choice_tl } , + title-logo-color .initial:n = { red } , + header-logo-color .choice: , + header-logo-color .choices:nn = + { red, blue, black } + { \tl_set_eq:NN \l__sjtu_style_header_logo_color_tl \l_keys_choice_tl } , + header-logo-color .initial:n = { red } , + header-uppercase .choice: , + header-uppercase / true .code:n = + { \cs_gset_eq:NN \__sjtu_nouppercase:n \use:n } , + header-uppercase / false .code:n = + { \cs_gset:Nn \__sjtu_nouppercase:n { \nouppercase {##1} } } , + header-uppercase .default:n = { true } , + header-uppercase .initial:n = { true } , + header-font .tl_set:N = \l__sjtu_style_header_font_tl , + header-font .initial:n = \zihao { -5 } \sffamily , + footer-font .tl_set:N = \l__sjtu_style_footer_font_tl , + footer-font .initial:n = \zihao { -5 } , + page-number .cs_set:Np = \__sjtu_page:n #1 , + page-number .initial:n = { {#1} } + } +\keys_define:nn { sjtu / name } + { + contents .tl_set:N = \contentsname , + listfigure .tl_set:N = \listfigurename , + listtable .tl_set:N = \listtablename , + figure .tl_set:N = \figurename , + table .tl_set:N = \tablename , + abstract .tl_set:N = \abstractname , + index .tl_set:N = \indexname , + appendix .tl_set:N = \appendixname , + proof .tl_set:N = \proofname , + bib .tl_set:N = \refname , + figure* .tl_set:N = \l__sjtu_name_figure_aux_tl , + figure* .initial:n = { 图 } , + table* .tl_set:N = \l__sjtu_name_table_aux_tl , + table* .initial:n = { 表 } , + algorithm .tl_set:N = \l__sjtu_name_algorithm_tl , + algorithm .initial:n = { Algorithm } , + listalgorithm .tl_set:N = \l__sjtu_name_listalgorithm_tl , + listalgorithm .initial:n = { List~of~Algorithms } , + } +\file_input:n { sjtu-lang-article- \g__sjtu_lang_tl .cfg } +\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 + { \msg_error:nnnn { sjtutex } { font-unavailable } {#1} {#2} } +\msg_new:nnn { sjtutex } { font-unavailable } + { `#1-font~ =~ #2'~ is~ unavailable~ in~ current~ mode. } +\cs_new_eq:NN \__sjtu_fontset_case:nn \__sjtu_engine_case:nn +\cs_new:Npx \__sjtu_fontset_case:nnn #1#2#3 + { + \__sjtu_engine_case:nn + { \sys_if_output_pdf:TF {#1} {#2} } + {#3} + } +\cs_new_protected:Nn \__sjtu_set_slanted_greek: + { + \clist_const:Nn \c__sjtu_uppercase_greek_clist + { Gamma, Delta, Theta, Lambda, Xi, Pi, Sigma, Upsilon, Phi, Psi, Omega } + \clist_map_inline:Nn \c__sjtu_uppercase_greek_clist + { + \cs_set_eq:cc { up ##1 } { ##1 } + \cs_set_eq:cc { it ##1 } { var ##1 } + } + \int_compare:nNnT { \g__sjtu_math_style_int } > { 1 } + { + \clist_map_inline:Nn \c__sjtu_uppercase_greek_clist + { \cs_set_eq:cc { ##1 } { it ##1 } } + } + } +\cs_new_protected:Nn \__sjtu_set_unimath_symbol: + { + \cs_set_eq:NN \increment \upDelta + \cs_set_eq:NN \QED \blacksquare + } +\tl_if_empty:NT \g__sjtu_math_font_tl + { \tl_gset_eq:NN \g__sjtu_math_font_tl \g__sjtu_text_font_tl } +\tl_if_empty:NT \g__sjtu_cjk_font_tl + { + \sys_if_platform_windows:TF + { \tl_gset:Nn \g__sjtu_cjk_font_tl { windows } } + { + \ctex_if_platform_macos:TF + { \tl_gset:Nn \g__sjtu_cjk_font_tl { mac } } + { \tl_gset:Nn \g__sjtu_cjk_font_tl { fandol } } + } + } +\cs_new_protected:Npn \__sjtu_load_font:nn #1#2 + { + \str_if_eq:eeF { \tl_use:c { g__sjtu_ #1 _font_tl } } { none } + { + \file_if_exist:nF + { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } + { + \msg_warning:nnnn { sjtutex } { invalid-font } {#1} {#2} + \tl_gset:cn { g__sjtu_ #1 _font_tl } {#2} + } + \ctex_file_input:n + { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } + } + } +\msg_new:nnn { sjtutex } { invalid-font } + { + Invalid~ value~ `#1-font~ =~ \tl_use:c { g__sjtu_ #1 _font_tl }~ '! \\\\ + Using~ `#2'~ instead. + } +\cs_new_protected:Nn \__sjtu_load_fontset: + { + \clist_map_inline:nn + { + { math } { newtx }, + { text } { newtx }, + { cjk } { fandol } + } + { \__sjtu_load_font:nn ##1 } + } +\@onlypreamble \__sjtu_load_font:nn +\@onlypreamble \__sjtu_load_fontset: +\__sjtu_load_fontset: +\ctex_at_end_package:nn { unicode-math } + { + \DeclareDocumentCommand \bm { m } + { { \symbf {#1} } } + \DeclareDocumentCommand \boldsymbol { m } + { { \symbf {#1} } } + \int_compare:nNnTF { \g__sjtu_math_style_int } > { 1 } + { \keys_set:nn { unicode-math } { math-style = ISO } } + { \keys_set:nn { unicode-math } { math-style = TeX } } + } +\__sjtu_unicode_engine_case:nn + { + \xeCJK_declare_char_class:nn { CJK } + { "24EA, "2460->"2473, "3251->"32BF, "25A1 } + } + { + \ltjdefcharrange { 99 } + { "24EA, "2460-"2473, "3251-"32BF, "25A1 } + \ltjsetparameter { jacharrange = { +99 } } + } +\geometry + { + paper = a4paper, + top = 3.5 cm, + bottom = 4.0 cm, + left = 2.5 cm, + right = 2.5 cm, + headheight = 1.5 cm, + headsep = 0.5 cm, + footskip = 1.0 cm + } +\pagestyle { fancy } +\cs_new:Nn \__sjtu_thepage: { \thepage } +\fancyhf { } +\tl_set:Nn \l__sjtu_header_logo_tl + { + \includegraphics [ height = 1.2 cm ] + { sjtu-vi-logo- \l__sjtu_style_header_logo_color_tl .pdf } + } +\bool_if:NTF \g__sjtu_twoside_bool + { + \fancyhead [ RE, LO ] + { \l__sjtu_header_logo_tl } + \fancyhead [ RO ] + { + \l__sjtu_style_header_font_tl + \__sjtu_nouppercase:n + { \MakeUppercase \l__sjtu_info_running_title_zh_tl } + } + \fancyhead [ LE ] + { + \__sjtu_nouppercase:n + { \MakeUppercase \l__sjtu_info_subject_zh_tl } + } + } + { + \fancyhead [ L ] + { \l__sjtu_header_logo_tl } + \fancyhead [ R ] + { + \l__sjtu_style_header_font_tl + \__sjtu_nouppercase:n + { \MakeUppercase \l__sjtu_info_running_title_zh_tl } + } + } +\fancyfoot [ C ] + { + \l__sjtu_style_footer_font_tl + \__sjtu_page:n { \__sjtu_thepage: } + } +\bool_if:NTF \g__sjtu_twoside_bool + { + \fancypagestyle { plain } + { + \fancyhead [ RE, LO ] { } + \tl_set:Nn \headrulewidth { 0 pt } + } + } + { + \fancypagestyle { plain } + { + \fancyhead [ R ] { } + \tl_set:Nn \headrulewidth { 0 pt } + } + } +\cs_new_eq:NN \ps@SJTU@null \prg_do_nothing: +\RenewDocumentCommand \cleardoublepage { } + { + \clearpage + \bool_if:NT \g__sjtu_twoside_bool + { + \int_if_odd:nF \c@page + { \hbox:n { } \thispagestyle { empty } \newpage } + } + } +\ctex_set:nn { section } + { + beforeskip = 24 bp , + afterskip = 6 bp , + format = \zihao { 4 } \bfseries \heiti , + afterindent = true + } +\ctex_set:nn { subsection } + { + beforeskip = 12 bp , + afterskip = 6 bp , + format = \zihao { -4 } \bfseries \heiti , + afterindent = true + } +\ctex_set:nn { subsubsection } + { + beforeskip = 6 bp , + afterskip = 6 bp , + format = \zihao { -4 } \normalfont , + afterindent = true + } +\ctex_set:nn { paragraph } + { afterindent = true } +\ctex_set:nn { subparagraph } + { afterindent = true } +\ctex_set:n { secnumdepth = 3 } +\NewDocumentCommand \SJTU@head { s O{#3} m O{#2} } + { + \IfBooleanTF {#1} + { \tl_if_empty:nF {#4} { \__sjtu_pdf_bookmark:nn { 0 } {#4} } } + { + \__sjtu_phantom_section: + \addcontentsline { toc } { section } {#4} + } + \cs_set_eq:NN \__sjtu_orig_ctex_gettitle:n \CTEX@gettitle + \cs_set:Npn \CTEX@gettitle ##1 { \__sjtu_orig_ctex_gettitle:n {#2} } + \section* {#3} + \cs_set_eq:NN \CTEX@gettitle \__sjtu_orig_ctex_gettitle:n + \@mkboth { \MakeUppercase {#2} } { \MakeUppercase {#2} } + } +\cs_new:Npn \__sjtu_head_aux:n #1 + { \SJTU@head {#1} } +\cs_new:Npn \__sjtu_head_aux_s:n #1 + { \SJTU@head* {#1} } +\cs_new:Npn \__sjtu_head_auxa_s:nn #1#2 + { \SJTU@head* {#1} [#2] } +\cs_new:Npn \__sjtu_head_auxb_s:nn #1#2 + { \SJTU@head* [#1] {#2} } +\cs_generate_variant:Nn \__sjtu_head_aux:n { V } +\cs_generate_variant:Nn \__sjtu_head_aux_s:n { V } +\cs_generate_variant:Nn \__sjtu_head_auxa_s:nn { Vn, VV } +\cs_generate_variant:Nn \__sjtu_head_auxb_s:nn { Vo } +\cs_new_eq:NN \__sjtu_pdf_bookmark:nn \use_none:nn +\cs_new_eq:NN \__sjtu_phantom_section: \prg_do_nothing: +\ctex_if_autoindent_touched:F + { \ctex_set:n { autoindent = true } } +\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } +\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } +\ctex_patch_cmd:Nnn \quotation { 1.5em } { 2 \ccwd } +\setlist { nosep } +\tl_set:Nn \textfraction { 0.15 } +\tl_set:Nn \topfraction { 0.85 } +\tl_set:Nn \bottomfraction { 0.65 } +\tl_set:Nn \floatpagefraction { 0.60 } +\ctex_patch_cmd:Nnn \@floatboxreset + { \normalsize } { \SJTU@style@float@font } +\DeclareCaptionLabelSeparator { enskip } { \enskip } +\captionsetup + { + labelsep = enskip , + justification = centering , + font = SJTU@font + } +\captionsetup [ sub ] + { + format = hang , + justification = justified , + font = SJTU@sub@font + } +\DeclareCaptionOption { aux-names } [ ] + { + \tl_set:Nn \figurename { \l__sjtu_name_figure_aux_tl } + \tl_set:Nn \tablename { \l__sjtu_name_table_aux_tl } + } +\captionsetup [ bi-second ] { aux-names } +\NewDocumentCommand \SJTUcounterwithin + { s O{ \l__sjtu_style_fl_num_sep_tl } O{ \arabic } m m } + { + \@ifbothcounters {#4} {#5} + { + \@addtoreset {#4} {#5} + \IfBooleanF {#1} + { + \cs_gset:cpo { the #4 } + { \cs:w the #5 \cs_end: #2 #3 {#4} } + } + } + } +\cs_new_protected:Nn \__sjtu_make_fnmark: + { \hbox:n { \@thefnmark } } +\ctex_at_end_preamble:n { + \cs_set_eq:NN \__sjtu_orig_make_fntext:n \@makefntext + \cs_set:Npn \@makefntext #1 + { + \group_begin: + \cs_set_eq:NN \@makefnmark \__sjtu_make_fnmark: + \__sjtu_orig_make_fntext:n {#1} + \group_end: + } +} +\cs_new:Npn \__sjtu_footnote_number:N #1 + { + \int_compare:nNnTF {#1} < { 21 } + { \__sjtu_unicode_char:n { \int_eval:n { "2460 - 1 + #1 } } } + { + \int_compare:nNnTF {#1} < { 36 } + { \__sjtu_unicode_char:n { \int_eval:n { "3251 - 21 + #1 } } } + { + \int_compare:nNnTF {#1} < { 51 } + { \__sjtu_unicode_char:n { \int_eval:n { "32B1 - 36 + #1 } } } + { \msg_warning:nn { sjtutex } { too-many-footnotes } } + } + } + } +\msg_new:nnn { sjtutex } { too-many-footnotes } + { Too~ many~ footnotes. } +\cs_set:Npn \thefootnote + { + \hbox:n { } + { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@footnote } + } +\cs_set:Npn \thempfootnote + { + \hbox:n { } + { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@mpfootnote } + } +\DeclareObjectType { sjtu } { 0 } +\DeclareTemplateInterface { sjtu } { component } { 0 } + { + format : tokenlist = \c_empty_tl , + content : tokenlist = \c_empty_tl , + bottom-skip : skip = \c_zero_skip , + align : choice { left, right, center, normal } = center + } +\DeclareTemplateCode { sjtu } { component } { 0 } + { + format = \l__sjtu_component_format_tl , + content = \l__sjtu_component_content_tl , + bottom-skip = \l__sjtu_component_bottom_skip , + align = + { + left = + \cs_set_eq:NN \l__sjtu_component_align: \raggedright , + right = + \cs_set_eq:NN \l__sjtu_component_align: \raggedleft , + center = + \cs_set_eq:NN \l__sjtu_component_align: \centering , + normal = + \cs_set_eq:NN \l__sjtu_component_align: \prg_do_nothing: + } + } + { + \AssignTemplateKeys + \group_begin: + \l__sjtu_component_align: + \l__sjtu_component_format_tl + \l__sjtu_component_content_tl + \par + \group_end: + \__sjtu_vspace:N \l__sjtu_component_bottom_skip + } +\DeclareTemplateInterface { sjtu } { page } { 0 } + { + bookmark : boolean = false , + bookmark-text : tokenlist = \c_empty_tl , + style : tokenlist = empty , + format : tokenlist = \linespread { 1 } \selectfont , + prefix : tokenlist , + components : commalist , + top-skip : skip = \c_zero_skip , + bottom-skip : skip = \c_zero_skip + } +\DeclareTemplateCode { sjtu } { page } { 0 } + { + bookmark = \l__sjtu_page_bookmark_bool , + bookmark-text = \l__sjtu_page_bookmark_text_tl , + style = \l__sjtu_page_style_tl , + format = \l__sjtu_page_format_tl , + prefix = \l__sjtu_page_prefix_tl , + components = \l__sjtu_page_components_clist , + top-skip = \l__sjtu_page_top_skip , + bottom-skip = \l__sjtu_page_bottom_skip + } + { + \AssignTemplateKeys + \clearpage + \bool_if:NT \l__sjtu_page_bookmark_bool + { \__sjtu_pdf_bookmark:nn { 0 } { \l__sjtu_page_bookmark_text_tl } } + \exp_args:No \thispagestyle { \l__sjtu_page_style_tl } + \__sjtu_vspace_r:N \l__sjtu_page_top_skip + \__sjtu_vspace:n { - \tex_parskip:D } + \__sjtu_vspace:n { - \tex_baselineskip:D } + \group_begin: + \l__sjtu_page_format_tl + \clist_map_inline:Nn \l__sjtu_page_components_clist + { \UseInstance { sjtu } { \l__sjtu_page_prefix_tl / ##1 } } + \group_end: + \__sjtu_vspace:N \l__sjtu_page_bottom_skip + \clearpage + } +\cs_new:Npn \__sjtu_declare_component:nnn #1#2#3 + { \DeclareInstance { sjtu } {#1/#2} { component } {#3} } +\cs_new:Npn \__sjtu_declare_page:nn #1#2 + { \DeclareInstance { sjtu } {#1} { page } {#2} } +\cs_new:Npn \__sjtu_title_page_info:nnn #1#2#3 + { + \group_begin: + \cs_set:Npn \l__sjtu_info_output_format:NNN ##1##2##3 {#3} + \clist_clear:N \l__sjtu_tmpa_clist + \clist_clear:N \l__sjtu_tmpb_clist + \dim_set:Nn \l__sjtu_tmpb_dim { 5 em } + \clist_map_inline:nn {#2} + { + \clist_put_right:No \l__sjtu_tmpa_clist + { \cs:w c__sjtu_name_ ##1 _ #1 _tl \cs_end: } + \clist_put_right:No \l__sjtu_tmpb_clist + { \cs:w l__sjtu_info_ ##1 _ #1 _tl \cs_end: } + \__sjtu_dim_set_to_wd:Nv \l__sjtu_tmpa_dim { l__sjtu_info_ ##1 _ #1 _tl } + \dim_set:Nn \l__sjtu_tmpb_dim + { \dim_max:nn { \l__sjtu_tmpa_dim } { \l__sjtu_tmpb_dim } } + } + \bool_until_do:nn + { \clist_if_empty_p:N \l__sjtu_tmpa_clist } + { + \clist_pop:NN \l__sjtu_tmpa_clist \l__sjtu_tmpa_tl + \clist_pop:NN \l__sjtu_tmpb_clist \l__sjtu_tmpb_tl + \l__sjtu_info_output_format:NNN + \l__sjtu_tmpa_tl \l__sjtu_tmpb_dim \l__sjtu_tmpb_tl + \skip_vertical:N \c_zero_dim + } + \group_end: + } +\cs_generate_variant:Nn \__sjtu_title_page_info:nnn { nxn } +\clist_map_inline:nn + { + { logo } + { + content = + { + \includegraphics [ width = 3 cm ] + { sjtu-vi-badge- \l__sjtu_style_title_logo_color_tl .pdf } + \skip_vertical:n { 0.3 cm } + \includegraphics [ width = 6.81 cm ] + { sjtu-vi-name- \l__sjtu_style_title_logo_color_tl .pdf } + } + }, + { subject } + { + format = \zihao { -2 } \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_subject_zh_tl , + bottom-skip = \c_zero_dim plus 2 fill + }, + { title } + { + format = \zihao { 2 } \bfseries \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_display_title_zh_tl , + bottom-skip = \c_zero_dim plus 3 fill + }, + { info } + { + format = \zihao { 4 } \fixedlineskip { 31.2 bp } , + content = + { + \__sjtu_title_page_info:nxn { zh } + { + author, + id, + supervisor, + \tl_if_empty:NF \l__sjtu_info_assoc_supervisor_zh_tl + { assoc_supervisor }, + department, + } + { + \__sjtu_cjk_spread_box:nn { 5 em } { \heiti #1 } + \c__sjtu_name_info_sep_zh_tl + \__sjtu_left_aligned_box:nn {#2} {#3} + } + } , + bottom-skip = 31.2 bp + }, + { date } + { + format = \zihao { 4 } \bfseries \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_date_zh_tl + } + } + { + \__sjtu_declare_component:nnn { title / zh } #1 + } +\__sjtu_declare_page:nn { title / zh } + { + bookmark = true , + bookmark-text = \c__sjtu_name_title_page_tl , + prefix = title / zh , + components = { logo, subject, title, info, date } + } +\bool_if:NT \g__sjtu_titlepage_bool + { + \RenewDocumentCommand \maketitle { } + { \UseInstance { sjtu } { title / zh } } + } +\cs_new:Nn \__sjtu_output_keywords:Nnn + { + \clist_if_empty:NF #1 + { + \par \mode_leave_vertical: \par \noindent + { \bfseries #2 } \clist_use:Nn #1 {#3} + } + } +\bool_if:NTF \g__sjtu_titlepage_bool + { + \DeclareDocumentEnvironment { abstract } { } + { + \clearpage + \__sjtu_head_aux_s:n { \abstractname } + } + { + \__sjtu_output_keywords:Nnn \l__sjtu_info_keywords_zh_clist + { \c__sjtu_name_keywords_tl } { \c__sjtu_name_item_sep_tl } + \clearpage + } + } + { + \__sjtu_preto_cmd:Nn \endabstract + { + \__sjtu_output_keywords:Nnn \l__sjtu_info_keywords_zh_clist + { \c__sjtu_name_keywords_tl } { \c__sjtu_name_item_sep_tl } + } + } +\DeclareDocumentCommand \tableofcontents { } + { + \__sjtu_head_aux_s:n { \contentsname } + \@starttoc { toc } + } +\NewDocumentCommand \SJTU@listof { m m s } + { + \IfBooleanTF {#3} + { \__sjtu_head_aux_s:n {#1} } + { \__sjtu_head_aux:n {#1} } + \exp_args:Nv \@starttoc { ext@ #2 } + } +\DeclareDocumentCommand \listoffigures { } + { \SJTU@listof { \listfigurename } { figure } } +\DeclareDocumentCommand \listoftables { } + { \SJTU@listof { \listtablename } { table } } +\tl_set:Nn \cftdotsep { 1 } +\cs_new_protected:Nn \__sjtu_update_cft_presnum: + { + \tl_set:Nn \cftfigpresnum { \figurename \c_space_tl } + \__sjtu_dim_add_to_wd:Nn \cftfignumwidth { \cftfigpresnum } + \tl_set:Nn \cfttabpresnum { \tablename \c_space_tl } + \__sjtu_dim_add_to_wd:Nn \cfttabnumwidth { \cftfigpresnum } + } +\ctex_at_end_preamble:n + { \__sjtu_update_cft_presnum: } +\newcounter { SJTU@bib } +\NewDocumentEnvironment { @bibliolist } { m } + { + \cs_if_exist_use:N \bibfont + \list + { \@biblabel { \arabic{ SJTU@bib } } } + { + \__sjtu_dim_set_to_wd:Nn \labelwidth { \@biblabel {#1} } + \dim_set_eq:NN \leftmargin \labelwidth + \dim_add:Nn \leftmargin { \labelsep } + \dim_if_exist:NTF \bibitemsep + { + \dim_set_eq:NN \itemsep \bibitemsep + \dim_if_exist:NT \bibparsep + { \dim_set_eq:NN \parsep \bibparsep } + } + { + \dim_if_exist:NT \bibsep + { + \dim_set_eq:NN \itemsep \bibsep + \dim_zero:N \parsep + } + } + \@nmbrlisttrue + \tl_set:Nn \@listctr { SJTU@bib } + \cs_set:Npn \p@SJTU@bib { } + \cs_set:Npn \theSJTU@bib { \arabic { SJTU@bib } } + } + \sloppy + \int_set:Nn \clubpenalty { 4000 } + \int_set_eq:NN \@clubpenalty \clubpenalty + \int_set:Nn \widowpenalty { 4000 } + \char_set_sfcode:nn { `\. } { 1000 } + } + { + \cs_set:Npn \@noitemerr + { \msg_warning:nnn { sjtutex } { empty-environment } { bibliolist } } + \endlist + } +\msg_new:nnn { sjtutex } { empty-environment } + { Empty~ `#1'~ environment. } +\NewDocumentEnvironment { bibliolist } { m +b } + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } { } +\NewDocumentEnvironment { bibliolist* } { m +b } + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } { } +\ctex_at_end_package:nn { hyperref } + { + \hypersetup + { + linktoc = all, + bookmarksdepth = 2, + bookmarksnumbered = true, + bookmarksopen = true, + bookmarksopenlevel = 1, + unicode = true, + psdextra = true, + breaklinks = true, + pdfdisplaydoctitle = true + } + \int_new:N \g__sjtu_bookmark_int + \cs_gset_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 + { + \phantomsection + \int_gincr:N \g__sjtu_bookmark_int + \pdfbookmark [#1] {#2} + { sjtubookmark. \int_use:N \g__sjtu_bookmark_int } + } + \cs_gset_eq:NN \__sjtu_phantom_section: \phantomsection + \pdfstringdefDisableCommands + { + \cs_set_eq:NN \\ \prg_do_nothing: + \cs_set_eq:NN \quad \c_empty_tl + \cs_set_eq:NN \qquad \c_empty_tl + \cs_set_eq:NN \hspace \use_none:n + } + \ctex_after_end_preamble:n + { + \hypersetup + { + pdftitle = \l__sjtu_info_title_zh_tl, + pdfsubject = \l__sjtu_info_subject_zh_tl, + pdfkeywords = \l__sjtu_info_keywords_zh_clist, + pdfauthor = \l__sjtu_info_author_zh_tl + } + } + } +\ctex_at_end_package:nn { threeparttable } + { \tl_put_right:Nn \TPTnoteSettings { \footnotesize } } +\ctex_at_end_package:nn { longtable } + { \AtBeginEnvironment { longtable } { \SJTU@style@float@font } } +\cs_new_protected:Nn \__sjtu_new_theorems: + { + \clist_map_inline:nn + { + assumption, axiom, conjecture, corollary, definition, example, + exercise, lemma, problem, proposition, theorem + } + { \exp_args:Nnv \newtheorem {##1} { c__sjtu_name_ ##1 _tl } } + \clist_map_inline:nn + { remark, solution } + { \exp_args:NNnv \newtheorem* {##1} { c__sjtu_name_ ##1 _tl } } + } +\ctex_at_begin_package:nn { amsthm } + { + \cs_if_exist:NT \openbox + { + \cs_new_eq:NN \__sjtu_save_openbox: \openbox + \cs_undefine:N \openbox + } + } +\ctex_at_end_package:nn { amsthm } + { + \cs_if_exist:NT \__sjtu_save_openbox: + { \cs_set_eq:NN \openbox \__sjtu_save_openbox: } + \tl_set:Nn \qedsymbol { \ensuremath { \QED } } + \RenewDocumentEnvironment { proof } { O{ \proofname } } + { + \par \pushQED { \qed } + \normalfont \dim_zero:N \topsep + \trivlist + \item + [ + \skip_horizontal:N \labelsep + \bfseries \heiti #1 \@addpunct { \enskip } + ] + \ignorespaces + } + { \popQED \endtrivlist \legacy_if_set_false:n { @endpe } } + \newtheoremstyle { sjtu } + { } { } { \normalfont } { } { \bfseries \heiti } { } { \ccwd } { } + \theoremstyle { sjtu } + \__sjtu_new_theorems: + } +\ctex_at_end_package:nn { ntheorem } + { + \theoremheaderfont { \bfseries \heiti } + \theorembodyfont { \normalfont } + \theoremseparator { \enskip } + \theoremsymbol { \ensuremath { \QED } } + \qedsymbol { \ensuremath { \QED } } + \newtheorem* { proof } { \proofname } + \theoremsymbol { } + \__sjtu_new_theorems: + } +\cs_new_protected:Npn \__sjtu_newlistof:nnnnn #1#2#3#4#5 + { + \exp_args:Nnv \newlistentry {#2} { ext@ #3 } { 0 } + \exp_args:Ne \newcounter { \tl_use:c { ext@ #3 } depth } + \exp_args:Ne \setcounter { \tl_use:c { ext@ #3 } depth } { 1 } + \dim_set:cn { cft #2 indent } { 1.5 em } + \dim_set:cn { cft #2 numwidth } { 2.3 em } + \cs_set_eq:cc { l@ #3 } { l@ #2 } + \__sjtu_appto_cmd:Nn \__sjtu_update_cft_presnum: + { + \tl_set:cn { cft #2 presnum } { #4 \c_space_tl } + \__sjtu_dim_add_to_wd:cv { cft #2 numwidth } { cft #2 presnum } + } + \exp_args:Nc \DeclareDocumentCommand { listof #1 s } { } + { \SJTU@listof {#5} {#3} } + } +\ctex_at_end_package:nn { algorithm } + { + \tl_set:Nn \fname@algorithm { \l__sjtu_name_algorithm_tl } + \tl_set:Nn \listalgorithmname { \l__sjtu_name_listalgorithm_tl } + \__sjtu_newlistof:nnnnn { algorithm } { alg } { algorithm } + { \fname@algorithm } { \listalgorithmname } + } +\ctex_at_end_package:nn { algorithm2e } + { + \SetAlgorithmName { \l__sjtu_name_algorithm_tl } + { \l__sjtu_name_algorithm_tl } + { \l__sjtu_name_listalgorithm_tl } + \SetAlgoCaptionSeparator { \enskip } + \__sjtu_newlistof:nnnnn { algorithm } { alg } { algocf } + { \algorithmcfname } { \listalgorithmcfname } + \ctex_patch_cmd:Nnn \algocf@latexcaption + { \addcontentsline } + { \caption@iflist { \addcontentsline } { \@gobblethree } } + } +\ctex_at_end_package:nn { listings } + { + \lstdefinestyle { lstStyleCode } + { + aboveskip = \medskipamount , + belowskip = \medskipamount , + basicstyle = \ttfamily \zihao { 6 } , + commentstyle = \slshape \color { black!60 } , + stringstyle = \color { green!40!black!100 } , + keywordstyle = \bfseries \color { blue!50!black } , + extendedchars = false , + upquote = true , + tabsize = 2 , + showstringspaces = false , + xleftmargin = 1 em , + xrightmargin = 1 em , + breaklines = false , + framexleftmargin = 1 em , + framexrightmargin = 1 em , + backgroundcolor = \color { gray!10 } , + columns = flexible , + keepspaces = true , + texcl = true , + mathescape = true + } + } +\ctex_at_end_package:nn { nomencl } + { \tl_set:Nn \nomname { \l__sjtu_name_nom_tl } } +\endinput +%% +%% End of file `sjtuarticle.cls'. diff --git a/texmf/tex/latex/sjtutex/sjtureport.cls b/texmf/tex/latex/sjtutex/sjtureport.cls new file mode 100644 index 00000000..0c93a16f --- /dev/null +++ b/texmf/tex/latex/sjtutex/sjtureport.cls @@ -0,0 +1,1384 @@ +%% +%% This is file `sjtureport.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `class,report') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3} +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Report template for Shanghai Jiao Tong University} +\ProvidesExplClass{sjtureport} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\RequirePackage { xparse, xtemplate } +\msg_new:nnn { sjtutex } { l3-too-old } + { + Package~ "#1"~ is~ too~ old. \\\\ + Please~ update~ an~ up-to-date~ version~ of~ the~ bundles \\ + "l3kernel"~ and~ "l3packages"~ using~ your~ TeX~ package \\ + manager~ or~ from~ CTAN. + } +\@ifpackagelater { expl3 } { 2020/04/06 } { } + { \msg_error:nnn { sjtutex } { l3-too-old } {#1} } +\NewDocumentCommand \sjtuthesis { } { SJTU \textsc{ Thesis } } +\bool_new:N \l__sjtu_tmpa_bool +\int_new:N \l__sjtu_tmpa_int +\tl_new:N \l__sjtu_tmpa_tl +\tl_new:N \l__sjtu_tmpb_tl +\clist_new:N \l__sjtu_tmpa_clist +\clist_new:N \l__sjtu_tmpb_clist +\dim_new:N \l__sjtu_tmpa_dim +\dim_new:N \l__sjtu_tmpb_dim +\skip_new:N \l__sjtu_tmpa_skip +\box_new:N \l__sjtu_tmpa_box +\tl_new:N \g__sjtu_lang_tl +\tl_new:N \g__sjtu_lang_aux_tl +\tl_set:Nn \g__sjtu_lang_aux_tl { zh } +\tl_new:N \g__sjtu_zihao_tl +\dim_new:N \g__sjtu_font_size_dim +\dim_new:N \g__sjtu_line_skip_dim +\dim_new:N \g__sjtu_default_line_skip_dim +\fp_new:N \g__sjtu_line_spread_fp +\tl_new:N \g__sjtu_text_font_tl +\tl_new:N \g__sjtu_math_font_tl +\tl_new:N \g__sjtu_cjk_font_tl +\tl_new:N \g__sjtu_save_encodingdefault_tl +\tl_new:N \g__sjtu_save_rmdefault_tl +\tl_new:N \g__sjtu_save_sfdefault_tl +\tl_new:N \g__sjtu_save_ttdefault_tl +\int_new:N \g__sjtu_math_style_int +\bool_new:N \g__sjtu_intlimits_bool +\bool_set_false:N \g__sjtu_intlimits_bool +\bool_new:N \g__sjtu_slint_bool +\bool_set_false:N \g__sjtu_slint_bool +\clist_new:N \g__sjtu_options_to_ctex_class_clist +\clist_set:Nn \g__sjtu_options_to_ctex_class_clist + { UTF8, scheme = plain, fontset = none } +\clist_new:N \g__sjtu_options_to_packages_clist +\bool_new:N \g__sjtu_twoside_bool +\bool_set_false:N \g__sjtu_twoside_bool +\bool_new:N \g__sjtu_openright_bool +\bool_set_false:N \g__sjtu_openright_bool +\bool_new:N \g__sjtu_titlepage_bool +\bool_set_true:N \g__sjtu_titlepage_bool +\bool_new:N \g__sjtu_draft_bool +\keys_define:nn { sjtu / option } + { + lang .choice: , + lang .value_required:n = true , + lang .choices:nn = + { zh, en } + { + \tl_gset_eq:NN \g__sjtu_lang_tl \l_keys_choice_tl + \int_compare:nNnT { \l_keys_choice_int } = { 1 } + { \tl_gset:Nn \g__sjtu_lang_aux_tl { en } } + } , + lang .initial:n = { zh } , + zihao .choice: , + zihao .value_required:n = true , + zihao / -4 .code:n = + { + \tl_gset:Nn \g__sjtu_zihao_tl { -4 } + \dim_gset:Nn \g__sjtu_font_size_dim { 12 bp } + \dim_gset:Nn \g__sjtu_default_line_skip_dim { 20 bp } + } , + zihao / 5 .code:n = + { + \tl_gset:Nn \g__sjtu_zihao_tl { 5 } + \dim_gset:Nn \g__sjtu_font_size_dim { 10.5 bp } + \dim_gset:Nn \g__sjtu_default_line_skip_dim { 15.6 bp } + } , + zihao .initial:n = { -4 } , + lineskip .dim_gset:N = \g__sjtu_line_skip_dim , + text-font .tl_gset:N = \g__sjtu_text_font_tl , + text-font .initial:n = { newtx } , + math-font .tl_gset:N = \g__sjtu_math_font_tl , + cjk-font .tl_gset:N = \g__sjtu_cjk_font_tl , + math-style .choice: , + math-style .value_required: n = true, + math-style .choices:nn = + { TeX, ISO, GB } + { \int_gset_eq:NN \g__sjtu_math_style_int \l_keys_choice_int } , + math-style .initial:n = { TeX } , + nointlimits .value_forbidden:n = true, + intlimits .value_forbidden:n = true, + nointlimits .code:n = + { \bool_set_false:N \g__sjtu_intlimits_bool }, + intlimits .code:n = + { \bool_set_true:N \g__sjtu_intlimits_bool }, + upint .value_forbidden:n = true, + slint .value_forbidden:n = true, + upint .code:n = + { \bool_set_false:N \g__sjtu_slint_bool }, + slint .code:n = + { \bool_set_true:N \g__sjtu_slint_bool }, + oneside .value_forbidden:n = true, + twoside .value_forbidden:n = true, + oneside .code:n = + { \bool_set_false:N \g__sjtu_twoside_bool } , + twoside .code:n = + { \bool_set_true:N \g__sjtu_twoside_bool } , + openany .value_forbidden:n = true, + openright .value_forbidden:n = true, + openany .code:n = + { \bool_set_false:N \g__sjtu_openright_bool } , + openright .code:n = + { \bool_set_true:N \g__sjtu_openright_bool } , + titlepage .value_forbidden:n = true, + notitlepage .value_forbidden:n = true, + titlepage .code:n = + { \bool_set_true:N \g__sjtu_titlepage_bool } , + notitlepage .code:n = + { \bool_set_false:N \g__sjtu_titlepage_bool } , + draft .value_forbidden:n = true, + final .value_forbidden:n = true, + draft .code:n = + { \bool_set_true:N \g__sjtu_draft_bool }, + final .code:n = + { \bool_set_false:N \g__sjtu_draft_bool }, + unknown .code:n = { \msg_error:nn { sjtutex } { unknown-option } } + } +\msg_new:nnn { sjtutex } { unknown-option } + { Class~ option~ "\l_keys_key_tl"~ is~ unknown. } +\cs_if_exist:NTF \ProcessKeyOptions + { \ProcessKeyOptions [ sjtu / option ] } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { sjtu / option } + } +\dim_compare:nNnT \g__sjtu_line_skip_dim < \g__sjtu_font_size_dim + { \dim_set_eq:NN \g__sjtu_line_skip_dim \g__sjtu_default_line_skip_dim } +\fp_set:Nn \g__sjtu_line_spread_fp + { \dim_ratio:nn { \g__sjtu_line_skip_dim } { \g__sjtu_font_size_dim } / 1.2 } +\clist_put_right:Nx \g__sjtu_options_to_ctex_class_clist + { + zihao = \g__sjtu_zihao_tl , + linespread = \fp_use:N \g__sjtu_line_spread_fp , + \bool_if:NTF \g__sjtu_twoside_bool + { twoside } { oneside } , + \bool_if:NTF \g__sjtu_openright_bool + { openright } { openany } , + \bool_if:NTF \g__sjtu_titlepage_bool + { titlepage } { notitlepage } , + \bool_if:NTF \g__sjtu_draft_bool + { draft } { final } + } +\exp_args:No \PassOptionsToClass + { \g__sjtu_options_to_ctex_class_clist } + { ctexrep } +\clist_set:Nn \g__sjtu_options_to_packages_clist + { + { no-math } { fontspec }, + { titles } { tocloft }, + { perpage, bottom } { footmisc }, + { list = off } { bicaption }, + { warnings-off = + { + mathtools-overbracket, + mathtools-colon + } + } { unicode-math }, + { amsmath, thmmarks } { ntheorem }, + { chapter } { algorithm }, + { algochapter } { algorithm2e } + } +\int_compare:nNnT { \g__sjtu_math_style_int } > { 1 } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { slantedGreek } { newtxmath }, + { slantedGreek } { newpxmath }, + { slantedGreek } { mathptmx } + } + } +\bool_if:NTF \g__sjtu_intlimits_bool + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { intlimits } { amsmath }, + { displaylimits } { cmupint } + } + } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { nointlimits } { amsmath }, + { nolimits } { cmupint } + } + } +\bool_if:NF \g__sjtu_slint_bool + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { upint } { newtxmath }, + { upint } { newpxmath }, + { upint } { stix2 } + } + } +\clist_map_inline:Nn \g__sjtu_options_to_packages_clist + { \PassOptionsToPackage #1 } +\LoadClass { ctexrep } +\RequirePackage + { + mathtools, + geometry, + fancyhdr, + tocloft, + caption, + bicaption, + subcaption, + xcolor, + graphicx, + enumitem + } +\cs_generate_variant:Nn \tl_const:Nn { co, Nv } +\cs_generate_variant:Nn \cs_gset:Npn { cpo } +\prg_generate_conditional_variant:Nnn \regex_match:nn { ne } { T } +\exp_args_generate:n { Nnv } +\cs_new:Npx \__sjtu_engine_case:nn #1#2 + { + \bool_lazy_or:nnTF + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + {#2} + { \sys_if_engine_pdftex:T {#1} } + } +\cs_new:Npx \__sjtu_engine_case:nnn #1#2#3 + { + \sys_if_engine_xetex:TF + {#2} + { + \sys_if_engine_luatex:TF + {#3} + { \sys_if_engine_pdftex:T {#1} } + } + } +\cs_new:Npx \__sjtu_unicode_engine_case:nn #1#2 + { + \sys_if_engine_xetex:TF + {#1} + { \sys_if_engine_luatex:T {#2} } + } +\__sjtu_engine_case:nn + { + \cs_new:Npn \__sjtu_unicode_char:n #1 + { + \Unicode + { \int_div_truncate:nn {#1} { 256 } } + { \int_mod:nn {#1} { 256 } } + } + } + { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } +\cs_new_protected:Npn \__sjtu_preto_cmd:Nn #1#2 + { + \ctex_preto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +\cs_new_protected:Npn \__sjtu_appto_cmd:Nn #1#2 + { + \ctex_appto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +\cs_new:Npn \__sjtu_fixed_line_skip:n #1 + { + \exp_args:Nx \linespread + { \fp_to_decimal:n { \dim_ratio:nn { #1 } { \f@size pt } / 1.2 } } + \selectfont + } +\NewDocumentCommand \fixedlineskip { m } + { \exp_args:Nx \__sjtu_fixed_line_skip:n {#1} \tex_ignorespaces:D } +\cs_new:Npn \__sjtu_dim_set_to_wd:Nn #1#2 + { + \hbox_set:Nn \l__sjtu_tmpa_box {#2} + \dim_set:Nn #1 { \box_wd:N \l__sjtu_tmpa_box } + } +\cs_new:Npn \__sjtu_dim_add_to_wd:Nn #1#2 + { + \hbox_set:Nn \l__sjtu_tmpa_box {#2} + \dim_add:Nn #1 { \box_wd:N \l__sjtu_tmpa_box } + } +\cs_generate_variant:Nn \__sjtu_dim_set_to_wd:Nn { Nv } +\cs_generate_variant:Nn \__sjtu_dim_add_to_wd:Nn { cv } +\cs_new_protected:Npn \__sjtu_vspace:N #1 + { + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + } +\cs_new_protected:Npn \__sjtu_vspace:n #1 + { + \skip_set:Nn \l__sjtu_tmpa_skip {#1} + \__sjtu_vspace:N \l__sjtu_tmpa_skip + } +\cs_new_protected:Npn \__sjtu_vspace_r:N #1 + { + \dim_set_eq:NN \l__sjtu_tmpa_dim \prevdepth + \hrule height \c_zero_dim + \nobreak + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + \dim_set_eq:NN \prevdepth \l__sjtu_tmpa_dim + } +\cs_new_protected:Npn \__sjtu_vspace_r:n #1 + { + \skip_set:Nn \l__sjtu_tmpa_skip {#1} + \__sjtu_vspace_r:N \l__sjtu_tmpa_skip + } +\__sjtu_engine_case:nnn + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \bool_set_false:N \l__sjtu_tmpa_bool + \cs_set_eq:NN \SJTU@CJK@filltwosidesSymbol \CJKsymbol + \cs_set:Npn \CJKsymbol ##1 + { + \bool_if:NTF \l__sjtu_tmpa_bool + { \hfil \SJTU@CJK@filltwosidesSymbol { ##1 } } + { + \SJTU@CJK@filltwosidesSymbol { ##1 } + \bool_set_true:N \l__sjtu_tmpa_bool + } + } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \cs_set:Npn \CJKglue + { \skip_horizontal:n { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \ltjsetparameter { kanjiskip = { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } +\cs_new_protected:Npn \__sjtu_left_aligned_box:nn #1#2 + { + \mode_leave_vertical: + \hbox_to_wd:nn {#1} { #2 \hfil } + } +\cs_new_protected:Npn \__sjtu_define_name:nn #1#2 + { \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} } +\cs_new_protected:Npn \__sjtu_define_name:nnn #1#2#3 + { + \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} + \tl_const:cn { c__sjtu_name_ #1 _en_tl } {#3} + } +\cs_new_protected:Npn \__sjtu_define_name_g:nn #1#2 + { \tl_const:cn { c__sjtu_name_ #1 _tl } {#2} } +\cs_new_protected:Npn \__sjtu_define_name_g:nnn #1#2#3 + { + \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} + \tl_const:cn { c__sjtu_name_ #1 _en_tl } {#3} + \tl_gset_eq:cc + { c__sjtu_name_ #1 _tl } + { c__sjtu_name_ #1 _ \g__sjtu_lang_tl _tl } + } +\cs_new_protected:Npn \__sjtu_define_name_from_clist:nNnn #1#2#3#4 + { + \tl_const:cx { c__sjtu_name_ #1 _zh_tl } + { \clist_item:nn {#3} {#2} } + \tl_const:cx { c__sjtu_name_ #1 _en_tl } + { \clist_item:nn {#4} {#2} } + } +\cs_new_protected:Npn \__sjtu_define_symbol:nn #1#2 + { \tl_const:co { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } +\cs_new:Npn \__sjtu_date_aux_zh:nnn #1#2#3 + { \__zhnum_date_aux:Nnnnn \int_to_arabic:n { ~ } {#1} {#2} {#3} } +\cs_new:Npn \__sjtu_date_aux_zh:w #1-#2-#3 \q_stop + { \__sjtu_date_aux_zh:nnn {#1} {#2} {#3} } +\clist_const:Nn \c__sjtu_name_month_en_clist + { + January, February, March, April, May, June, + July, August, September, October, November, December + } +\cs_new:Npn \__sjtu_ordinal_en:n #1 + { + \int_to_arabic:n {#1} + \exp_not:N \textsuperscript + { + \int_case:nnF { \int_mod:nn {#1} { 100 } } + { + { 11 } { th } + { 12 } { th } + { 13 } { th } + } + { + \int_case:nnF { \int_mod:nn {#1} { 10 } } + { + { 1 } { st } + { 2 } { nd } + { 3 } { rd } + } + { th } + } + } + } +\cs_new:Npn \__sjtu_date_aux_en:nnn #1#2#3 + { \clist_item:Nn \c__sjtu_name_month_en_clist {#2}~ \__sjtu_ordinal_en:n {#3},~ #1 } +\cs_new:Npn \__sjtu_date_aux_en:w #1-#2-#3 \q_stop + { \__sjtu_date_aux_en:nnn {#1} {#2} {#3} } +\clist_map_inline:nn + { zh, en } + { + \tl_const:cx { c__sjtu_today_ #1 _tl } + { + \use:c { __sjtu_date_aux_ #1 :nnn } + { \int_value:w \tex_year:D } + { \tex_month:D } + { \tex_day:D } + } + } +\tl_const:Nv \c__sjtu_today_tl { c__sjtu_today_ \g__sjtu_lang_tl _tl } +\file_input:n { sjtu-name-generic.cfg } +\NewDocumentCommand \sjtusetup { } { \keys_set:nn { sjtu } } +\keys_define:nn { sjtu } + { + info .meta:nn = { sjtu / info } {#1} , + style .meta:nn = { sjtu / style } {#1} , + name .meta:nn = { sjtu / name } {#1} + } +\clist_map_inline:nn + { + title, display_title, running_title, subject, author, date, + supervisor, assoc_supervisor, department, + } + { + \tl_new:c { l__sjtu_info_ #1 _zh_tl } + } +\tl_new:N \l__sjtu_info_id_zh_tl +\clist_map_inline:nn + { keywords } + { + \clist_new:c { l__sjtu_info_ #1 _zh_clist } + } +\keys_define:nn { sjtu / info } + { + title .code:n = + { + \tl_set:Nn \l__sjtu_info_title_zh_tl {#1} + \clist_map_inline:nn + { + \l__sjtu_info_display_title_zh_tl , + \l__sjtu_info_running_title_zh_tl + } + { \tl_if_empty:NT ##1 { \tl_set:Nn ##1 {#1} } } + } , + display-title .tl_set:N = \l__sjtu_info_display_title_zh_tl , + running-title .tl_set:N = \l__sjtu_info_running_title_zh_tl , + subject .tl_set:N = \l__sjtu_info_subject_zh_tl , + keywords .clist_set:N = \l__sjtu_info_keywords_zh_clist , + author .tl_set:N = \l__sjtu_info_author_zh_tl , + id .tl_set:N = \l__sjtu_info_id_zh_tl , + supervisor .tl_set:N = \l__sjtu_info_supervisor_zh_tl , + assoc-supervisor .tl_set:N = \l__sjtu_info_assoc_supervisor_zh_tl , + department .tl_set:N = \l__sjtu_info_department_zh_tl , + date .code:n = + { + \regex_match:neT { \d{4}-\d{2}-\d{2} } {#1} + { + \tl_set:Nx \l__sjtu_info_date_zh_tl + { \exp_last_unbraced:Ne \__sjtu_date_aux_zh:w #1 \q_stop } + \tl_set:Nx \l__sjtu_info_date_en_tl + { \exp_last_unbraced:Ne \__sjtu_date_aux_en:w #1 \q_stop } + } + } , + display-date .tl_set:N = \l__sjtu_info_date_zh_tl , + display-date .initial:V = \c__sjtu_today_tl , + } +\RenewDocumentCommand \title { s +m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { title* = {#2} } } + { \keys_set_known:nn { sjtu / info } { title = {#2} } } + } +\tl_set:Nn \@title { \l__sjtu_info_title_zh_tl } +\RenewDocumentCommand \author { s m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { author* = {#2} } } + { \keys_set_known:nn { sjtu / info } { author = {#2} } } + } +\tl_set:Nn \@author { \l__sjtu_info_author_zh_tl } +\RenewDocumentCommand \date { s m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { display-date* = {#2} } } + { \keys_set_known:nn { sjtu / info } { display-date = {#2} } } + } +\tl_set:Nn \@date { \l__sjtu_info_date_zh_tl } +\tl_set:Nv \today { c__sjtu_today_ \g__sjtu_lang_tl _tl } +\keys_define:nn { sjtu / style } + { + float-font .tl_set:N = \SJTU@style@float@font , + float-font .initial:n = \zihao { 5 } \fixedlineskip { 15.6 bp } , + caption-font .code:n = + { \DeclareCaptionFont { SJTU@font } {#1} } , + caption-font .initial:n = \zihao { 5 } \bfseries , + subcaption-font .code:n = + { \DeclareCaptionFont { SJTU@sub@font } {#1} } , + subcaption-font .initial:n = \zihao { 5 } \normalfont , + fnmark-font .tl_set:N = \l__sjtu_style_fnmark_font_tl , + fnmark-font .initial:n = , + float-num-sep .tl_set:N = \l__sjtu_style_fl_num_sep_tl , + float-num-sep .initial:n = { -- } , + equation-num-sep .tl_set:N = \l__sjtu_style_eq_num_sep_tl , + equation-num-sep .initial:n = { -- } , + title-logo-color .choice: , + title-logo-color .choices:nn = + { red, blue, black } + { \tl_set_eq:NN \l__sjtu_style_title_logo_color_tl \l_keys_choice_tl } , + title-logo-color .initial:n = { red } , + header-logo-color .choice: , + header-logo-color .choices:nn = + { red, blue, black } + { \tl_set_eq:NN \l__sjtu_style_header_logo_color_tl \l_keys_choice_tl } , + header-logo-color .initial:n = { red } , + header-uppercase .choice: , + header-uppercase / true .code:n = + { \cs_gset_eq:NN \__sjtu_nouppercase:n \use:n } , + header-uppercase / false .code:n = + { \cs_gset:Nn \__sjtu_nouppercase:n { \nouppercase {##1} } } , + header-uppercase .default:n = { true } , + header-uppercase .initial:n = { false } , + header-font .tl_set:N = \l__sjtu_style_header_font_tl , + header-font .initial:n = \zihao { -5 } \sffamily , + footer-font .tl_set:N = \l__sjtu_style_footer_font_tl , + footer-font .initial:n = \zihao { -5 } , + page-number .cs_set:Np = \__sjtu_page:n #1 , + page-number .initial:n = { {#1} } + } +\keys_define:nn { sjtu / name } + { + contents .tl_set:N = \contentsname , + listfigure .tl_set:N = \listfigurename , + listtable .tl_set:N = \listtablename , + figure .tl_set:N = \figurename , + table .tl_set:N = \tablename , + abstract .tl_set:N = \abstractname , + index .tl_set:N = \indexname , + appendix .tl_set:N = \appendixname , + proof .tl_set:N = \proofname , + bib .tl_set:N = \bibname , + figure* .tl_set:N = \l__sjtu_name_figure_aux_tl , + figure* .initial:n = { 图 } , + table* .tl_set:N = \l__sjtu_name_table_aux_tl , + table* .initial:n = { 表 } , + algorithm .tl_set:N = \l__sjtu_name_algorithm_tl , + algorithm .initial:n = { Algorithm } , + listalgorithm .tl_set:N = \l__sjtu_name_listalgorithm_tl , + listalgorithm .initial:n = { List~of~Algorithms } , + } +\file_input:n { sjtu-lang-report- \g__sjtu_lang_tl .cfg } +\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 + { \msg_error:nnnn { sjtutex } { font-unavailable } {#1} {#2} } +\msg_new:nnn { sjtutex } { font-unavailable } + { `#1-font~ =~ #2'~ is~ unavailable~ in~ current~ mode. } +\cs_new_eq:NN \__sjtu_fontset_case:nn \__sjtu_engine_case:nn +\cs_new:Npx \__sjtu_fontset_case:nnn #1#2#3 + { + \__sjtu_engine_case:nn + { \sys_if_output_pdf:TF {#1} {#2} } + {#3} + } +\cs_new_protected:Nn \__sjtu_set_slanted_greek: + { + \clist_const:Nn \c__sjtu_uppercase_greek_clist + { Gamma, Delta, Theta, Lambda, Xi, Pi, Sigma, Upsilon, Phi, Psi, Omega } + \clist_map_inline:Nn \c__sjtu_uppercase_greek_clist + { + \cs_set_eq:cc { up ##1 } { ##1 } + \cs_set_eq:cc { it ##1 } { var ##1 } + } + \int_compare:nNnT { \g__sjtu_math_style_int } > { 1 } + { + \clist_map_inline:Nn \c__sjtu_uppercase_greek_clist + { \cs_set_eq:cc { ##1 } { it ##1 } } + } + } +\cs_new_protected:Nn \__sjtu_set_unimath_symbol: + { + \cs_set_eq:NN \increment \upDelta + \cs_set_eq:NN \QED \blacksquare + } +\tl_if_empty:NT \g__sjtu_math_font_tl + { \tl_gset_eq:NN \g__sjtu_math_font_tl \g__sjtu_text_font_tl } +\tl_if_empty:NT \g__sjtu_cjk_font_tl + { + \sys_if_platform_windows:TF + { \tl_gset:Nn \g__sjtu_cjk_font_tl { windows } } + { + \ctex_if_platform_macos:TF + { \tl_gset:Nn \g__sjtu_cjk_font_tl { mac } } + { \tl_gset:Nn \g__sjtu_cjk_font_tl { fandol } } + } + } +\cs_new_protected:Npn \__sjtu_load_font:nn #1#2 + { + \str_if_eq:eeF { \tl_use:c { g__sjtu_ #1 _font_tl } } { none } + { + \file_if_exist:nF + { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } + { + \msg_warning:nnnn { sjtutex } { invalid-font } {#1} {#2} + \tl_gset:cn { g__sjtu_ #1 _font_tl } {#2} + } + \ctex_file_input:n + { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } + } + } +\msg_new:nnn { sjtutex } { invalid-font } + { + Invalid~ value~ `#1-font~ =~ \tl_use:c { g__sjtu_ #1 _font_tl }~ '! \\\\ + Using~ `#2'~ instead. + } +\cs_new_protected:Nn \__sjtu_load_fontset: + { + \clist_map_inline:nn + { + { math } { newtx }, + { text } { newtx }, + { cjk } { fandol } + } + { \__sjtu_load_font:nn ##1 } + } +\@onlypreamble \__sjtu_load_font:nn +\@onlypreamble \__sjtu_load_fontset: +\__sjtu_load_fontset: +\ctex_at_end_package:nn { unicode-math } + { + \DeclareDocumentCommand \bm { m } + { { \symbf {#1} } } + \DeclareDocumentCommand \boldsymbol { m } + { { \symbf {#1} } } + \int_compare:nNnTF { \g__sjtu_math_style_int } > { 1 } + { \keys_set:nn { unicode-math } { math-style = ISO } } + { \keys_set:nn { unicode-math } { math-style = TeX } } + } +\__sjtu_unicode_engine_case:nn + { + \xeCJK_declare_char_class:nn { CJK } + { "24EA, "2460->"2473, "3251->"32BF, "25A1 } + } + { + \ltjdefcharrange { 99 } + { "24EA, "2460-"2473, "3251-"32BF, "25A1 } + \ltjsetparameter { jacharrange = { +99 } } + } +\geometry + { + paper = a4paper, + top = 3.5 cm, + bottom = 4.0 cm, + left = 2.5 cm, + right = 2.5 cm, + headheight = 1.5 cm, + headsep = 0.5 cm, + footskip = 1.0 cm + } +\pagestyle { fancy } +\cs_new:Nn \__sjtu_thepage: { \thepage } +\fancyhf { } +\tl_set:Nn \l__sjtu_header_logo_tl + { + \includegraphics [ height = 1.2 cm ] + { sjtu-vi-logo- \l__sjtu_style_header_logo_color_tl .pdf } + } +\bool_if:NTF \g__sjtu_twoside_bool + { + \fancyhead [ RE, LO ] + { \l__sjtu_header_logo_tl } + \fancyhead [ RO ] + { + \l__sjtu_style_header_font_tl + \__sjtu_nouppercase:n { \rightmark } + } + \fancyhead [ LE ] + { + \__sjtu_nouppercase:n { \leftmark } + } + } + { + \fancyhead [ L ] + { \l__sjtu_header_logo_tl } + \fancyhead [ R ] + { + \l__sjtu_style_header_font_tl + \__sjtu_nouppercase:n { \leftmark } + } + } +\fancyfoot [ C ] + { + \l__sjtu_style_footer_font_tl + \__sjtu_page:n { \__sjtu_thepage: } + } +\bool_if:NTF \g__sjtu_twoside_bool + { + \fancypagestyle { plain } + { + \fancyhead [ RE, LO ] { } + \tl_set:Nn \headrulewidth { 0 pt } + } + } + { + \fancypagestyle { plain } + { + \fancyhead [ R ] { } + \tl_set:Nn \headrulewidth { 0 pt } + } + } +\cs_new_eq:NN \ps@SJTU@null \prg_do_nothing: +\RenewDocumentCommand \cleardoublepage { } + { + \clearpage + \bool_if:NT \g__sjtu_twoside_bool + { + \int_if_odd:nF \c@page + { \hbox:n { } \thispagestyle { empty } \newpage } + } + } +\ctex_set:nn { chapter } + { + pagestyle = SJTU@null , + fixskip = true , + beforeskip = 24 bp , + afterskip = 18 bp , + lofskip = \c_zero_skip , + lotskip = \c_zero_skip , + format = \zihao { 3 } \bfseries \heiti \centering , + nameformat = , + titleformat = , + aftername = \quad , + afterindent = true + } +\ctex_set:nn { section } + { + beforeskip = 24 bp , + afterskip = 6 bp , + format = \zihao { 4 } \bfseries \heiti , + afterindent = true + } +\ctex_set:nn { subsection } + { + beforeskip = 12 bp , + afterskip = 6 bp , + format = \zihao { -4 } \bfseries \heiti , + afterindent = true + } +\ctex_set:nn { subsubsection } + { + beforeskip = 6 bp , + afterskip = 6 bp , + format = \zihao { -4 } \normalfont , + afterindent = true + } +\ctex_set:nn { paragraph } + { afterindent = true } +\ctex_set:nn { subparagraph } + { afterindent = true } +\ctex_set:n { secnumdepth = 3 } +\NewDocumentCommand \SJTU@head { s O{#3} m O{#2} } + { + \CTEX@chapter@break + \IfBooleanTF {#1} + { \tl_if_empty:nF {#4} { \__sjtu_pdf_bookmark:nn { 0 } {#4} } } + { + \__sjtu_phantom_section: + \addcontentsline { toc } { chapter } {#4} + } + \cs_set_eq:NN \__sjtu_orig_ctex_gettitle:n \CTEX@gettitle + \cs_set:Npn \CTEX@gettitle ##1 { \__sjtu_orig_ctex_gettitle:n {#2} } + \chapter* {#3} + \cs_set_eq:NN \CTEX@gettitle \__sjtu_orig_ctex_gettitle:n + \@mkboth { \MakeUppercase {#2} } { \MakeUppercase {#2} } + } +\cs_new:Npn \__sjtu_head_aux:n #1 + { \SJTU@head {#1} } +\cs_new:Npn \__sjtu_head_aux_s:n #1 + { \SJTU@head* {#1} } +\cs_new:Npn \__sjtu_head_auxa_s:nn #1#2 + { \SJTU@head* {#1} [#2] } +\cs_new:Npn \__sjtu_head_auxb_s:nn #1#2 + { \SJTU@head* [#1] {#2} } +\cs_generate_variant:Nn \__sjtu_head_aux:n { V } +\cs_generate_variant:Nn \__sjtu_head_aux_s:n { V } +\cs_generate_variant:Nn \__sjtu_head_auxa_s:nn { Vn, VV } +\cs_generate_variant:Nn \__sjtu_head_auxb_s:nn { Vo } +\cs_new_eq:NN \__sjtu_pdf_bookmark:nn \use_none:nn +\cs_new_eq:NN \__sjtu_phantom_section: \prg_do_nothing: +\ctex_if_autoindent_touched:F + { \ctex_set:n { autoindent = true } } +\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } +\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } +\ctex_patch_cmd:Nnn \quotation { 1.5em } { 2 \ccwd } +\setlist { nosep } +\tl_set:Nn \textfraction { 0.15 } +\tl_set:Nn \topfraction { 0.85 } +\tl_set:Nn \bottomfraction { 0.65 } +\tl_set:Nn \floatpagefraction { 0.60 } +\ctex_patch_cmd:Nnn \@floatboxreset + { \normalsize } { \SJTU@style@float@font } +\DeclareCaptionLabelSeparator { enskip } { \enskip } +\captionsetup + { + labelsep = enskip , + justification = centering , + font = SJTU@font + } +\captionsetup [ sub ] + { + format = hang , + justification = justified , + font = SJTU@sub@font + } +\DeclareCaptionOption { aux-names } [ ] + { + \tl_set:Nn \figurename { \l__sjtu_name_figure_aux_tl } + \tl_set:Nn \tablename { \l__sjtu_name_table_aux_tl } + } +\captionsetup [ bi-second ] { aux-names } +\NewDocumentCommand \SJTUcounterwithin + { s O{ \l__sjtu_style_fl_num_sep_tl } O{ \arabic } m m } + { + \@ifbothcounters {#4} {#5} + { + \@addtoreset {#4} {#5} + \IfBooleanF {#1} + { + \cs_gset:cpo { the #4 } + { \cs:w the #5 \cs_end: #2 #3 {#4} } + } + } + } +\cs_set:Npn \thefigure + { \thechapter \l__sjtu_style_fl_num_sep_tl \arabic { figure } } +\cs_set:Npn \thetable + { \thechapter \l__sjtu_style_fl_num_sep_tl \arabic { table } } +\cs_set:Npn \theequation + { \thechapter \l__sjtu_style_eq_num_sep_tl \arabic { equation } } +\cs_new_protected:Nn \__sjtu_make_fnmark: + { \hbox:n { \@thefnmark } } +\ctex_at_end_preamble:n { + \cs_set_eq:NN \__sjtu_orig_make_fntext:n \@makefntext + \cs_set:Npn \@makefntext #1 + { + \group_begin: + \cs_set_eq:NN \@makefnmark \__sjtu_make_fnmark: + \__sjtu_orig_make_fntext:n {#1} + \group_end: + } +} +\cs_new:Npn \__sjtu_footnote_number:N #1 + { + \int_compare:nNnTF {#1} < { 21 } + { \__sjtu_unicode_char:n { \int_eval:n { "2460 - 1 + #1 } } } + { + \int_compare:nNnTF {#1} < { 36 } + { \__sjtu_unicode_char:n { \int_eval:n { "3251 - 21 + #1 } } } + { + \int_compare:nNnTF {#1} < { 51 } + { \__sjtu_unicode_char:n { \int_eval:n { "32B1 - 36 + #1 } } } + { \msg_warning:nn { sjtutex } { too-many-footnotes } } + } + } + } +\msg_new:nnn { sjtutex } { too-many-footnotes } + { Too~ many~ footnotes. } +\cs_set:Npn \thefootnote + { + \hbox:n { } + { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@footnote } + } +\cs_set:Npn \thempfootnote + { + \hbox:n { } + { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@mpfootnote } + } +\DeclareObjectType { sjtu } { 0 } +\DeclareTemplateInterface { sjtu } { component } { 0 } + { + format : tokenlist = \c_empty_tl , + content : tokenlist = \c_empty_tl , + bottom-skip : skip = \c_zero_skip , + align : choice { left, right, center, normal } = center + } +\DeclareTemplateCode { sjtu } { component } { 0 } + { + format = \l__sjtu_component_format_tl , + content = \l__sjtu_component_content_tl , + bottom-skip = \l__sjtu_component_bottom_skip , + align = + { + left = + \cs_set_eq:NN \l__sjtu_component_align: \raggedright , + right = + \cs_set_eq:NN \l__sjtu_component_align: \raggedleft , + center = + \cs_set_eq:NN \l__sjtu_component_align: \centering , + normal = + \cs_set_eq:NN \l__sjtu_component_align: \prg_do_nothing: + } + } + { + \AssignTemplateKeys + \group_begin: + \l__sjtu_component_align: + \l__sjtu_component_format_tl + \l__sjtu_component_content_tl + \par + \group_end: + \__sjtu_vspace:N \l__sjtu_component_bottom_skip + } +\DeclareTemplateInterface { sjtu } { page } { 0 } + { + bookmark : boolean = false , + bookmark-text : tokenlist = \c_empty_tl , + style : tokenlist = empty , + format : tokenlist = \linespread { 1 } \selectfont , + prefix : tokenlist , + components : commalist , + top-skip : skip = \c_zero_skip , + bottom-skip : skip = \c_zero_skip + } +\DeclareTemplateCode { sjtu } { page } { 0 } + { + bookmark = \l__sjtu_page_bookmark_bool , + bookmark-text = \l__sjtu_page_bookmark_text_tl , + style = \l__sjtu_page_style_tl , + format = \l__sjtu_page_format_tl , + prefix = \l__sjtu_page_prefix_tl , + components = \l__sjtu_page_components_clist , + top-skip = \l__sjtu_page_top_skip , + bottom-skip = \l__sjtu_page_bottom_skip + } + { + \AssignTemplateKeys + \bool_if:NTF \g__sjtu_openright_bool + { \cleardoublepage } { \clearpage } + \bool_if:NT \l__sjtu_page_bookmark_bool + { \__sjtu_pdf_bookmark:nn { 0 } { \l__sjtu_page_bookmark_text_tl } } + \exp_args:No \thispagestyle { \l__sjtu_page_style_tl } + \__sjtu_vspace_r:N \l__sjtu_page_top_skip + \__sjtu_vspace:n { - \tex_parskip:D } + \__sjtu_vspace:n { - \tex_baselineskip:D } + \group_begin: + \l__sjtu_page_format_tl + \clist_map_inline:Nn \l__sjtu_page_components_clist + { \UseInstance { sjtu } { \l__sjtu_page_prefix_tl / ##1 } } + \group_end: + \__sjtu_vspace:N \l__sjtu_page_bottom_skip + \clearpage + } +\cs_new:Npn \__sjtu_declare_component:nnn #1#2#3 + { \DeclareInstance { sjtu } {#1/#2} { component } {#3} } +\cs_new:Npn \__sjtu_declare_page:nn #1#2 + { \DeclareInstance { sjtu } {#1} { page } {#2} } +\cs_new:Npn \__sjtu_title_page_info:nnn #1#2#3 + { + \group_begin: + \cs_set:Npn \l__sjtu_info_output_format:NNN ##1##2##3 {#3} + \clist_clear:N \l__sjtu_tmpa_clist + \clist_clear:N \l__sjtu_tmpb_clist + \dim_set:Nn \l__sjtu_tmpb_dim { 5 em } + \clist_map_inline:nn {#2} + { + \clist_put_right:No \l__sjtu_tmpa_clist + { \cs:w c__sjtu_name_ ##1 _ #1 _tl \cs_end: } + \clist_put_right:No \l__sjtu_tmpb_clist + { \cs:w l__sjtu_info_ ##1 _ #1 _tl \cs_end: } + \__sjtu_dim_set_to_wd:Nv \l__sjtu_tmpa_dim { l__sjtu_info_ ##1 _ #1 _tl } + \dim_set:Nn \l__sjtu_tmpb_dim + { \dim_max:nn { \l__sjtu_tmpa_dim } { \l__sjtu_tmpb_dim } } + } + \bool_until_do:nn + { \clist_if_empty_p:N \l__sjtu_tmpa_clist } + { + \clist_pop:NN \l__sjtu_tmpa_clist \l__sjtu_tmpa_tl + \clist_pop:NN \l__sjtu_tmpb_clist \l__sjtu_tmpb_tl + \l__sjtu_info_output_format:NNN + \l__sjtu_tmpa_tl \l__sjtu_tmpb_dim \l__sjtu_tmpb_tl + \skip_vertical:N \c_zero_dim + } + \group_end: + } +\cs_generate_variant:Nn \__sjtu_title_page_info:nnn { nxn } +\clist_map_inline:nn + { + { logo } + { + content = + { + \includegraphics [ width = 3 cm ] + { sjtu-vi-badge- \l__sjtu_style_title_logo_color_tl .pdf } + \skip_vertical:n { 0.3 cm } + \includegraphics [ width = 6.81 cm ] + { sjtu-vi-name- \l__sjtu_style_title_logo_color_tl .pdf } + } + }, + { subject } + { + format = \zihao { -2 } \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_subject_zh_tl , + bottom-skip = \c_zero_dim plus 2 fill + }, + { title } + { + format = \zihao { 2 } \bfseries \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_display_title_zh_tl , + bottom-skip = \c_zero_dim plus 3 fill + }, + { info } + { + format = \zihao { 4 } \fixedlineskip { 31.2 bp } , + content = + { + \__sjtu_title_page_info:nxn { zh } + { + author, + id, + supervisor, + \tl_if_empty:NF \l__sjtu_info_assoc_supervisor_zh_tl + { assoc_supervisor }, + department, + } + { + \__sjtu_cjk_spread_box:nn { 5 em } { \heiti #1 } + \c__sjtu_name_info_sep_zh_tl + \__sjtu_left_aligned_box:nn {#2} {#3} + } + } , + bottom-skip = 31.2 bp + }, + { date } + { + format = \zihao { 4 } \bfseries \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_date_zh_tl + } + } + { + \__sjtu_declare_component:nnn { title / zh } #1 + } +\__sjtu_declare_page:nn { title / zh } + { + bookmark = true , + bookmark-text = \c__sjtu_name_title_page_tl , + prefix = title / zh , + components = { logo, subject, title, info, date } + } +\bool_if:NT \g__sjtu_titlepage_bool + { + \RenewDocumentCommand \maketitle { } + { \UseInstance { sjtu } { title / zh } } + } +\cs_new:Nn \__sjtu_output_keywords:Nnn + { + \clist_if_empty:NF #1 + { + \par \mode_leave_vertical: \par \noindent + { \bfseries #2 } \clist_use:Nn #1 {#3} + } + } +\bool_if:NTF \g__sjtu_titlepage_bool + { + \DeclareDocumentEnvironment { abstract } { } + { + \__sjtu_head_aux_s:n { \abstractname } + } + { + \__sjtu_output_keywords:Nnn \l__sjtu_info_keywords_zh_clist + { \c__sjtu_name_keywords_tl } { \c__sjtu_name_item_sep_tl } + \clearpage + } + } + { + \__sjtu_preto_cmd:Nn \endabstract + { + \__sjtu_output_keywords:Nnn \l__sjtu_info_keywords_zh_clist + { \c__sjtu_name_keywords_tl } { \c__sjtu_name_item_sep_tl } + } + } +\DeclareDocumentCommand \tableofcontents { } + { + \__sjtu_head_aux_s:n { \contentsname } + \@starttoc { toc } + } +\NewDocumentCommand \SJTU@listof { m m s } + { + \IfBooleanTF {#3} + { \__sjtu_head_aux_s:n {#1} } + { \__sjtu_head_aux:n {#1} } + \exp_args:Nv \@starttoc { ext@ #2 } + } +\DeclareDocumentCommand \listoffigures { } + { \SJTU@listof { \listfigurename } { figure } } +\DeclareDocumentCommand \listoftables { } + { \SJTU@listof { \listtablename } { table } } +\tl_set:Nn \cftdotsep { 1 } +\tl_set:Nn \cftchapleader { \normalfont \cftdotfill { \cftdotsep } } +\cs_new_protected:Nn \__sjtu_update_cft_presnum: + { + \tl_set:Nn \cftfigpresnum { \figurename \c_space_tl } + \__sjtu_dim_add_to_wd:Nn \cftfignumwidth { \cftfigpresnum } + \tl_set:Nn \cfttabpresnum { \tablename \c_space_tl } + \__sjtu_dim_add_to_wd:Nn \cfttabnumwidth { \cftfigpresnum } + } +\ctex_at_end_preamble:n + { \__sjtu_update_cft_presnum: } +\newcounter { SJTU@bib } +\NewDocumentEnvironment { @bibliolist } { m } + { + \cs_if_exist_use:N \bibfont + \list + { \@biblabel { \arabic{ SJTU@bib } } } + { + \__sjtu_dim_set_to_wd:Nn \labelwidth { \@biblabel {#1} } + \dim_set_eq:NN \leftmargin \labelwidth + \dim_add:Nn \leftmargin { \labelsep } + \dim_if_exist:NTF \bibitemsep + { + \dim_set_eq:NN \itemsep \bibitemsep + \dim_if_exist:NT \bibparsep + { \dim_set_eq:NN \parsep \bibparsep } + } + { + \dim_if_exist:NT \bibsep + { + \dim_set_eq:NN \itemsep \bibsep + \dim_zero:N \parsep + } + } + \@nmbrlisttrue + \tl_set:Nn \@listctr { SJTU@bib } + \cs_set:Npn \p@SJTU@bib { } + \cs_set:Npn \theSJTU@bib { \arabic { SJTU@bib } } + } + \sloppy + \int_set:Nn \clubpenalty { 4000 } + \int_set_eq:NN \@clubpenalty \clubpenalty + \int_set:Nn \widowpenalty { 4000 } + \char_set_sfcode:nn { `\. } { 1000 } + } + { + \cs_set:Npn \@noitemerr + { \msg_warning:nnn { sjtutex } { empty-environment } { bibliolist } } + \endlist + } +\msg_new:nnn { sjtutex } { empty-environment } + { Empty~ `#1'~ environment. } +\NewDocumentEnvironment { bibliolist } { m +b } + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } { } +\NewDocumentEnvironment { bibliolist* } { m +b } + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } { } +\ctex_at_end_package:nn { hyperref } + { + \hypersetup + { + linktoc = all, + bookmarksdepth = 2, + bookmarksnumbered = true, + bookmarksopen = true, + bookmarksopenlevel = 1, + unicode = true, + psdextra = true, + breaklinks = true, + pdfdisplaydoctitle = true + } + \int_new:N \g__sjtu_bookmark_int + \cs_gset_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 + { + \phantomsection + \int_gincr:N \g__sjtu_bookmark_int + \pdfbookmark [#1] {#2} + { sjtubookmark. \int_use:N \g__sjtu_bookmark_int } + } + \cs_gset_eq:NN \__sjtu_phantom_section: \phantomsection + \pdfstringdefDisableCommands + { + \cs_set_eq:NN \\ \prg_do_nothing: + \cs_set_eq:NN \quad \c_empty_tl + \cs_set_eq:NN \qquad \c_empty_tl + \cs_set_eq:NN \hspace \use_none:n + } + \ctex_after_end_preamble:n + { + \hypersetup + { + pdftitle = \l__sjtu_info_title_zh_tl, + pdfsubject = \l__sjtu_info_subject_zh_tl, + pdfkeywords = \l__sjtu_info_keywords_zh_clist, + pdfauthor = \l__sjtu_info_author_zh_tl + } + } + } +\ctex_at_end_package:nn { threeparttable } + { \tl_put_right:Nn \TPTnoteSettings { \footnotesize } } +\ctex_at_end_package:nn { longtable } + { \AtBeginEnvironment { longtable } { \SJTU@style@float@font } } +\cs_new_protected:Nn \__sjtu_new_theorems: + { + \clist_map_inline:nn + { + assumption, axiom, conjecture, corollary, definition, example, + exercise, lemma, problem, proposition, theorem + } + { \exp_args:Nnv \newtheorem {##1} { c__sjtu_name_ ##1 _tl } [ chapter ] } + \clist_map_inline:nn + { remark, solution } + { \exp_args:NNnv \newtheorem* {##1} { c__sjtu_name_ ##1 _tl } } + } +\ctex_at_begin_package:nn { amsthm } + { + \cs_if_exist:NT \openbox + { + \cs_new_eq:NN \__sjtu_save_openbox: \openbox + \cs_undefine:N \openbox + } + } +\ctex_at_end_package:nn { amsthm } + { + \cs_if_exist:NT \__sjtu_save_openbox: + { \cs_set_eq:NN \openbox \__sjtu_save_openbox: } + \tl_set:Nn \qedsymbol { \ensuremath { \QED } } + \RenewDocumentEnvironment { proof } { O{ \proofname } } + { + \par \pushQED { \qed } + \normalfont \dim_zero:N \topsep + \trivlist + \item + [ + \skip_horizontal:N \labelsep + \bfseries \heiti #1 \@addpunct { \enskip } + ] + \ignorespaces + } + { \popQED \endtrivlist \legacy_if_set_false:n { @endpe } } + \newtheoremstyle { sjtu } + { } { } { \normalfont } { } { \bfseries \heiti } { } { \ccwd } { } + \theoremstyle { sjtu } + \__sjtu_new_theorems: + } +\ctex_at_end_package:nn { ntheorem } + { + \theoremheaderfont { \bfseries \heiti } + \theorembodyfont { \normalfont } + \theoremseparator { \enskip } + \theoremsymbol { \ensuremath { \QED } } + \qedsymbol { \ensuremath { \QED } } + \newtheorem* { proof } { \proofname } + \theoremsymbol { } + \__sjtu_new_theorems: + } +\cs_new_protected:Npn \__sjtu_newlistof:nnnnn #1#2#3#4#5 + { + \exp_args:Nnv \newlistentry {#2} { ext@ #3 } { 0 } + \exp_args:Ne \newcounter { \tl_use:c { ext@ #3 } depth } + \exp_args:Ne \setcounter { \tl_use:c { ext@ #3 } depth } { 1 } + \dim_set:cn { cft #2 indent } { 1.5 em } + \dim_set:cn { cft #2 numwidth } { 2.3 em } + \cs_set_eq:cc { l@ #3 } { l@ #2 } + \__sjtu_appto_cmd:Nn \__sjtu_update_cft_presnum: + { + \tl_set:cn { cft #2 presnum } { #4 \c_space_tl } + \__sjtu_dim_add_to_wd:cv { cft #2 numwidth } { cft #2 presnum } + } + \exp_args:Nc \DeclareDocumentCommand { listof #1 s } { } + { \SJTU@listof {#5} {#3} } + \cs_set:cpn { the #3 } + { \thechapter \l__sjtu_style_fl_num_sep_tl \arabic {#3} } + } +\ctex_at_end_package:nn { algorithm } + { + \tl_set:Nn \fname@algorithm { \l__sjtu_name_algorithm_tl } + \tl_set:Nn \listalgorithmname { \l__sjtu_name_listalgorithm_tl } + \__sjtu_newlistof:nnnnn { algorithm } { alg } { algorithm } + { \fname@algorithm } { \listalgorithmname } + } +\ctex_at_begin_package:nn { algorithm2e } + { \cs_set_eq:NN \__sjtu_save_chapter:w \@chapter } +\ctex_at_end_package:nn { algorithm2e } + { + \cs_set_eq:NN \@chapter \__sjtu_save_chapter:w + \SetAlgorithmName { \l__sjtu_name_algorithm_tl } + { \l__sjtu_name_algorithm_tl } + { \l__sjtu_name_listalgorithm_tl } + \SetAlgoCaptionSeparator { \enskip } + \__sjtu_newlistof:nnnnn { algorithm } { alg } { algocf } + { \algorithmcfname } { \listalgorithmcfname } + \ctex_patch_cmd:Nnn \algocf@latexcaption + { \addcontentsline } + { \caption@iflist { \addcontentsline } { \@gobblethree } } + } +\ctex_at_end_package:nn { listings } + { + \lstdefinestyle { lstStyleCode } + { + aboveskip = \medskipamount , + belowskip = \medskipamount , + basicstyle = \ttfamily \zihao { 6 } , + commentstyle = \slshape \color { black!60 } , + stringstyle = \color { green!40!black!100 } , + keywordstyle = \bfseries \color { blue!50!black } , + extendedchars = false , + upquote = true , + tabsize = 2 , + showstringspaces = false , + xleftmargin = 1 em , + xrightmargin = 1 em , + breaklines = false , + framexleftmargin = 1 em , + framexrightmargin = 1 em , + backgroundcolor = \color { gray!10 } , + columns = flexible , + keepspaces = true , + texcl = true , + mathescape = true + } + } +\ctex_at_end_package:nn { nomencl } + { \tl_set:Nn \nomname { \l__sjtu_name_nom_tl } } +\endinput +%% +%% End of file `sjtureport.cls'. diff --git a/texmf/tex/latex/sjtutex/sjtuthesis.cls b/texmf/tex/latex/sjtutex/sjtuthesis.cls new file mode 100644 index 00000000..6c484d80 --- /dev/null +++ b/texmf/tex/latex/sjtutex/sjtuthesis.cls @@ -0,0 +1,1682 @@ +%% +%% This is file `sjtuthesis.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% sjtutex.dtx (with options: `class,thesis') +%% +%% Copyright (C) SJTUG +%% 2018--2022 Alexara Wu +%% 2022 Log Creative +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% TThe Current Maintainers of this work are Alexara Wu and Log Creative. +%% +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3} +\GetIdInfo $Id: sjtutex.dtx 2.0-alpha 2022-12-27 18:30:00Z Alexara Wu $ + {Thesis template for Shanghai Jiao Tong University} +\ProvidesExplClass{sjtuthesis} + {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +\RequirePackage { xparse, xtemplate } +\msg_new:nnn { sjtutex } { l3-too-old } + { + Package~ "#1"~ is~ too~ old. \\\\ + Please~ update~ an~ up-to-date~ version~ of~ the~ bundles \\ + "l3kernel"~ and~ "l3packages"~ using~ your~ TeX~ package \\ + manager~ or~ from~ CTAN. + } +\@ifpackagelater { expl3 } { 2020/04/06 } { } + { \msg_error:nnn { sjtutex } { l3-too-old } {#1} } +\NewDocumentCommand \sjtuthesis { } { SJTU \textsc{ Thesis } } +\bool_new:N \l__sjtu_tmpa_bool +\int_new:N \l__sjtu_tmpa_int +\tl_new:N \l__sjtu_tmpa_tl +\tl_new:N \l__sjtu_tmpb_tl +\clist_new:N \l__sjtu_tmpa_clist +\clist_new:N \l__sjtu_tmpb_clist +\dim_new:N \l__sjtu_tmpa_dim +\dim_new:N \l__sjtu_tmpb_dim +\skip_new:N \l__sjtu_tmpa_skip +\box_new:N \l__sjtu_tmpa_box +\int_new:N \g__sjtu_thesis_type_int +\tl_new:N \g__sjtu_lang_tl +\tl_new:N \g__sjtu_lang_aux_tl +\tl_set:Nn \g__sjtu_lang_aux_tl { zh } +\tl_new:N \g__sjtu_zihao_tl +\dim_new:N \g__sjtu_font_size_dim +\dim_new:N \g__sjtu_line_skip_dim +\dim_new:N \g__sjtu_default_line_skip_dim +\fp_new:N \g__sjtu_line_spread_fp +\tl_new:N \g__sjtu_text_font_tl +\tl_new:N \g__sjtu_math_font_tl +\tl_new:N \g__sjtu_cjk_font_tl +\tl_new:N \g__sjtu_save_encodingdefault_tl +\tl_new:N \g__sjtu_save_rmdefault_tl +\tl_new:N \g__sjtu_save_sfdefault_tl +\tl_new:N \g__sjtu_save_ttdefault_tl +\int_new:N \g__sjtu_math_style_int +\bool_new:N \g__sjtu_intlimits_bool +\bool_set_false:N \g__sjtu_intlimits_bool +\bool_new:N \g__sjtu_slint_bool +\bool_set_false:N \g__sjtu_slint_bool +\bool_new:N \g__sjtu_review_bool +\clist_new:N \g__sjtu_options_to_ctex_class_clist +\clist_set:Nn \g__sjtu_options_to_ctex_class_clist + { UTF8, scheme = plain, fontset = none } +\clist_new:N \g__sjtu_options_to_packages_clist +\bool_new:N \g__sjtu_twoside_bool +\bool_set_true:N \g__sjtu_twoside_bool +\bool_new:N \g__sjtu_openright_bool +\bool_set_true:N \g__sjtu_openright_bool +\bool_new:N \g__sjtu_draft_bool +\keys_define:nn { sjtu / option } + { + type .choice: , + type .value_required:n = true , + type .choices:nn = + { bachelor, master, doctor } + { \int_gset_eq:NN \g__sjtu_thesis_type_int \l_keys_choice_int } , + type .initial:n = { master } , + lang .choice: , + lang .value_required:n = true , + lang .choices:nn = + { zh, en } + { + \tl_gset_eq:NN \g__sjtu_lang_tl \l_keys_choice_tl + \int_compare:nNnT { \l_keys_choice_int } = { 1 } + { \tl_gset:Nn \g__sjtu_lang_aux_tl { en } } + } , + lang .initial:n = { zh } , + zihao .choice: , + zihao .value_required:n = true , + zihao / -4 .code:n = + { + \tl_gset:Nn \g__sjtu_zihao_tl { -4 } + \dim_gset:Nn \g__sjtu_font_size_dim { 12 bp } + \dim_gset:Nn \g__sjtu_default_line_skip_dim { 20 bp } + } , + zihao / 5 .code:n = + { + \tl_gset:Nn \g__sjtu_zihao_tl { 5 } + \dim_gset:Nn \g__sjtu_font_size_dim { 10.5 bp } + \dim_gset:Nn \g__sjtu_default_line_skip_dim { 15.6 bp } + } , + zihao .initial:n = { -4 } , + lineskip .dim_gset:N = \g__sjtu_line_skip_dim , + text-font .tl_gset:N = \g__sjtu_text_font_tl , + text-font .initial:n = { newtx } , + math-font .tl_gset:N = \g__sjtu_math_font_tl , + cjk-font .tl_gset:N = \g__sjtu_cjk_font_tl , + math-style .choice: , + math-style .value_required: n = true, + math-style .choices:nn = + { TeX, ISO, GB } + { \int_gset_eq:NN \g__sjtu_math_style_int \l_keys_choice_int } , + math-style .initial:n = { TeX } , + nointlimits .value_forbidden:n = true, + intlimits .value_forbidden:n = true, + nointlimits .code:n = + { \bool_set_false:N \g__sjtu_intlimits_bool }, + intlimits .code:n = + { \bool_set_true:N \g__sjtu_intlimits_bool }, + upint .value_forbidden:n = true, + slint .value_forbidden:n = true, + upint .code:n = + { \bool_set_false:N \g__sjtu_slint_bool }, + slint .code:n = + { \bool_set_true:N \g__sjtu_slint_bool }, + oneside .value_forbidden:n = true, + twoside .value_forbidden:n = true, + oneside .code:n = + { \bool_set_false:N \g__sjtu_twoside_bool } , + twoside .code:n = + { \bool_set_true:N \g__sjtu_twoside_bool } , + openany .value_forbidden:n = true, + openright .value_forbidden:n = true, + openany .code:n = + { \bool_set_false:N \g__sjtu_openright_bool } , + openright .code:n = + { \bool_set_true:N \g__sjtu_openright_bool } , + draft .value_forbidden:n = true, + final .value_forbidden:n = true, + draft .code:n = + { \bool_set_true:N \g__sjtu_draft_bool }, + final .code:n = + { \bool_set_false:N \g__sjtu_draft_bool }, + review .bool_gset:N = \g__sjtu_review_bool , + review .initial:n = false , + unknown .code:n = { \msg_error:nn { sjtutex } { unknown-option } } + } +\msg_new:nnn { sjtutex } { unknown-option } + { Class~ option~ "\l_keys_key_tl"~ is~ unknown. } +\cs_if_exist:NTF \ProcessKeyOptions + { \ProcessKeyOptions [ sjtu / option ] } + { + \RequirePackage { l3keys2e } + \ProcessKeysOptions { sjtu / option } + } +\dim_compare:nNnT \g__sjtu_line_skip_dim < \g__sjtu_font_size_dim + { \dim_set_eq:NN \g__sjtu_line_skip_dim \g__sjtu_default_line_skip_dim } +\fp_set:Nn \g__sjtu_line_spread_fp + { \dim_ratio:nn { \g__sjtu_line_skip_dim } { \g__sjtu_font_size_dim } / 1.2 } +\clist_put_right:Nx \g__sjtu_options_to_ctex_class_clist + { + zihao = \g__sjtu_zihao_tl , + linespread = \fp_use:N \g__sjtu_line_spread_fp , + \bool_if:NTF \g__sjtu_twoside_bool + { twoside } { oneside } , + \bool_if:NTF \g__sjtu_openright_bool + { openright } { openany } , + \bool_if:NTF \g__sjtu_draft_bool + { draft } { final } + } +\exp_args:No \PassOptionsToClass + { \g__sjtu_options_to_ctex_class_clist } + { ctexbook } +\clist_set:Nn \g__sjtu_options_to_packages_clist + { + { no-math } { fontspec }, + { titles } { tocloft }, + { perpage, bottom } { footmisc }, + { list = off } { bicaption }, + { warnings-off = + { + mathtools-overbracket, + mathtools-colon + } + } { unicode-math }, + { amsmath, thmmarks } { ntheorem }, + { chapter } { algorithm }, + { algochapter } { algorithm2e } + } +\int_compare:nNnT { \g__sjtu_math_style_int } > { 1 } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { slantedGreek } { newtxmath }, + { slantedGreek } { newpxmath }, + { slantedGreek } { mathptmx } + } + } +\bool_if:NTF \g__sjtu_intlimits_bool + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { intlimits } { amsmath }, + { displaylimits } { cmupint } + } + } + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { nointlimits } { amsmath }, + { nolimits } { cmupint } + } + } +\bool_if:NF \g__sjtu_slint_bool + { + \clist_put_right:Nn \g__sjtu_options_to_packages_clist + { + { upint } { newtxmath }, + { upint } { newpxmath }, + { upint } { stix2 } + } + } +\clist_map_inline:Nn \g__sjtu_options_to_packages_clist + { \PassOptionsToPackage #1 } +\LoadClass { ctexbook } +\RequirePackage + { + mathtools, + geometry, + fancyhdr, + tocloft, + caption, + bicaption, + subcaption, + xcolor, + graphicx, + enumitem + } +\cs_generate_variant:Nn \tl_const:Nn { co, Nv } +\cs_generate_variant:Nn \cs_gset:Npn { cpo } +\prg_generate_conditional_variant:Nnn \regex_match:nn { ne } { T } +\exp_args_generate:n { Nnv } +\cs_new:Npx \__sjtu_engine_case:nn #1#2 + { + \bool_lazy_or:nnTF + { \sys_if_engine_xetex_p: } + { \sys_if_engine_luatex_p: } + {#2} + { \sys_if_engine_pdftex:T {#1} } + } +\cs_new:Npx \__sjtu_engine_case:nnn #1#2#3 + { + \sys_if_engine_xetex:TF + {#2} + { + \sys_if_engine_luatex:TF + {#3} + { \sys_if_engine_pdftex:T {#1} } + } + } +\cs_new:Npx \__sjtu_unicode_engine_case:nn #1#2 + { + \sys_if_engine_xetex:TF + {#1} + { \sys_if_engine_luatex:T {#2} } + } +\__sjtu_engine_case:nn + { + \cs_new:Npn \__sjtu_unicode_char:n #1 + { + \Unicode + { \int_div_truncate:nn {#1} { 256 } } + { \int_mod:nn {#1} { 256 } } + } + } + { \cs_new:Npn \__sjtu_unicode_char:n #1 { \tex_Uchar:D #1 \scan_stop: } } +\cs_new_protected:Npn \__sjtu_preto_cmd:Nn #1#2 + { + \ctex_preto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +\cs_new_protected:Npn \__sjtu_appto_cmd:Nn #1#2 + { + \ctex_appto_cmd:NnnTF #1 { } {#2} + { } { \ctex_patch_failure:N #1 } + } +\cs_new:Npn \__sjtu_fixed_line_skip:n #1 + { + \exp_args:Nx \linespread + { \fp_to_decimal:n { \dim_ratio:nn { #1 } { \f@size pt } / 1.2 } } + \selectfont + } +\NewDocumentCommand \fixedlineskip { m } + { \exp_args:Nx \__sjtu_fixed_line_skip:n {#1} \tex_ignorespaces:D } +\cs_new:Npn \__sjtu_dim_set_to_wd:Nn #1#2 + { + \hbox_set:Nn \l__sjtu_tmpa_box {#2} + \dim_set:Nn #1 { \box_wd:N \l__sjtu_tmpa_box } + } +\cs_new:Npn \__sjtu_dim_add_to_wd:Nn #1#2 + { + \hbox_set:Nn \l__sjtu_tmpa_box {#2} + \dim_add:Nn #1 { \box_wd:N \l__sjtu_tmpa_box } + } +\cs_generate_variant:Nn \__sjtu_dim_set_to_wd:Nn { Nv } +\cs_generate_variant:Nn \__sjtu_dim_add_to_wd:Nn { cv } +\cs_new_protected:Npn \__sjtu_vspace:N #1 + { + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + } +\cs_new_protected:Npn \__sjtu_vspace:n #1 + { + \skip_set:Nn \l__sjtu_tmpa_skip {#1} + \__sjtu_vspace:N \l__sjtu_tmpa_skip + } +\cs_new_protected:Npn \__sjtu_vspace_r:N #1 + { + \dim_set_eq:NN \l__sjtu_tmpa_dim \prevdepth + \hrule height \c_zero_dim + \nobreak + \skip_vertical:N #1 + \skip_vertical:N \c_zero_skip + \dim_set_eq:NN \prevdepth \l__sjtu_tmpa_dim + } +\cs_new_protected:Npn \__sjtu_vspace_r:n #1 + { + \skip_set:Nn \l__sjtu_tmpa_skip {#1} + \__sjtu_vspace_r:N \l__sjtu_tmpa_skip + } +\__sjtu_engine_case:nnn + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \bool_set_false:N \l__sjtu_tmpa_bool + \cs_set_eq:NN \SJTU@CJK@filltwosidesSymbol \CJKsymbol + \cs_set:Npn \CJKsymbol ##1 + { + \bool_if:NTF \l__sjtu_tmpa_bool + { \hfil \SJTU@CJK@filltwosidesSymbol { ##1 } } + { + \SJTU@CJK@filltwosidesSymbol { ##1 } + \bool_set_true:N \l__sjtu_tmpa_bool + } + } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \cs_set:Npn \CJKglue + { \skip_horizontal:n { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } + { + \cs_new_protected:Npn \__sjtu_cjk_spread_box:nn #1#2 + { + \mode_leave_vertical: + \group_begin: + \ltjsetparameter { kanjiskip = { \c_zero_dim plus 1 filll } } + \hbox_to_wd:nn {#1} {#2} + \group_end: + } + } +\cs_new_protected:Npn \__sjtu_left_aligned_box:nn #1#2 + { + \mode_leave_vertical: + \hbox_to_wd:nn {#1} { #2 \hfil } + } +\cs_new_protected:Npn \__sjtu_define_name:nn #1#2 + { \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} } +\cs_new_protected:Npn \__sjtu_define_name:nnn #1#2#3 + { + \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} + \tl_const:cn { c__sjtu_name_ #1 _en_tl } {#3} + } +\cs_new_protected:Npn \__sjtu_define_name_g:nn #1#2 + { \tl_const:cn { c__sjtu_name_ #1 _tl } {#2} } +\cs_new_protected:Npn \__sjtu_define_name_g:nnn #1#2#3 + { + \tl_const:cn { c__sjtu_name_ #1 _zh_tl } {#2} + \tl_const:cn { c__sjtu_name_ #1 _en_tl } {#3} + \tl_gset_eq:cc + { c__sjtu_name_ #1 _tl } + { c__sjtu_name_ #1 _ \g__sjtu_lang_tl _tl } + } +\cs_new_protected:Npn \__sjtu_define_name_from_clist:nNnn #1#2#3#4 + { + \tl_const:cx { c__sjtu_name_ #1 _zh_tl } + { \clist_item:nn {#3} {#2} } + \tl_const:cx { c__sjtu_name_ #1 _en_tl } + { \clist_item:nn {#4} {#2} } + } +\cs_new_protected:Npn \__sjtu_define_symbol:nn #1#2 + { \tl_const:co { c__sjtu_symbol_ #1 _tl } { \__sjtu_unicode_char:n {#2} } } +\cs_new:Npn \__sjtu_date_aux_zh:nnn #1#2#3 + { \__zhnum_date_aux:Nnnnn \int_to_arabic:n { ~ } {#1} {#2} {#3} } +\cs_new:Npn \__sjtu_date_aux_zh:w #1-#2-#3 \q_stop + { \__sjtu_date_aux_zh:nnn {#1} {#2} {#3} } +\clist_const:Nn \c__sjtu_name_month_en_clist + { + January, February, March, April, May, June, + July, August, September, October, November, December + } +\cs_new:Npn \__sjtu_ordinal_en:n #1 + { + \int_to_arabic:n {#1} + \exp_not:N \textsuperscript + { + \int_case:nnF { \int_mod:nn {#1} { 100 } } + { + { 11 } { th } + { 12 } { th } + { 13 } { th } + } + { + \int_case:nnF { \int_mod:nn {#1} { 10 } } + { + { 1 } { st } + { 2 } { nd } + { 3 } { rd } + } + { th } + } + } + } +\cs_new:Npn \__sjtu_date_aux_en:nnn #1#2#3 + { \clist_item:Nn \c__sjtu_name_month_en_clist {#2}~ \__sjtu_ordinal_en:n {#3},~ #1 } +\cs_new:Npn \__sjtu_date_aux_en:w #1-#2-#3 \q_stop + { \__sjtu_date_aux_en:nnn {#1} {#2} {#3} } +\clist_map_inline:nn + { zh, en } + { + \tl_const:cx { c__sjtu_today_ #1 _tl } + { + \use:c { __sjtu_date_aux_ #1 :nnn } + { \int_value:w \tex_year:D } + { \tex_month:D } + { \tex_day:D } + } + } +\tl_const:Nv \c__sjtu_today_tl { c__sjtu_today_ \g__sjtu_lang_tl _tl } +\file_input:n { sjtu-name-thesis.cfg } +\NewDocumentCommand \sjtusetup { } { \keys_set:nn { sjtu } } +\keys_define:nn { sjtu } + { + info .meta:nn = { sjtu / info } {#1} , + style .meta:nn = { sjtu / style } {#1} , + name .meta:nn = { sjtu / name } {#1} + } +\clist_map_inline:nn + { + title, display_title, running_title, subject, author, date, + supervisor, assoc_supervisor, department, + co_supervisor, major, degree + } + { + \tl_new:c { l__sjtu_info_ #1 _zh_tl } + \tl_new:c { l__sjtu_info_ #1 _en_tl } + } +\tl_set:co { l__sjtu_info_title_aux_tl } + { \cs:w l__sjtu_info_title_ \g__sjtu_lang_aux_tl _tl \cs_end: } +\tl_new:N \l__sjtu_info_id_zh_tl +\clist_map_inline:nn + { keywords, fund } + { + \clist_new:c { l__sjtu_info_ #1 _zh_clist } + \clist_new:c { l__sjtu_info_ #1 _en_clist } + } +\keys_define:nn { sjtu / info } + { + title .code:n = + { + \tl_set:Nn \l__sjtu_info_title_zh_tl {#1} + \clist_map_inline:nn + { + \l__sjtu_info_display_title_zh_tl , + \l__sjtu_info_running_title_zh_tl + } + { \tl_if_empty:NT ##1 { \tl_set:Nn ##1 {#1} } } + } , + title* .code:n = + { + \tl_set:Nn \l__sjtu_info_title_en_tl {#1} + \clist_map_inline:nn + { + \l__sjtu_info_display_title_en_tl , + \l__sjtu_info_running_title_en_tl + } + { \tl_if_empty:NT ##1 { \tl_set:Nn ##1 {#1} } } + } , + display-title .tl_set:N = \l__sjtu_info_display_title_zh_tl , + display-title* .tl_set:N = \l__sjtu_info_display_title_en_tl , + running-title .tl_set:N = \l__sjtu_info_running_title_zh_tl , + running-title* .tl_set:N = \l__sjtu_info_running_title_en_tl , + subject .tl_set:N = \l__sjtu_info_subject_zh_tl , + subject .initial:n = + { + \c__sjtu_name_univ_zh_tl + \c__sjtu_name_degree_level_zh_tl + \c__sjtu_name_thesis_zh_tl + } , + subject* .tl_set:N = \l__sjtu_info_subject_en_tl , + subject* .initial:n = + { + A~ Dissertation~ Submitted~ to \\ + { \c__sjtu_name_univ_en_tl }~ for~ + { \c__sjtu_name_degree_level_en_tl }~ Degree + } , + keywords .clist_set:N = \l__sjtu_info_keywords_zh_clist , + keywords* .clist_set:N = \l__sjtu_info_keywords_en_clist , + author .tl_set:N = \l__sjtu_info_author_zh_tl , + author* .tl_set:N = \l__sjtu_info_author_en_tl , + id .tl_set:N = \l__sjtu_info_id_zh_tl , + supervisor .tl_set:N = \l__sjtu_info_supervisor_zh_tl , + supervisor* .tl_set:N = \l__sjtu_info_supervisor_en_tl , + assoc-supervisor .tl_set:N = \l__sjtu_info_assoc_supervisor_zh_tl , + assoc-supervisor* .tl_set:N = \l__sjtu_info_assoc_supervisor_en_tl , + co-supervisor .tl_set:N = \l__sjtu_info_co_supervisor_zh_tl , + co-supervisor* .tl_set:N = \l__sjtu_info_co_supervisor_en_tl , + degree .tl_set:N = \l__sjtu_info_degree_zh_tl , + degree* .tl_set:N = \l__sjtu_info_degree_en_tl , + department .tl_set:N = \l__sjtu_info_department_zh_tl , + department* .tl_set:N = \l__sjtu_info_department_en_tl , + major .tl_set:N = \l__sjtu_info_major_zh_tl , + major* .tl_set:N = \l__sjtu_info_major_en_tl , + fund .clist_set:N = \l__sjtu_info_fund_zh_clist , + fund* .clist_set:N = \l__sjtu_info_fund_en_clist , + date .code:n = + { + \regex_match:neT { \d{4}-\d{2}-\d{2} } {#1} + { + \tl_set:Nx \l__sjtu_info_date_zh_tl + { \exp_last_unbraced:Ne \__sjtu_date_aux_zh:w #1 \q_stop } + \tl_set:Nx \l__sjtu_info_date_en_tl + { \exp_last_unbraced:Ne \__sjtu_date_aux_en:w #1 \q_stop } + } + } , + display-date .tl_set:N = \l__sjtu_info_date_zh_tl , + display-date .initial:V = \c__sjtu_today_zh_tl , + display-date* .tl_set:N = \l__sjtu_info_date_en_tl , + display-date* .initial:V = \c__sjtu_today_en_tl + } +\RenewDocumentCommand \title { s +m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { title* = {#2} } } + { \keys_set_known:nn { sjtu / info } { title = {#2} } } + } +\tl_set:Nn \@title { \l__sjtu_info_title_zh_tl } +\RenewDocumentCommand \author { s m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { author* = {#2} } } + { \keys_set_known:nn { sjtu / info } { author = {#2} } } + } +\tl_set:Nn \@author { \l__sjtu_info_author_zh_tl } +\RenewDocumentCommand \date { s m } + { + \IfBooleanTF {#1} + { \keys_set_known:nn { sjtu / info } { display-date* = {#2} } } + { \keys_set_known:nn { sjtu / info } { display-date = {#2} } } + } +\tl_set:Nn \@date { \l__sjtu_info_date_zh_tl } +\tl_set:Nv \today { c__sjtu_today_ \g__sjtu_lang_tl _tl } +\ctex_at_end_preamble:n + { + \bool_if:NT \g__sjtu_review_bool + { + \clist_map_inline:nn + { author, supervisor, assoc_supervisor, co_supervisor } + { + \tl_clear:c { l__sjtu_info_ #1 _zh_tl } + \tl_clear:c { l__sjtu_info_ #1 _en_tl } + } + \tl_clear:N \l__sjtu_info_id_zh_tl + \clist_clear:N \l__sjtu_info_fund_zh_clist + \clist_clear:N \l__sjtu_info_fund_en_clist + } + } +\keys_define:nn { sjtu / style } + { + float-font .tl_set:N = \SJTU@style@float@font , + float-font .initial:n = \zihao { 5 } \fixedlineskip { 15.6 bp } , + caption-font .code:n = + { \DeclareCaptionFont { SJTU@font } {#1} } , + caption-font .initial:n = \zihao { 5 } \bfseries , + subcaption-font .code:n = + { \DeclareCaptionFont { SJTU@sub@font } {#1} } , + subcaption-font .initial:n = \zihao { 5 } \normalfont , + fnmark-font .tl_set:N = \l__sjtu_style_fnmark_font_tl , + fnmark-font .initial:n = , + float-num-sep .tl_set:N = \l__sjtu_style_fl_num_sep_tl , + float-num-sep .initial:n = { -- } , + equation-num-sep .tl_set:N = \l__sjtu_style_eq_num_sep_tl , + equation-num-sep .initial:n = { -- } , + title-logo-color .choice: , + title-logo-color .choices:nn = + { red, blue, black } + { \tl_set_eq:NN \l__sjtu_style_title_logo_color_tl \l_keys_choice_tl } , + title-logo-color .initial:n = { red } , + header-logo-color .choice: , + header-logo-color .choices:nn = + { red, blue, black } + { \tl_set_eq:NN \l__sjtu_style_header_logo_color_tl \l_keys_choice_tl } , + header-logo-color .initial:n = { red } , + header-uppercase .choice: , + header-uppercase / true .code:n = + { \cs_gset_eq:NN \__sjtu_nouppercase:n \use:n } , + header-uppercase / false .code:n = + { \cs_gset:Nn \__sjtu_nouppercase:n { \nouppercase {##1} } } , + header-uppercase .default:n = { true } , + header-uppercase .initial:n = { false } , + header-font .tl_set:N = \l__sjtu_style_header_font_tl , + header-font .initial:n = \zihao { -5 } , + footer-font .tl_set:N = \l__sjtu_style_footer_font_tl , + footer-font .initial:n = \zihao { -5 } , + page-number .cs_set:Np = \__sjtu_page:n #1 , + page-number .initial:n = { {#1} } + } +\keys_define:nn { sjtu / name } + { + contents .tl_set:N = \contentsname , + listfigure .tl_set:N = \listfigurename , + listtable .tl_set:N = \listtablename , + figure .tl_set:N = \figurename , + table .tl_set:N = \tablename , + index .tl_set:N = \indexname , + appendix .tl_set:N = \appendixname , + proof .tl_set:N = \proofname , + bib .tl_set:N = \bibname , + figure* .tl_set:N = \l__sjtu_name_figure_aux_tl , + figure* .initial:n = { 图 } , + table* .tl_set:N = \l__sjtu_name_table_aux_tl , + table* .initial:n = { 表 } , + algorithm .tl_set:N = \l__sjtu_name_algorithm_tl , + algorithm .initial:n = { Algorithm } , + listalgorithm .tl_set:N = \l__sjtu_name_listalgorithm_tl , + listalgorithm .initial:n = { List~of~Algorithms } , + abbr .tl_set:N = \l__sjtu_name_abbr_tl , + abbr .initial:n = { Abbreviations } , + nom .tl_set:N = \l__sjtu_name_nom_tl , + nom .initial:n = { Nomenclature } , + summary .tl_set:N = \l__sjtu_name_summary_tl , + summary .initial:n = { Summary } , + ack .tl_set:N = \l__sjtu_name_ack_tl , + ack .initial:n = { Acknowledgements } , + resume .tl_set:N = \l__sjtu_name_resume_tl , + resume .initial:n = { Resume } , + digest .tl_set:N = \l__sjtu_name_digest_tl , + digest .initial:n = { Digest } , + achv .tl_set:N = \l__sjtu_name_achv_tl , + achv .initial:n = { List~of~Research~Achievements }, + } +\file_input:n { sjtu-lang-thesis- \g__sjtu_lang_tl .cfg } +\cs_new_protected:Npn \__sjtu_fontset_error:nn #1#2 + { \msg_error:nnnn { sjtutex } { font-unavailable } {#1} {#2} } +\msg_new:nnn { sjtutex } { font-unavailable } + { `#1-font~ =~ #2'~ is~ unavailable~ in~ current~ mode. } +\cs_new_eq:NN \__sjtu_fontset_case:nn \__sjtu_engine_case:nn +\cs_new:Npx \__sjtu_fontset_case:nnn #1#2#3 + { + \__sjtu_engine_case:nn + { \sys_if_output_pdf:TF {#1} {#2} } + {#3} + } +\cs_new_protected:Nn \__sjtu_set_slanted_greek: + { + \clist_const:Nn \c__sjtu_uppercase_greek_clist + { Gamma, Delta, Theta, Lambda, Xi, Pi, Sigma, Upsilon, Phi, Psi, Omega } + \clist_map_inline:Nn \c__sjtu_uppercase_greek_clist + { + \cs_set_eq:cc { up ##1 } { ##1 } + \cs_set_eq:cc { it ##1 } { var ##1 } + } + \int_compare:nNnT { \g__sjtu_math_style_int } > { 1 } + { + \clist_map_inline:Nn \c__sjtu_uppercase_greek_clist + { \cs_set_eq:cc { ##1 } { it ##1 } } + } + } +\cs_new_protected:Nn \__sjtu_set_unimath_symbol: + { + \cs_set_eq:NN \increment \upDelta + \cs_set_eq:NN \QED \blacksquare + } +\tl_if_empty:NT \g__sjtu_math_font_tl + { \tl_gset_eq:NN \g__sjtu_math_font_tl \g__sjtu_text_font_tl } +\tl_if_empty:NT \g__sjtu_cjk_font_tl + { + \sys_if_platform_windows:TF + { \tl_gset:Nn \g__sjtu_cjk_font_tl { windows } } + { + \ctex_if_platform_macos:TF + { \tl_gset:Nn \g__sjtu_cjk_font_tl { mac } } + { \tl_gset:Nn \g__sjtu_cjk_font_tl { fandol } } + } + } +\cs_new_protected:Npn \__sjtu_load_font:nn #1#2 + { + \str_if_eq:eeF { \tl_use:c { g__sjtu_ #1 _font_tl } } { none } + { + \file_if_exist:nF + { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } + { + \msg_warning:nnnn { sjtutex } { invalid-font } {#1} {#2} + \tl_gset:cn { g__sjtu_ #1 _font_tl } {#2} + } + \ctex_file_input:n + { sjtu- #1 -font- \tl_use:c { g__sjtu_ #1 _font_tl } .def } + } + } +\msg_new:nnn { sjtutex } { invalid-font } + { + Invalid~ value~ `#1-font~ =~ \tl_use:c { g__sjtu_ #1 _font_tl }~ '! \\\\ + Using~ `#2'~ instead. + } +\cs_new_protected:Nn \__sjtu_load_fontset: + { + \clist_map_inline:nn + { + { math } { newtx }, + { text } { newtx }, + { cjk } { fandol } + } + { \__sjtu_load_font:nn ##1 } + } +\@onlypreamble \__sjtu_load_font:nn +\@onlypreamble \__sjtu_load_fontset: +\__sjtu_load_fontset: +\ctex_at_end_package:nn { unicode-math } + { + \DeclareDocumentCommand \bm { m } + { { \symbf {#1} } } + \DeclareDocumentCommand \boldsymbol { m } + { { \symbf {#1} } } + \int_compare:nNnTF { \g__sjtu_math_style_int } > { 1 } + { \keys_set:nn { unicode-math } { math-style = ISO } } + { \keys_set:nn { unicode-math } { math-style = TeX } } + } +\__sjtu_unicode_engine_case:nn + { + \xeCJK_declare_char_class:nn { CJK } + { "24EA, "2460->"2473, "3251->"32BF, "25A1 } + } + { + \ltjdefcharrange { 99 } + { "24EA, "2460-"2473, "3251-"32BF, "25A1 } + \ltjsetparameter { jacharrange = { +99 } } + } +\geometry + { + paper = a4paper, + top = 3.5 cm, + bottom = 4.0 cm, + left = 2.5 cm, + right = 2.5 cm, + bindingoffset = 0.5 cm, + headheight = 1.5 cm, + headsep = 0.5 cm, + footskip = 1.0 cm + } +\pagestyle { fancy } +\cs_new:Nn \__sjtu_thepage: { \thepage } +\fancyhf { } +\bool_if:NTF \g__sjtu_twoside_bool + { + \fancyhead [ RE, LO ] + { \l__sjtu_style_header_font_tl \l__sjtu_info_subject_zh_tl } + \fancyhead [ RO, LE ] + { \l__sjtu_style_header_font_tl \__sjtu_nouppercase:n { \leftmark } } + } + { + \fancyhead [ L ] + { \l__sjtu_style_header_font_tl \l__sjtu_info_subject_zh_tl } + \fancyhead [ R ] + { + \l__sjtu_style_header_font_tl + \__sjtu_nouppercase:n { \leftmark } + } + } +\fancyfoot [ C ] + { + \l__sjtu_style_footer_font_tl + \__sjtu_page:n { \__sjtu_thepage: } + } +\cs_set:Npn \headrule + { + \hrule height 2.25 pt width \headwidth + \skip_vertical:n { 0.75 pt } + \hrule height 0.75 pt width \headwidth + \skip_vertical:n { -3.75 pt } + } +\cs_new_eq:NN \ps@SJTU@null \prg_do_nothing: +\clist_map_inline:nn + { zh, en } + { + \cs_new:cpn { ps@SJTU@fund@ #1 } + { + \ps@empty + \cs_set:Npn \@oddfoot + { + \begin{minipage} { \textwidth } + \centering \zihao { - 5 } + \clist_use:cn { l__sjtu_info_fund_ #1 _clist } { \par } + \end{minipage} + } + \cs_set_eq:NN \@evenfoot \@oddfoot + } + } +\RenewDocumentCommand \cleardoublepage { } + { + \clearpage + \bool_if:NT \g__sjtu_twoside_bool + { + \int_if_odd:nF \c@page + { \hbox:n { } \thispagestyle { empty } \newpage } + } + } +\pagenumbering { Alph } +\RenewDocumentCommand \frontmatter { } + { + \cleardoublepage + \@mainmatterfalse + \pagenumbering { Roman } + } +\ctex_set:nn { chapter } + { + pagestyle = SJTU@null , + fixskip = true , + beforeskip = 24 bp , + afterskip = 18 bp , + lofskip = \c_zero_skip , + lotskip = \c_zero_skip , + format = \zihao { 3 } \bfseries \heiti \centering , + nameformat = , + titleformat = , + aftername = \quad , + afterindent = true + } +\ctex_set:nn { section } + { + beforeskip = 24 bp , + afterskip = 6 bp , + format = \zihao { 4 } \bfseries \heiti , + afterindent = true + } +\ctex_set:nn { subsection } + { + beforeskip = 12 bp , + afterskip = 6 bp , + format = \zihao { -4 } \bfseries \heiti , + afterindent = true + } +\ctex_set:nn { subsubsection } + { + beforeskip = 6 bp , + afterskip = 6 bp , + format = \zihao { -4 } \normalfont , + afterindent = true + } +\ctex_set:nn { paragraph } + { afterindent = true } +\ctex_set:nn { subparagraph } + { afterindent = true } +\ctex_set:n { secnumdepth = 3 } +\NewDocumentCommand \SJTU@head { s O{#3} m O{#2} } + { + \CTEX@chapter@break + \IfBooleanTF {#1} + { \tl_if_empty:nF {#4} { \__sjtu_pdf_bookmark:nn { 0 } {#4} } } + { + \__sjtu_phantom_section: + \addcontentsline { toc } { chapter } {#4} + } + \cs_set_eq:NN \__sjtu_orig_ctex_gettitle:n \CTEX@gettitle + \cs_set:Npn \CTEX@gettitle ##1 { \__sjtu_orig_ctex_gettitle:n {#2} } + \chapter* {#3} + \cs_set_eq:NN \CTEX@gettitle \__sjtu_orig_ctex_gettitle:n + \@mkboth { \MakeUppercase {#2} } { \MakeUppercase {#2} } + } +\cs_new:Npn \__sjtu_head_aux:n #1 + { \SJTU@head {#1} } +\cs_new:Npn \__sjtu_head_aux_s:n #1 + { \SJTU@head* {#1} } +\cs_new:Npn \__sjtu_head_auxa_s:nn #1#2 + { \SJTU@head* {#1} [#2] } +\cs_new:Npn \__sjtu_head_auxb_s:nn #1#2 + { \SJTU@head* [#1] {#2} } +\cs_generate_variant:Nn \__sjtu_head_aux:n { V } +\cs_generate_variant:Nn \__sjtu_head_aux_s:n { V } +\cs_generate_variant:Nn \__sjtu_head_auxa_s:nn { Vn, VV } +\cs_generate_variant:Nn \__sjtu_head_auxb_s:nn { Vo } +\cs_new_eq:NN \__sjtu_pdf_bookmark:nn \use_none:nn +\cs_new_eq:NN \__sjtu_phantom_section: \prg_do_nothing: +\ctex_if_autoindent_touched:F + { \ctex_set:n { autoindent = true } } +\ctex_patch_cmd:Nnn \verse { -1.5em } { -2 \ccwd } +\ctex_patch_cmd:Nnn \verse { 1.5em } { 2 \ccwd } +\ctex_patch_cmd:Nnn \quotation { 1.5em } { 2 \ccwd } +\setlist { nosep } +\tl_set:Nn \textfraction { 0.15 } +\tl_set:Nn \topfraction { 0.85 } +\tl_set:Nn \bottomfraction { 0.65 } +\tl_set:Nn \floatpagefraction { 0.60 } +\ctex_patch_cmd:Nnn \@floatboxreset + { \normalsize } { \SJTU@style@float@font } +\DeclareCaptionLabelSeparator { enskip } { \enskip } +\captionsetup + { + labelsep = enskip , + justification = centering , + font = SJTU@font + } +\captionsetup [ sub ] + { + format = hang , + justification = justified , + font = SJTU@sub@font + } +\DeclareCaptionOption { aux-names } [ ] + { + \tl_set:Nn \figurename { \l__sjtu_name_figure_aux_tl } + \tl_set:Nn \tablename { \l__sjtu_name_table_aux_tl } + } +\captionsetup [ bi-second ] { aux-names } +\NewDocumentCommand \SJTUcounterwithin + { s O{ \l__sjtu_style_fl_num_sep_tl } O{ \arabic } m m } + { + \@ifbothcounters {#4} {#5} + { + \@addtoreset {#4} {#5} + \IfBooleanF {#1} + { + \cs_gset:cpo { the #4 } + { \cs:w the #5 \cs_end: #2 #3 {#4} } + } + } + } +\cs_set:Npn \thefigure + { \thechapter \l__sjtu_style_fl_num_sep_tl \arabic { figure } } +\cs_set:Npn \thetable + { \thechapter \l__sjtu_style_fl_num_sep_tl \arabic { table } } +\cs_set:Npn \theequation + { \thechapter \l__sjtu_style_eq_num_sep_tl \arabic { equation } } +\cs_new_protected:Nn \__sjtu_counter_without_chapter: + { + \counterwithout { section } { chapter } + \setcounter { section } { 0 } + \counterwithout { figure } { chapter } + \setcounter { figure } { 0 } + \counterwithout { table } { chapter } + \setcounter { table } { 0 } + } +\cs_new_protected:Nn \__sjtu_make_fnmark: + { \hbox:n { \@thefnmark } } +\ctex_at_end_preamble:n { + \cs_set_eq:NN \__sjtu_orig_make_fntext:n \@makefntext + \cs_set:Npn \@makefntext #1 + { + \group_begin: + \cs_set_eq:NN \@makefnmark \__sjtu_make_fnmark: + \__sjtu_orig_make_fntext:n {#1} + \group_end: + } +} +\cs_new:Npn \__sjtu_footnote_number:N #1 + { + \int_compare:nNnTF {#1} < { 21 } + { \__sjtu_unicode_char:n { \int_eval:n { "2460 - 1 + #1 } } } + { + \int_compare:nNnTF {#1} < { 36 } + { \__sjtu_unicode_char:n { \int_eval:n { "3251 - 21 + #1 } } } + { + \int_compare:nNnTF {#1} < { 51 } + { \__sjtu_unicode_char:n { \int_eval:n { "32B1 - 36 + #1 } } } + { \msg_warning:nn { sjtutex } { too-many-footnotes } } + } + } + } +\msg_new:nnn { sjtutex } { too-many-footnotes } + { Too~ many~ footnotes. } +\cs_set:Npn \thefootnote + { + \hbox:n { } + { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@footnote } + } +\cs_set:Npn \thempfootnote + { + \hbox:n { } + { \l__sjtu_style_fnmark_font_tl \__sjtu_footnote_number:N \c@mpfootnote } + } +\DeclareObjectType { sjtu } { 0 } +\DeclareTemplateInterface { sjtu } { component } { 0 } + { + format : tokenlist = \c_empty_tl , + content : tokenlist = \c_empty_tl , + bottom-skip : skip = \c_zero_skip , + align : choice { left, right, center, normal } = center + } +\DeclareTemplateCode { sjtu } { component } { 0 } + { + format = \l__sjtu_component_format_tl , + content = \l__sjtu_component_content_tl , + bottom-skip = \l__sjtu_component_bottom_skip , + align = + { + left = + \cs_set_eq:NN \l__sjtu_component_align: \raggedright , + right = + \cs_set_eq:NN \l__sjtu_component_align: \raggedleft , + center = + \cs_set_eq:NN \l__sjtu_component_align: \centering , + normal = + \cs_set_eq:NN \l__sjtu_component_align: \prg_do_nothing: + } + } + { + \AssignTemplateKeys + \group_begin: + \l__sjtu_component_align: + \l__sjtu_component_format_tl + \l__sjtu_component_content_tl + \par + \group_end: + \__sjtu_vspace:N \l__sjtu_component_bottom_skip + } +\DeclareTemplateInterface { sjtu } { page } { 0 } + { + bookmark : boolean = false , + bookmark-text : tokenlist = \c_empty_tl , + style : tokenlist = empty , + format : tokenlist = \linespread { 1 } \selectfont , + prefix : tokenlist , + components : commalist , + top-skip : skip = \c_zero_skip , + bottom-skip : skip = \c_zero_skip + } +\DeclareTemplateCode { sjtu } { page } { 0 } + { + bookmark = \l__sjtu_page_bookmark_bool , + bookmark-text = \l__sjtu_page_bookmark_text_tl , + style = \l__sjtu_page_style_tl , + format = \l__sjtu_page_format_tl , + prefix = \l__sjtu_page_prefix_tl , + components = \l__sjtu_page_components_clist , + top-skip = \l__sjtu_page_top_skip , + bottom-skip = \l__sjtu_page_bottom_skip + } + { + \AssignTemplateKeys + \bool_if:NTF \g__sjtu_openright_bool + { \cleardoublepage } { \clearpage } + \bool_if:NT \l__sjtu_page_bookmark_bool + { \__sjtu_pdf_bookmark:nn { 0 } { \l__sjtu_page_bookmark_text_tl } } + \exp_args:No \thispagestyle { \l__sjtu_page_style_tl } + \__sjtu_vspace_r:N \l__sjtu_page_top_skip + \__sjtu_vspace:n { - \tex_parskip:D } + \__sjtu_vspace:n { - \tex_baselineskip:D } + \group_begin: + \l__sjtu_page_format_tl + \clist_map_inline:Nn \l__sjtu_page_components_clist + { \UseInstance { sjtu } { \l__sjtu_page_prefix_tl / ##1 } } + \group_end: + \__sjtu_vspace:N \l__sjtu_page_bottom_skip + \clearpage + } +\cs_new:Npn \__sjtu_declare_component:nnn #1#2#3 + { \DeclareInstance { sjtu } {#1/#2} { component } {#3} } +\cs_new:Npn \__sjtu_declare_page:nn #1#2 + { \DeclareInstance { sjtu } {#1} { page } {#2} } +\cs_new:Npn \__sjtu_title_page_info:nnn #1#2#3 + { + \group_begin: + \cs_set:Npn \l__sjtu_info_output_format:NNN ##1##2##3 {#3} + \clist_clear:N \l__sjtu_tmpa_clist + \clist_clear:N \l__sjtu_tmpb_clist + \dim_set:Nn \l__sjtu_tmpb_dim { 5 em } + \clist_map_inline:nn {#2} + { + \clist_put_right:No \l__sjtu_tmpa_clist + { \cs:w c__sjtu_name_ ##1 _ #1 _tl \cs_end: } + \clist_put_right:No \l__sjtu_tmpb_clist + { \cs:w l__sjtu_info_ ##1 _ #1 _tl \cs_end: } + \__sjtu_dim_set_to_wd:Nv \l__sjtu_tmpa_dim { l__sjtu_info_ ##1 _ #1 _tl } + \dim_set:Nn \l__sjtu_tmpb_dim + { \dim_max:nn { \l__sjtu_tmpa_dim } { \l__sjtu_tmpb_dim } } + } + \bool_until_do:nn + { \clist_if_empty_p:N \l__sjtu_tmpa_clist } + { + \clist_pop:NN \l__sjtu_tmpa_clist \l__sjtu_tmpa_tl + \clist_pop:NN \l__sjtu_tmpb_clist \l__sjtu_tmpb_tl + \l__sjtu_info_output_format:NNN + \l__sjtu_tmpa_tl \l__sjtu_tmpb_dim \l__sjtu_tmpb_tl + \skip_vertical:N \c_zero_dim + } + \group_end: + } +\cs_generate_variant:Nn \__sjtu_title_page_info:nnn { nxn } +\clist_map_inline:nn + { + { logo } + { + content = + { + \includegraphics [ width = 3 cm ] + { sjtu-vi-badge- \l__sjtu_style_title_logo_color_tl .pdf } + } + }, + { subject } + { + format = \zihao { -2 } \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_subject_zh_tl , + bottom-skip = \c_zero_dim plus 2 fill + }, + { title } + { + format = \zihao { 2 } \bfseries \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_display_title_zh_tl , + bottom-skip = \c_zero_dim plus 3 fill + }, + { info } + { + format = \zihao { 4 } \fixedlineskip { 31.2 bp } , + content = + { + \__sjtu_title_page_info:nxn { zh } + { + author, + id, + supervisor, + \tl_if_empty:NF \l__sjtu_info_assoc_supervisor_zh_tl + { assoc_supervisor }, + \tl_if_empty:NF \l__sjtu_info_co_supervisor_zh_tl + { co_supervisor }, + department, + major, + \int_compare:nNnF { \g__sjtu_thesis_type_int } = { 1 } + { degree } + } + { + \__sjtu_cjk_spread_box:nn { 5 em } { \heiti #1 } + \c__sjtu_name_info_sep_zh_tl + \__sjtu_left_aligned_box:nn {#2} {#3} + } + } , + bottom-skip = 31.2 bp + }, + { date } + { + format = \zihao { 4 } \bfseries \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_date_zh_tl + } + } + { + \__sjtu_declare_component:nnn { title / zh } #1 + } +\__sjtu_declare_page:nn { title / zh } + { + bookmark = true , + bookmark-text = \c__sjtu_name_title_page_tl , + style = SJTU@fund@zh , + prefix = title / zh , + components = { logo, subject, title, info, date } + } +\clist_map_inline:nn + { + { subject } + { + format = \zihao { 4 } \bfseries \fixedlineskip { 31.2 bp } , + content = \l__sjtu_info_subject_en_tl , + bottom-skip = \c_zero_dim plus 2 fill + }, + { title } + { + format = \zihao { -2 } \bfseries \fixedlineskip { 31.2 bp } , + content = \MakeUppercase \l__sjtu_info_display_title_en_tl , + bottom-skip = \c_zero_dim plus 2 fill + }, + { info } + { + format = \zihao { 3 } \fixedlineskip { 31.2 bp } , + content = + { + \__sjtu_title_page_info:nxn { en } + { + author, supervisor, + \tl_if_empty:NF \l__sjtu_info_assoc_supervisor_en_tl + { assoc_supervisor }, + \tl_if_empty:NF \l__sjtu_info_co_supervisor_en_tl + { co_supervisor } + } + { { \bfseries #1 \c__sjtu_name_info_sep_en_tl } {#3} } + } , + bottom-skip = \c_zero_dim plus 3 fill + }, + { date } + { + format = \zihao { 3 } \fixedlineskip { 31.2 bp } , + content = + { + \l__sjtu_info_department_en_tl + \skip_vertical:N \c_zero_skip + \c__sjtu_name_univ_en_tl + \skip_vertical:N \c_zero_skip + \c__sjtu_name_address_en_tl + \skip_vertical:N \c_zero_skip + \l__sjtu_info_date_en_tl + } + }, + } + { + \__sjtu_declare_component:nnn { title / en } #1 + } +\__sjtu_declare_page:nn { title / en } + { + style = SJTU@fund@en , + prefix = title / en , + components = { subject, title, info, date } + } +\RenewDocumentCommand \maketitle { } + { + \UseInstance { sjtu } { title / zh } + \UseInstance { sjtu } { title / en } + } +\cs_new_protected:Npn \__sjtu_signature:N #1 + { + \parbox [ t ] { 12 em } + { #1 \c__sjtu_signature_text_zh_tl } + } +\clist_map_inline:nn + { + { orig / title } + { + format = \zihao { 3 } \heiti \fixedlineskip { 31.2 bp } , + content = + { + \c__sjtu_name_univ_zh_tl + \skip_vertical:N \c_zero_skip + \c__sjtu_name_thesis_zh_tl + \c__sjtu_name_orig_decl_zh_tl + } , + bottom-skip = 15.6 bp + }, + { orig / text } + { + format = \zihao { -4 } \fixedlineskip { 23.4 bp } , + content = \c__sjtu_orig_decl_text_zh_tl , + bottom-skip = 15.6 bp , + align = normal + }, + { orig / sign } + { + format = \zihao { 4 } \fixedlineskip { 31.2 bp } , + content = + { + \__sjtu_signature:N \c__sjtu_name_decl_author_zh_tl + \skip_horizontal:n { 4 em } \hbox:n { } + } , + bottom-skip = \c_zero_dim plus 2 fill , + align = right + }, + { auth / title } + { + format = \zihao { 3 } \heiti \fixedlineskip { 31.2 bp } , + content = + { + \c__sjtu_name_univ_zh_tl + \skip_vertical:N \c_zero_skip + \c__sjtu_name_thesis_zh_tl + \c__sjtu_name_auth_decl_zh_tl + } , + bottom-skip = 15.6 bp + }, + { auth / text } + { + format = \zihao { -4 } \fixedlineskip { 23.4 bp } , + content = \c__sjtu_auth_decl_text_zh_tl , + bottom-skip = 15.6 bp , + align = normal + }, + { auth / sign } + { + format = \zihao { 4 } \fixedlineskip { 31.2 bp } , + content = + { + \__sjtu_signature:N \c__sjtu_name_decl_author_zh_tl + \hfill + \__sjtu_signature:N \c__sjtu_name_decl_supervisor_zh_tl + } , + bottom-skip = \c_zero_dim plus 1 fill , + align = normal + } + } + { + \__sjtu_declare_component:nnn { copyright } #1 + } +\__sjtu_declare_page:nn { copyright } + { + bookmark = true , + bookmark-text = \c__sjtu_name_decl_tl , + prefix = copyright , + components = + { + orig / title, orig / text, orig / sign, + auth / title, auth / text, auth / sign + } + } +\msg_new:nnn { sjtutex } { require-pdfpages } + { + Add~"\token_to_str:N \usepackage{pdfpages}"~ in~ your~ preamble \\ + before~ inserting~ pages~ of~ external~ PDF. + } +\NewDocumentCommand \copyrightpage { O{ } } + { + \bool_if:NF \g__sjtu_review_bool + { + \tl_if_blank:nTF {#1} + { \UseInstance { sjtu } { copyright } } + { + \cs_if_exist:NTF \includepdf + { + \__sjtu_pdf_bookmark:nn { 0 } { \c__sjtu_name_decl_tl } + \includepdf {#1} + } + { + \msg_warning:nn { sjtutex } { require-pdfpages } + \UseInstance { sjtu } { copyright } + } + } + } + } +\cs_new:Nn \__sjtu_output_keywords:Nnn + { + \clist_if_empty:NF #1 + { + \par \mode_leave_vertical: \par \noindent + { \bfseries #2 } \clist_use:Nn #1 {#3} + } + } +\DeclareDocumentEnvironment { abstract } { } + { \__sjtu_head_auxa_s:VV \c__sjtu_name_abstract_zh_tl \c__sjtu_name_abstract_tl } + { + \__sjtu_output_keywords:Nnn \l__sjtu_info_keywords_zh_clist + { \c__sjtu_name_keywords_zh_tl } { \c__sjtu_name_item_sep_zh_tl } + } +\DeclareDocumentEnvironment { abstract* } { } + { \__sjtu_head_auxa_s:Vn \c__sjtu_name_abstract_en_tl { } } + { + \__sjtu_output_keywords:Nnn \l__sjtu_info_keywords_en_clist + { \c__sjtu_name_keywords_en_tl } { \c__sjtu_name_item_sep_en_tl } + } +\DeclareDocumentCommand \tableofcontents { } + { + \__sjtu_head_aux_s:n { \contentsname } + \@starttoc { toc } + } +\NewDocumentCommand \SJTU@listof { m m s } + { + \IfBooleanTF {#3} + { \__sjtu_head_aux_s:n {#1} } + { \__sjtu_head_aux:n {#1} } + \exp_args:Nv \@starttoc { ext@ #2 } + } +\DeclareDocumentCommand \listoffigures { } + { \SJTU@listof { \listfigurename } { figure } } +\DeclareDocumentCommand \listoftables { } + { \SJTU@listof { \listtablename } { table } } +\tl_set:Nn \cftdotsep { 1 } +\tl_set:Nn \cftchapleader { \normalfont \cftdotfill { \cftdotsep } } +\cs_new_protected:Nn \__sjtu_update_cft_presnum: + { + \tl_set:Nn \cftfigpresnum { \figurename \c_space_tl } + \__sjtu_dim_add_to_wd:Nn \cftfignumwidth { \cftfigpresnum } + \tl_set:Nn \cfttabpresnum { \tablename \c_space_tl } + \__sjtu_dim_add_to_wd:Nn \cfttabnumwidth { \cftfigpresnum } + } +\ctex_at_end_preamble:n + { \__sjtu_update_cft_presnum: } +\NewDocumentEnvironment { abbreviation } { } + { \__sjtu_head_aux:V \l__sjtu_name_abbr_tl } { } +\NewDocumentEnvironment { abbreviation* } { } + { \__sjtu_head_aux_s:V \l__sjtu_name_abbr_tl } { } +\NewDocumentEnvironment { nomenclature } { } + { \__sjtu_head_aux:V \l__sjtu_name_nom_tl } { } +\NewDocumentEnvironment { nomenclature* } { } + { \__sjtu_head_aux_s:V \l__sjtu_name_nom_tl } { } +\NewDocumentEnvironment { summary } { } + { \__sjtu_head_aux:V \l__sjtu_name_summary_tl } { } +\NewDocumentEnvironment { acknowledgements } { +b } + { + \bool_if:NF \g__sjtu_review_bool + { + \__sjtu_head_aux:V \l__sjtu_name_ack_tl + #1 + } + } { } +\newcounter { SJTU@bib } +\NewDocumentEnvironment { @bibliolist } { m } + { + \cs_if_exist_use:N \bibfont + \list + { \@biblabel { \arabic{ SJTU@bib } } } + { + \__sjtu_dim_set_to_wd:Nn \labelwidth { \@biblabel {#1} } + \dim_set_eq:NN \leftmargin \labelwidth + \dim_add:Nn \leftmargin { \labelsep } + \dim_if_exist:NTF \bibitemsep + { + \dim_set_eq:NN \itemsep \bibitemsep + \dim_if_exist:NT \bibparsep + { \dim_set_eq:NN \parsep \bibparsep } + } + { + \dim_if_exist:NT \bibsep + { + \dim_set_eq:NN \itemsep \bibsep + \dim_zero:N \parsep + } + } + \@nmbrlisttrue + \tl_set:Nn \@listctr { SJTU@bib } + \cs_set:Npn \p@SJTU@bib { } + \cs_set:Npn \theSJTU@bib { \arabic { SJTU@bib } } + } + \sloppy + \int_set:Nn \clubpenalty { 4000 } + \int_set_eq:NN \@clubpenalty \clubpenalty + \int_set:Nn \widowpenalty { 4000 } + \char_set_sfcode:nn { `\. } { 1000 } + } + { + \cs_set:Npn \@noitemerr + { \msg_warning:nnn { sjtutex } { empty-environment } { bibliolist } } + \endlist + } +\msg_new:nnn { sjtutex } { empty-environment } + { Empty~ `#1'~ environment. } +\NewDocumentEnvironment { achievements } { } + { \__sjtu_head_aux:V \l__sjtu_name_achv_tl } { } +\NewDocumentEnvironment { bibliolist } { m +b } + { + \bool_if:NF \g__sjtu_review_bool + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } + } { } +\NewDocumentEnvironment { bibliolist* } { m +b } + { + \bool_if:NT \g__sjtu_review_bool + { + \cs_set:Npn \@noitemerr { } + \begin { @bibliolist } {#1} + #2 + \end { @bibliolist } + } + } { } +\NewDocumentEnvironment { resume } { +b } + { + \bool_if:NF \g__sjtu_review_bool + { + \__sjtu_head_aux:V \l__sjtu_name_resume_tl + #1 + } + } { } +\NewDocumentEnvironment { digest } { +b } + { + \AtEndDocument + { + \bool_if:NTF \g__sjtu_openright_bool + { \cleardoublepage } { \clearpage } + \pagenumbering { roman } + \cs_gset:Nn \__sjtu_thepage: { \arabic { page } } + \cs_gset_eq:NN \addcontentsline \use_none:nnn + \__sjtu_counter_without_chapter: + \__sjtu_head_auxb_s:Vo \l__sjtu_name_digest_tl + { \exp_args:NV \MakeUppercase \l__sjtu_info_title_aux_tl } + #1 + } + } { } +\ctex_at_end_package:nn { hyperref } + { + \hypersetup + { + linktoc = all, + bookmarksdepth = 2, + bookmarksnumbered = true, + bookmarksopen = true, + bookmarksopenlevel = 1, + unicode = true, + psdextra = true, + breaklinks = true, + pdfdisplaydoctitle = true + } + \int_new:N \g__sjtu_bookmark_int + \cs_gset_protected:Npn \__sjtu_pdf_bookmark:nn #1#2 + { + \phantomsection + \int_gincr:N \g__sjtu_bookmark_int + \pdfbookmark [#1] {#2} + { sjtubookmark. \int_use:N \g__sjtu_bookmark_int } + } + \cs_gset_eq:NN \__sjtu_phantom_section: \phantomsection + \pdfstringdefDisableCommands + { + \cs_set_eq:NN \\ \prg_do_nothing: + \cs_set_eq:NN \quad \c_empty_tl + \cs_set_eq:NN \qquad \c_empty_tl + \cs_set_eq:NN \hspace \use_none:n + } + \ctex_after_end_preamble:n + { + \hypersetup + { + pdftitle = \l__sjtu_info_title_zh_tl, + pdfsubject = \l__sjtu_info_subject_zh_tl, + pdfkeywords = \l__sjtu_info_keywords_zh_clist, + pdfauthor = \l__sjtu_info_author_zh_tl + } + } + } +\ctex_at_end_package:nn { threeparttable } + { \tl_put_right:Nn \TPTnoteSettings { \footnotesize } } +\ctex_at_end_package:nn { longtable } + { \AtBeginEnvironment { longtable } { \SJTU@style@float@font } } +\cs_new_protected:Nn \__sjtu_new_theorems: + { + \clist_map_inline:nn + { + assumption, axiom, conjecture, corollary, definition, example, + exercise, lemma, problem, proposition, theorem + } + { \exp_args:Nnv \newtheorem {##1} { c__sjtu_name_ ##1 _tl } [ chapter ] } + \clist_map_inline:nn + { remark, solution } + { \exp_args:NNnv \newtheorem* {##1} { c__sjtu_name_ ##1 _tl } } + } +\ctex_at_begin_package:nn { amsthm } + { + \cs_if_exist:NT \openbox + { + \cs_new_eq:NN \__sjtu_save_openbox: \openbox + \cs_undefine:N \openbox + } + } +\ctex_at_end_package:nn { amsthm } + { + \cs_if_exist:NT \__sjtu_save_openbox: + { \cs_set_eq:NN \openbox \__sjtu_save_openbox: } + \tl_set:Nn \qedsymbol { \ensuremath { \QED } } + \RenewDocumentEnvironment { proof } { O{ \proofname } } + { + \par \pushQED { \qed } + \normalfont \dim_zero:N \topsep + \trivlist + \item + [ + \skip_horizontal:N \labelsep + \bfseries \heiti #1 \@addpunct { \enskip } + ] + \ignorespaces + } + { \popQED \endtrivlist \legacy_if_set_false:n { @endpe } } + \newtheoremstyle { sjtu } + { } { } { \normalfont } { } { \bfseries \heiti } { } { \ccwd } { } + \theoremstyle { sjtu } + \__sjtu_new_theorems: + } +\ctex_at_end_package:nn { ntheorem } + { + \theoremheaderfont { \bfseries \heiti } + \theorembodyfont { \normalfont } + \theoremseparator { \enskip } + \theoremsymbol { \ensuremath { \QED } } + \qedsymbol { \ensuremath { \QED } } + \newtheorem* { proof } { \proofname } + \theoremsymbol { } + \__sjtu_new_theorems: + } +\cs_new_protected:Npn \__sjtu_newlistof:nnnnn #1#2#3#4#5 + { + \exp_args:Nnv \newlistentry {#2} { ext@ #3 } { 0 } + \exp_args:Ne \newcounter { \tl_use:c { ext@ #3 } depth } + \exp_args:Ne \setcounter { \tl_use:c { ext@ #3 } depth } { 1 } + \dim_set:cn { cft #2 indent } { 1.5 em } + \dim_set:cn { cft #2 numwidth } { 2.3 em } + \cs_set_eq:cc { l@ #3 } { l@ #2 } + \__sjtu_appto_cmd:Nn \__sjtu_update_cft_presnum: + { + \tl_set:cn { cft #2 presnum } { #4 \c_space_tl } + \__sjtu_dim_add_to_wd:cv { cft #2 numwidth } { cft #2 presnum } + } + \exp_args:Nc \DeclareDocumentCommand { listof #1 s } { } + { \SJTU@listof {#5} {#3} } + \cs_set:cpn { the #3 } + { \thechapter \l__sjtu_style_fl_num_sep_tl \arabic {#3} } + \__sjtu_appto_cmd:Nn \__sjtu_counter_without_chapter: + { + \counterwithout {#3} { chapter } + \setcounter {#3} { 0 } + } + } +\ctex_at_end_package:nn { algorithm } + { + \tl_set:Nn \fname@algorithm { \l__sjtu_name_algorithm_tl } + \tl_set:Nn \listalgorithmname { \l__sjtu_name_listalgorithm_tl } + \__sjtu_newlistof:nnnnn { algorithm } { alg } { algorithm } + { \fname@algorithm } { \listalgorithmname } + } +\ctex_at_begin_package:nn { algorithm2e } + { \cs_set_eq:NN \__sjtu_save_chapter:w \@chapter } +\ctex_at_end_package:nn { algorithm2e } + { + \cs_set_eq:NN \@chapter \__sjtu_save_chapter:w + \SetAlgorithmName { \l__sjtu_name_algorithm_tl } + { \l__sjtu_name_algorithm_tl } + { \l__sjtu_name_listalgorithm_tl } + \SetAlgoCaptionSeparator { \enskip } + \__sjtu_newlistof:nnnnn { algorithm } { alg } { algocf } + { \algorithmcfname } { \listalgorithmcfname } + \ctex_patch_cmd:Nnn \algocf@latexcaption + { \addcontentsline } + { \caption@iflist { \addcontentsline } { \@gobblethree } } + } +\ctex_at_end_package:nn { listings } + { + \lstdefinestyle { lstStyleCode } + { + aboveskip = \medskipamount , + belowskip = \medskipamount , + basicstyle = \ttfamily \zihao { 6 } , + commentstyle = \slshape \color { black!60 } , + stringstyle = \color { green!40!black!100 } , + keywordstyle = \bfseries \color { blue!50!black } , + extendedchars = false , + upquote = true , + tabsize = 2 , + showstringspaces = false , + xleftmargin = 1 em , + xrightmargin = 1 em , + breaklines = false , + framexleftmargin = 1 em , + framexrightmargin = 1 em , + backgroundcolor = \color { gray!10 } , + columns = flexible , + keepspaces = true , + texcl = true , + mathescape = true + } + } +\ctex_at_end_package:nn { nomencl } + { \tl_set:Nn \nomname { \l__sjtu_name_nom_tl } } +\endinput +%% +%% End of file `sjtuthesis.cls'. diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-badge-black.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-badge-black.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-badge-black.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-badge-black.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-badge-blue.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-badge-blue.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-badge-blue.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-badge-blue.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-badge-red.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-badge-red.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-badge-red.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-badge-red.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-logo-black.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-logo-black.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-logo-black.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-logo-black.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-logo-blue.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-logo-blue.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-logo-blue.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-logo-blue.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-logo-red.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-logo-red.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-logo-red.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-logo-red.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-name-black.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-name-black.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-name-black.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-name-black.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-name-blue.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-name-blue.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-name-blue.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-name-blue.pdf diff --git a/texmf/tex/latex/sjtuthesis/vi/sjtu-vi-name-red.pdf b/texmf/tex/latex/sjtutex/vi/sjtu-vi-name-red.pdf similarity index 100% rename from texmf/tex/latex/sjtuthesis/vi/sjtu-vi-name-red.pdf rename to texmf/tex/latex/sjtutex/vi/sjtu-vi-name-red.pdf diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-adobe.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-adobe.def deleted file mode 100644 index 320530bc..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-adobe.def +++ /dev/null @@ -1,45 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-adobe.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `cjkfont,adobe') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-cjk-font-adobe.def} - [2022/07/29 1.1.1 Adobe CJK fonts definition (SJTUThesis)] -\setCJKmainfont{AdobeSongStd-Light}[ - AutoFakeBold = 3, - ItalicFont = AdobeKaitiStd-Regular, -] -\setCJKsansfont{AdobeHeitiStd-Regular}[BoldFont=*] -\setCJKmonofont{AdobeFangsongStd-Regular} -\setCJKfamilyfont{zhsong}{AdobeSongStd-Light}[ - AutoFakeBold = 3, - ItalicFont = AdobeKaitiStd-Regular, -] -\setCJKfamilyfont{zhhei}{AdobeHeitiStd-Regular}[BoldFont=*] -\setCJKfamilyfont{zhfs}{AdobeFangsongStd-Regular} -\setCJKfamilyfont{zhkai}{AdobeKaitiStd-Regular} -\NewDocumentCommand\songti{}{\CJKfamily{zhsong}} -\NewDocumentCommand\heiti{}{\CJKfamily{zhhei}} -\NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}} -\NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}} -\endinput -%% -%% End of file `sjtu-cjk-font-adobe.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-fandol.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-fandol.def deleted file mode 100644 index ebf8975b..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-fandol.def +++ /dev/null @@ -1,65 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-fandol.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `cjkfont,fandol') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-cjk-font-fandol.def} - [2022/07/29 1.1.1 Fandol CJK fonts definition (SJTUThesis)] -\setCJKmainfont{FandolSong}[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = FandolKai-Regular, -] -\setCJKsansfont{FandolHei}[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Regular, -] -\setCJKmonofont{FandolFang}[ - Extension = .otf, - UprightFont = *-Regular, -] -\setCJKfamilyfont{zhsong}{FandolSong}[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, -] -\setCJKfamilyfont{zhhei}{FandolHei}[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Regular, -] -\setCJKfamilyfont{zhfs}{FandolFang}[ - Extension = .otf, - UprightFont = *-Regular, -] -\setCJKfamilyfont{zhkai}{FandolKai}[ - Extension = .otf, - UprightFont = *-Regular, -] -\NewDocumentCommand\songti{}{\CJKfamily{zhsong}} -\NewDocumentCommand\heiti{}{\CJKfamily{zhhei}} -\NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}} -\NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}} -\endinput -%% -%% End of file `sjtu-cjk-font-fandol.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-founder.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-founder.def deleted file mode 100644 index 4017c49b..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-founder.def +++ /dev/null @@ -1,45 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-founder.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `cjkfont,founder') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-cjk-font-founder.def} - [2022/07/29 1.1.1 Founder CJK fonts definition (SJTUThesis)] -\setCJKmainfont{FZShuSong-Z01}[ - AutoFakeBold = 3, - ItalicFont = FZKai-Z03, -] -\setCJKsansfont{FZHei-B01}[BoldFont=*] -\setCJKmonofont{FZFangSong-Z02} -\setCJKfamilyfont{zhsong}{FZShuSong-Z01}[ - AutoFakeBold = 3, - ItalicFont = FZKai-Z03, -] -\setCJKfamilyfont{zhhei}{FZHei-B01}[BoldFont=*] -\setCJKfamilyfont{zhkai}{FZKai-Z03} -\setCJKfamilyfont{zhfs}{FZFangSong-Z02} -\NewDocumentCommand\songti{}{\CJKfamily{zhsong}} -\NewDocumentCommand\heiti{}{\CJKfamily{zhhei}} -\NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}} -\NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}} -\endinput -%% -%% End of file `sjtu-cjk-font-founder.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-mac.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-mac.def deleted file mode 100644 index c2f803f8..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-mac.def +++ /dev/null @@ -1,56 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-mac.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `cjkfont,mac') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-cjk-font-mac.def} - [2022/07/29 1.1.1 macOS CJK fonts definition (SJTUThesis)] -\setCJKmainfont{Songti SC}[ - UprightFont = * Light, - BoldFont = * Bold, - ItalicFont = Kaiti SC Regular, - BoldItalicFont = Kaiti SC Bold, -] -\setCJKsansfont{Heiti SC}[ - UprightFont = * Medium, - BoldFont = * Medium, -]% -\setCJKmonofont{STFangsong} -\setCJKfamilyfont{zhsong}{Songti SC}[ - UprightFont = * Light, - BoldFont = * Bold, -] -\setCJKfamilyfont{zhhei}{Heiti SC}[ - UprightFont = * Medium, - BoldFont = * Medium, -] -\setCJKfamilyfont{zhfs}{STFangsong} -\setCJKfamilyfont{zhkai}{Kaiti SC}[ - UprightFont = * Regular, - BoldFont = * Bold, -] -\NewDocumentCommand\songti{}{\CJKfamily{zhsong}} -\NewDocumentCommand\heiti{}{\CJKfamily{zhhei}} -\NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}} -\NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}} -\endinput -%% -%% End of file `sjtu-cjk-font-mac.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-ubuntu.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-ubuntu.def deleted file mode 100644 index d0e6a8e9..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-ubuntu.def +++ /dev/null @@ -1,51 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-ubuntu.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `cjkfont,ubuntu') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-cjk-font-ubuntu.def} - [2022/07/29 1.1.1 Ubuntu CJK fonts definition (SJTUThesis)] -\setCJKmainfont{Noto Serif CJK SC}[ - UprightFont = * Light, - BoldFont = * Bold, - ItalicFont = AR PL UKai CN, -] -\setCJKsansfont{Noto Sans CJK SC}[ - UprightFont = * Medium, - BoldFont = * Medium, -] -\setCJKmonofont{Noto Sans Mono CJK SC} -\setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[ - UprightFont = * Light, - BoldFont = * Bold, - ItalicFont = AR PL UKai CN, -] -\setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[ - UprightFont = * Medium, - BoldFont = * Medium, -] -\setCJKfamilyfont{zhkai}{AR PL UKai CN} -\NewDocumentCommand\songti{}{\CJKfamily{zhsong}} -\NewDocumentCommand\heiti{}{\CJKfamily{zhhei}} -\NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}} -\endinput -%% -%% End of file `sjtu-cjk-font-ubuntu.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-windows.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-windows.def deleted file mode 100644 index ff5bcf31..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-cjk-font-windows.def +++ /dev/null @@ -1,45 +0,0 @@ -%% -%% This is file `sjtu-cjk-font-windows.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `cjkfont,windows') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-cjk-font-windows.def} - [2022/07/29 1.1.1 Windows CJK fonts definition (SJTUThesis)] -\setCJKmainfont{SimSun}[ - AutoFakeBold = 3, - ItalicFont = KaiTi, -] -\setCJKsansfont{SimHei}[BoldFont=*] -\setCJKmonofont{FangSong} -\setCJKfamilyfont{zhsong}{SimSun}[ - AutoFakeBold = 3, - ItalicFont = KaiTi, -] -\setCJKfamilyfont{zhhei}{SimHei}[BoldFont=*] -\setCJKfamilyfont{zhkai}{KaiTi} -\setCJKfamilyfont{zhfs}{FangSong} -\NewDocumentCommand\songti{}{\CJKfamily{zhsong}} -\NewDocumentCommand\heiti{}{\CJKfamily{zhhei}} -\NewDocumentCommand\fangsong{}{\CJKfamily{zhfs}} -\NewDocumentCommand\kaishu{}{\CJKfamily{zhkai}} -\endinput -%% -%% End of file `sjtu-cjk-font-windows.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-cambria.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-cambria.def deleted file mode 100644 index 4eabafd9..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-cambria.def +++ /dev/null @@ -1,33 +0,0 @@ -%% -%% This is file `sjtu-math-font-cambria.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `mathfont,cambria') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-math-font-cambria.def} - [2022/07/29 1.1.1 Cambria math fonts definition (SJTUThesis)] -\RequirePackage{unicode-math} -\setmathfont{Cambria Math} -\setmathrm{Cambria} -\setmathsf{Calibri} -\setmathtt{Consolas}[Scale=MatchLowercase] -\endinput -%% -%% End of file `sjtu-math-font-cambria.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-lm.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-lm.def deleted file mode 100644 index 1a96f624..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-lm.def +++ /dev/null @@ -1,41 +0,0 @@ -%% -%% This is file `sjtu-math-font-lm.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `mathfont,lm') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-math-font-lm.def} - [2022/07/29 1.1.1 Latin Modern math fonts definition (SJTUThesis)] -\RequirePackage{amssymb} -\RequirePackage{upgreek} -\let\sjtu@save@encodingdefault\encodingdefault -\let\sjtu@save@rmdefault\rmdefault -\let\sjtu@save@sfdefault\sfdefault -\let\sjtu@save@ttdefault\ttdefault -\def\encodingdefault{T1} -\RequirePackage{lmodern} -\RequirePackage{bm} -\let\encodingdefault\sjtu@save@encodingdefault -\let\rmdefault\sjtu@save@rmdefault -\let\sfdefault\sjtu@save@sfdefault -\let\ttdefault\sjtu@save@ttdefault -\endinput -%% -%% End of file `sjtu-math-font-lm.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newcm.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newcm.def deleted file mode 100644 index d53c50f5..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newcm.def +++ /dev/null @@ -1,84 +0,0 @@ -%% -%% This is file `sjtu-math-font-newcm.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `mathfont,newcm') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-math-font-newcm.def} - [2022/07/29 1.1.1 New Computer Modern math fonts definition (SJTUThesis)] -\RequirePackage{unicode-math} -\setmathfont[ - StylisticSet = 2 -]{NewCMMath-Book.otf} -\setmathfont[ - range = {scr, bfscr}, - StylisticSet = 1 -]{NewCMMath-Book.otf} -\setmathrm[ - Extension = .otf, - SizeFeatures = - { - { - Size = -9, - Font = NewCM08-Book, - ItalicFont = NewCM08-BookItalic, - SlantedFont = NewCM08-Book, - }, - { Size = 9- } - }, - UprightFont = *-Book, - BoldFont = *-Bold, - ItalicFont = *-BookItalic, - BoldItalicFont = *-BoldItalic, - SlantedFont = *-Book, - BoldSlantedFont = *-Bold, - SlantedFeatures = {FakeSlant=0.25}, - BoldSlantedFeatures = {FakeSlant=0.25} -]{NewCM10} -\setmathsf[ - Extension = .otf, - SizeFeatures = - { - { - Size = -9, - Font = NewCMSans08-Book, - ItalicFont = NewCMSans08-BookOblique, - }, - { Size = 9- } - }, - UprightFont = *-Book, - BoldFont = *-Bold, - ItalicFont = *-BookOblique, - BoldItalicFont = *-BoldOblique -]{NewCMSans10} -\setmathtt[ - Extension = .otf, - UprightFont = *-Book, - BoldFont = *-Bold, - ItalicFont = *-BookItalic, - BoldItalicFont = *-BoldOblique, - SlantedFont = *-Book, - SlantedFeatures = {FakeSlant = 0.25}, - BoldSlantedFont = *-Bold, - BoldSlantedFeatures = {FakeSlant = 0.25} -]{NewCMMono10} -\endinput -%% -%% End of file `sjtu-math-font-newcm.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newpx.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newpx.def deleted file mode 100644 index f5639a89..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newpx.def +++ /dev/null @@ -1,42 +0,0 @@ -%% -%% This is file `sjtu-math-font-newpx.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `mathfont,newpx') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-math-font-newpx.def} - [2022/07/29 1.1.1 NewPX math fonts definition (SJTUThesis)] -\let\sjtu@save@encodingdefault\encodingdefault -\let\sjtu@save@rmdefault\rmdefault -\let\sjtu@save@sfdefault\sfdefault -\let\sjtu@save@ttdefault\ttdefault -\def\encodingdefault{T1} -\def\rmdefault{zpltlf} -\def\sfdefault{qhv} -\def\ttdefault{ntxtt} -\RequirePackage[upint]{newpxmath} -\RequirePackage{bm} -\let\encodingdefault\sjtu@save@encodingdefault -\let\rmdefault\sjtu@save@rmdefault -\let\sfdefault\sjtu@save@sfdefault -\let\ttdefault\sjtu@save@ttdefault -\endinput -%% -%% End of file `sjtu-math-font-newpx.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newtx.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newtx.def deleted file mode 100644 index 2a05e4a1..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-newtx.def +++ /dev/null @@ -1,42 +0,0 @@ -%% -%% This is file `sjtu-math-font-newtx.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `mathfont,newtx') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-math-font-newtx.def} - [2022/07/29 1.1.1 NewTX math fonts definition (SJTUThesis)] -\let\sjtu@save@encodingdefault\encodingdefault -\let\sjtu@save@rmdefault\rmdefault -\let\sjtu@save@sfdefault\sfdefault -\let\sjtu@save@ttdefault\ttdefault -\def\encodingdefault{T1} -\def\rmdefault{ntxtlf} -\def\sfdefault{qhv} -\def\ttdefault{ntxtt} -\RequirePackage[upint]{newtxmath} -\RequirePackage{bm} -\let\encodingdefault\sjtu@save@encodingdefault -\let\rmdefault\sjtu@save@rmdefault -\let\sfdefault\sjtu@save@sfdefault -\let\ttdefault\sjtu@save@ttdefault -\endinput -%% -%% End of file `sjtu-math-font-newtx.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-stixtwo.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-stixtwo.def deleted file mode 100644 index 6f6e17cb..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-stixtwo.def +++ /dev/null @@ -1,79 +0,0 @@ -%% -%% This is file `sjtu-math-font-stixtwo.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `mathfont,stixtwo') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-math-font-stixtwo.def} - [2022/07/29 1.1.1 STIX Two math fonts definition (SJTUThesis)] -\RequirePackage{unicode-math} -\IfFontExistsTF{STIXTwoMath-Regular.otf}{ - \setmathfont[ - StylisticSet = 8 - ]{STIXTwoMath-Regular.otf} - \setmathfont[ - range = {scr, bfscr}, - StylisticSet = 1 - ]{STIXTwoMath-Regular.otf} -}{ - \setmathfont[ - StylisticSet = 8 - ]{STIX2Math.otf} - \setmathfont[ - range = {scr, bfscr}, - StylisticSet = 1 - ]{STIX2Math.otf} -} -\IfFontExistsTF{STIXTwoText-Regular.otf}{ - \setmathrm[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ]{STIXTwoText} -}{ - \setmathrm[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ]{STIX2Text} -} -\setmathsf[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, -]{texgyreheros} -\setmathtt[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - Scale = MatchLowercase, - Ligatures = CommonOff, -]{texgyrecursor} -\endinput -%% -%% End of file `sjtu-math-font-stixtwo.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-xits.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-xits.def deleted file mode 100644 index 0006a8f5..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-math-font-xits.def +++ /dev/null @@ -1,83 +0,0 @@ -%% -%% This is file `sjtu-math-font-xits.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `mathfont,xits') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-math-font-xits.def} - [2022/07/29 1.1.1 XITS math fonts definition (SJTUThesis)] -\RequirePackage{unicode-math} -\IfFontExistsTF{XITSMath-Regular.otf}{ - \setmathfont[ - Extension = .otf, - BoldFont = XITSMath-Bold, - StylisticSet = 8, - ]{XITSMath-Regular} - \setmathfont[ - range = {cal, bfcal}, - StylisticSet = 1 - ]{XITSMath-Regular.otf} -}{ - \setmathfont[ - Extension = .otf, - BoldFont = *bold, - StylisticSet = 8, - ]{xits-math} - \setmathfont[ - range = {cal, bfcal}, - StylisticSet = 1 - ]{xits-math.otf} -} -\IfFontExistsTF{XITS-Regular.otf}{ - \setmathrm[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ]{XITS} -}{ - \setmathrm[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - ]{xits} -} -\setmathsf[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, -]{texgyreheros} -\setmathtt[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - Scale = MatchLowercase, - Ligatures = CommonOff, -]{texgyrecursor} -\endinput -%% -%% End of file `sjtu-math-font-xits.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-cambria.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-cambria.def deleted file mode 100644 index 6e1cb0da..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-cambria.def +++ /dev/null @@ -1,31 +0,0 @@ -%% -%% This is file `sjtu-text-font-cambria.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,cambria') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-cambria.def} - [2022/07/29 1.1.1 Cambria text fonts definition (SJTUThesis)] -\setmainfont{Cambria} -\setsansfont{Calibri} -\setmonofont{Consolas}[Scale=MatchLowercase] -\endinput -%% -%% End of file `sjtu-text-font-cambria.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-lm.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-lm.def deleted file mode 100644 index 88ff7266..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-lm.def +++ /dev/null @@ -1,28 +0,0 @@ -%% -%% This is file `sjtu-text-font-lm.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,lm') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-lm.def} - [2022/07/29 1.1.1 Latin Modern text fonts definition (SJTUThesis)] -\endinput -%% -%% End of file `sjtu-text-font-lm.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newcm.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newcm.def deleted file mode 100644 index 0736f8c0..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newcm.def +++ /dev/null @@ -1,76 +0,0 @@ -%% -%% This is file `sjtu-text-font-newcm.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,newcm') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-newcm.def} - [2022/07/29 1.1.1 New Computer Modern text fonts definition (SJTUThesis)] -\setmainfont[ - Extension = .otf, - SizeFeatures = - { - { - Size = -9, - Font = NewCM08-Book, - ItalicFont = NewCM08-BookItalic, - SlantedFont = NewCM08-Book, - }, - { Size = 9- } - }, - UprightFont = *-Book, - BoldFont = *-Bold, - ItalicFont = *-BookItalic, - BoldItalicFont = *-BoldItalic, - SlantedFont = *-Book, - BoldSlantedFont = *-Bold, - SlantedFeatures = {FakeSlant=0.25}, - BoldSlantedFeatures = {FakeSlant=0.25} -]{NewCM10} -\setsansfont[ - Extension = .otf, - SizeFeatures = - { - { - Size = -9, - Font = NewCMSans08-Book, - ItalicFont = NewCMSans08-BookOblique, - }, - { Size = 9- } - }, - UprightFont = *-Book, - BoldFont = *-Bold, - ItalicFont = *-BookOblique, - BoldItalicFont = *-BoldOblique -]{NewCMSans10} -\setmonofont[ - Extension = .otf, - UprightFont = *-Book, - BoldFont = *-Bold, - ItalicFont = *-BookItalic, - BoldItalicFont = *-BoldOblique, - SlantedFont = *-Book, - SlantedFeatures = {FakeSlant = 0.25}, - BoldSlantedFont = *-Bold, - BoldSlantedFeatures = {FakeSlant = 0.25} -]{NewCMMono10} -\endinput -%% -%% End of file `sjtu-text-font-newcm.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newpx.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newpx.def deleted file mode 100644 index f685a77c..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newpx.def +++ /dev/null @@ -1,51 +0,0 @@ -%% -%% This is file `sjtu-text-font-newpx.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,newpx') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-newpx.def} - [2022/07/29 1.1.1 NewPX text fonts definition (SJTUThesis)] -\setmainfont[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic -]{TeXGyrePagellaX} -\setsansfont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, -]{texgyreheros} -\setmonofont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - Scale = MatchLowercase, - Ligatures = CommonOff, -]{texgyrecursor} -\endinput -%% -%% End of file `sjtu-text-font-newpx.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newtx.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newtx.def deleted file mode 100644 index fefb2a5b..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-newtx.def +++ /dev/null @@ -1,51 +0,0 @@ -%% -%% This is file `sjtu-text-font-newtx.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,newtx') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-newtx.def} - [2022/07/29 1.1.1 NewTX text fonts definition (SJTUThesis)] -\setmainfont[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic -]{TeXGyreTermesX} -\setsansfont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, -]{texgyreheros} -\setmonofont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - Scale = MatchLowercase, - Ligatures = CommonOff, -]{texgyrecursor} -\endinput -%% -%% End of file `sjtu-text-font-newtx.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-stixtwo.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-stixtwo.def deleted file mode 100644 index b3bcf7a3..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-stixtwo.def +++ /dev/null @@ -1,61 +0,0 @@ -%% -%% This is file `sjtu-text-font-stixtwo.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,stixtwo') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-stixtwo.def} - [2022/07/29 1.1.1 STIX Two text fonts definition (SJTUThesis)] -\IfFontExistsTF{STIXTwoText-Regular.otf}{ - \setmainfont[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ]{STIXTwoText} -}{ - \setmainfont[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ]{STIX2Text} -} -\setsansfont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, -]{texgyreheros} -\setmonofont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - Scale = MatchLowercase, - Ligatures = CommonOff, -]{texgyrecursor} -\endinput -%% -%% End of file `sjtu-text-font-stixtwo.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-times.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-times.def deleted file mode 100644 index f685ec7a..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-times.def +++ /dev/null @@ -1,31 +0,0 @@ -%% -%% This is file `sjtu-text-font-times.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,times') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-times.def} - [2022/07/29 1.1.1 Times text fonts definition (SJTUThesis)] -\setmainfont{Times New Roman}[Ligatures=Rare] -\setsansfont{Arial} -\setmonofont{Courier New}[Scale=MatchLowercase] -\endinput -%% -%% End of file `sjtu-text-font-times.def'. diff --git a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-xits.def b/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-xits.def deleted file mode 100644 index d9cadd9b..00000000 --- a/texmf/tex/latex/sjtuthesis/fd/sjtu-text-font-xits.def +++ /dev/null @@ -1,61 +0,0 @@ -%% -%% This is file `sjtu-text-font-xits.def', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `textfont,xits') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtu-text-font-xits.def} - [2022/07/29 1.1.1 XITS text fonts definition (SJTUThesis)] -\IfFontExistsTF{XITS-Regular.otf}{ - \setmainfont[ - Extension = .otf, - UprightFont = *-Regular, - BoldFont = *-Bold, - ItalicFont = *-Italic, - BoldItalicFont = *-BoldItalic, - ]{XITS} -}{ - \setmainfont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - ]{xits} -} -\setsansfont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, -]{texgyreheros} -\setmonofont[ - Extension = .otf, - UprightFont = *-regular, - BoldFont = *-bold, - ItalicFont = *-italic, - BoldItalicFont = *-bolditalic, - Scale = MatchLowercase, - Ligatures = CommonOff, -]{texgyrecursor} -\endinput -%% -%% End of file `sjtu-text-font-xits.def'. diff --git a/texmf/tex/latex/sjtuthesis/sjtuthesis-graduate.ltx b/texmf/tex/latex/sjtuthesis/sjtuthesis-graduate.ltx deleted file mode 100644 index 2f4ccad7..00000000 --- a/texmf/tex/latex/sjtuthesis/sjtuthesis-graduate.ltx +++ /dev/null @@ -1,180 +0,0 @@ -%% -%% This is file `sjtuthesis-graduate.ltx', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `graduate') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtuthesis-graduate.ltx} - [2022/07/29 1.1.1 Shanghai Jiao Tong University Thesis Template] -\geometry{% - paper = a4paper, - top = 3.5cm, - bottom = 4.0cm, - left = 3.3cm, - right = 2.8cm, - headheight = 1.0cm, - headsep = 0.5cm, -} -\pagestyle{fancy} -\newcommand\sjtu@thepage@format[2]{---~{\bfseries{#1}}~---} -\def\sjtu@info@fund{} -\fancypagestyle{title}{% - \fancyhf{} - \fancyfoot[L]{\ifsjtu@review\relax\else\sjtu@info@fund\fi} - \renewcommand\headrulewidth{0pt} - \renewcommand\footrulewidth{0pt} -} -\fancypagestyle{plain}{% - \fancyhf{} - \if@twoside - \ifsjtu@style@header@single - \fancyhead[CO]{\zihao{-5}\sjtu@name@subject@zh} - \fancyhead[CE]{\zihao{-5}\leftmark} - \else - \fancyhead[RE,LO]{\zihao{-5}\sjtu@name@subject@zh} - \fancyhead[RO,LE]{\zihao{-5}\leftmark} - \fi - \else - \ifsjtu@style@header@single - \fancyhead[C]{\zihao{-5}\sjtu@name@subject@zh} - \else - \fancyhead[L]{\zihao{-5}\sjtu@name@subject@zh} - \fancyhead[R]{\zihao{-5}\leftmark} - \fi - \fi - \fancyfoot[C]{% - \ifsjtu@page@numbering - \zihao{-5}\sjtu@thepage@format{\sjtu@thepage}{\sjtu@lastpageref}% - \fi - } - \renewcommand\headrule{% - \hrule\@height2.25pt\@width\headwidth - \vskip 0.75pt - \hrule\@height0.75pt\@width\headwidth - \vskip-3.75pt - } -} -\renewcommand\cftchapfont{\bfseries\heiti} -\NewDocumentEnvironment{abstract}{}{% - \sjtu@chapter*[\sjtu@name@abstract@zh]{% - \sjtu@info@title@zh \vskip 2ex - \begingroup - \sjtu@name@abstract@zh - \endgroup - }[\sjtu@name@abstract]% -}{% - \vskip \baselineskip \noindent - \begingroup - \heiti\sjtu@name@keywords@zh - \endgroup - \begingroup - \sjtu@clist@use{\sjtu@info@keywords@zh}{,} - \endgroup -} -\NewDocumentEnvironment{abstract*}{}{% - \sjtu@chapter*[\sjtu@name@abstract@en]{% - \MakeUppercase\sjtu@info@title@en \vskip 2ex - \begingroup - \MakeUppercase\sjtu@name@abstract@en - \endgroup - }[] - \zihao{4} -}{% - \vskip 3ex \noindent - \begingroup - \bfseries\MakeUppercase - \sjtu@name@keywords@en - \endgroup - \begingroup - \sjtu@clist@use{\sjtu@info@keywords@en}{, } - \endgroup -} -\RenewDocumentCommand{\maketitle}{}{% - \sjtu@pdfbookmark{0}{\sjtu@name@titlepage} - \sjtu@make@titlepage@zh% - \sjtu@make@titlepage@en% -} -\newcommand\sjtu@make@titlepage@zh{% - \cleardoublepage - \def\sjtu@info@fund{\zihao{-5}\sjtu@clist@use{\sjtu@info@fund@zh}{\par}} - \thispagestyle{title} - \begin{center} - \vspace*{28pt} - {\zihao{-2}\sjtu@name@subject@zh\par} - \vskip \stretch{4} - {\zihao{2}\heiti\sjtu@info@display@title@zh\par} - \vskip \stretch{5} - \begingroup - \zihao{4} - \def\arraystretch{1.25} - \begin{tabular}{@{}>{\heiti}F{t}{6.5\ccwd}@{\sjtu@colon}l@{}} - \sjtu@name@author@zh & \sjtu@info@author@zh \\ - \sjtu@name@id@zh & \sjtu@info@id \\ - \sjtu@name@supervisor@zh & \sjtu@info@supervisor@zh \\ - \ifx\sjtu@info@assisupervisor@zh\@empty\else - \sjtu@name@assisupervisor@zh & \sjtu@info@assisupervisor@zh \\ - \fi - \sjtu@name@degree@zh & \sjtu@info@degree@zh \\ - \sjtu@name@major@zh & \sjtu@info@major@zh \\ - \sjtu@name@department@zh & \sjtu@info@department@zh \\ - \sjtu@name@defenddate@zh & - \sjtu@date{\sjtu@date@format@zh}{\sjtu@info@date} \\ - \sjtu@name@conferring@zh & \sjtu@name@school@zh \\ - \end{tabular} - \par - \endgroup - \vskip 26pt - \end{center} -} -\newcommand\sjtu@make@titlepage@en{% - \cleardoublepage - \def\sjtu@info@fund{\zihao{-5}\sjtu@clist@use{\sjtu@info@fund@en}{\par}} - \thispagestyle{title} - \begin{center} - \vspace*{28pt} - {\zihao{-2}\sjtu@name@subject@en\par} - \vskip \stretch{4} - {\zihao{2}\bfseries\MakeUppercase\sjtu@info@display@title@en\par} - \vskip \stretch{5} - \begingroup - \zihao{4} - \def\arraystretch{1.25} - \begin{tabular}{@{}>{\bfseries}l<{:~}@{}p{.45\textwidth}@{}} - \sjtu@name@author@en & \sjtu@info@author@en \\ - \sjtu@name@id@en & \sjtu@info@id \\ - \sjtu@name@supervisor@en & \sjtu@info@supervisor@en \\ - \ifx\sjtu@info@assisupervisor@en\@empty\else - \sjtu@name@assisupervisor@en & \sjtu@info@assisupervisor@en \\ - \fi - \sjtu@name@degree@en & \sjtu@info@degree@en \\ - \sjtu@name@major@en & \sjtu@info@major@en \\ - \sjtu@name@department@en & \sjtu@info@department@en \\ - \sjtu@name@defenddate@en & - \sjtu@date{\sjtu@date@format@en}{\sjtu@info@date} \\ - \sjtu@name@conferring@en & \sjtu@name@school@en \\ - \end{tabular} - \par - \endgroup - \vskip 26pt - \end{center} -} -\endinput -%% -%% End of file `sjtuthesis-graduate.ltx'. diff --git a/texmf/tex/latex/sjtuthesis/sjtuthesis-undergraduate.ltx b/texmf/tex/latex/sjtuthesis/sjtuthesis-undergraduate.ltx deleted file mode 100644 index db93b8d6..00000000 --- a/texmf/tex/latex/sjtuthesis/sjtuthesis-undergraduate.ltx +++ /dev/null @@ -1,162 +0,0 @@ -%% -%% This is file `sjtuthesis-undergraduate.ltx', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `undergraduate') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\ProvidesFile{sjtuthesis-undergraduate.ltx} - [2022/07/29 1.1.1 Shanghai Jiao Tong University Thesis Template] -\geometry{% - paper = a4paper, - top = 84bp, - bottom = 72bp, - left = 90bp, - right = 90bp, - headheight = 60bp, - headsep = 8bp, -} -\pagestyle{fancy} -\ifsjtu@lang@zh - \newcommand\sjtu@thepage@format[2]{第~{#1}~页\,共~{#2}~页} -\else - \newcommand\sjtu@thepage@format[2]{--~~Page~~{#1}~~of~~{#2}~~--} -\fi -\fancypagestyle{plain}{% - \fancyhf{} - \fancyhead[L]{% - \includegraphics[height=32pt]% - {sjtu-vi-logo-\sjtu@style@header@logo@color.pdf} - } - \fancyhead[R]{% - \parbox[b]{0.7\textwidth}{% - \raggedleft\zihao{-5}\heiti\MakeUppercase{\sjtu@info@running@title} - } - } - \fancyfoot[C]{% - \ifsjtu@page@numbering - \zihao{-5}\sjtu@thepage@format{\sjtu@thepage}{\sjtu@lastpageref}% - \fi - } - \renewcommand\headrulewidth{0.75pt} -} -\ctexset{% - subsection/format = \zihao{-4}\normalfont, -} -\renewcommand\cftchapfont{\normalfont} -\ifsjtu@type@bachelor - \sjtusetup{ - style = { - frontmatter-numbering = false, - indent-headings = fixed, - }, - } -\fi -\NewDocumentEnvironment{abstract}{}{% - \sjtu@chapter*[\sjtu@name@abstract@zh]{% - \sjtu@info@title@zh \vskip 2ex - \begingroup - \zihao{4} - \sjtu@name@abstract@zh - \endgroup - }[\sjtu@name@abstract]% -}{% - \vskip \baselineskip \noindent - \begingroup - \zihao{-4} - \heiti\sjtu@name@keywords@zh - \endgroup - \begingroup - \zihao{5} - \sjtu@clist@use{\sjtu@info@keywords@zh}{,} - \endgroup -} -\NewDocumentEnvironment{abstract*}{}{% - \sjtu@chapter*[\sjtu@name@abstract@en]{% - \MakeUppercase\sjtu@info@title@en \vskip 2ex - \begingroup - \zihao{4} - \MakeUppercase\sjtu@name@abstract@en - \endgroup - }[] -}{% - \vskip 3ex \noindent - \begingroup - \zihao{-4}\bfseries - \sjtu@name@keywords@en - \endgroup - \begingroup - \zihao{5} - \sjtu@clist@use{\sjtu@info@keywords@en}{, } - \endgroup -} -\RenewDocumentCommand{\maketitle}{}{% - \sjtu@pdfbookmark{0}{\sjtu@name@titlepage} - \sjtu@make@titlepage@zh% -} -\newcommand\sjtu@make@titlepage@zh{% - \cleardoublepage - \thispagestyle{empty} - \begin{center} - \kaishu - \vspace*{48pt} - \begingroup - \includegraphics[height=105pt]% - {sjtu-vi-name-\sjtu@style@title@logo@color.pdf} - \par - \endgroup - {\fontsize{32}{42}\selectfont\sjtu@name@subject@zh\par} - \vskip 6pt - {\zihao{-2}\MakeUppercase\sjtu@name@subject@en\par} - \vskip 16pt - \begingroup - \includegraphics[height=75pt]% - {sjtu-vi-badge-\sjtu@style@title@logo@color.pdf} - \par - \endgroup - \vskip \stretch{2} - \begingroup - \zihao{-2} - \begin{tabular}{@{}r@{\sjtu@colon}l@{}} - 论文题目 & \sjtu@title@box[300pt]{\sjtu@info@display@title@zh} - \end{tabular} - \par - \endgroup - \vskip \stretch{1} - \begingroup - \zihao{3} - \begin{tabular}{@{}F{t}{4.2\ccwd}@{\sjtu@colon}c@{}} - \sjtu@name@author@zh & \sjtu@info@author@zh \\\cline{2-2} - \sjtu@name@id@zh & \makebox[180pt]{\sjtu@info@id} \\\cline{2-2} - \ifsjtu@type@course - \sjtu@name@course@zh & \sjtu@info@course@zh \\\cline{2-2} - \else - \sjtu@name@major@zh & \sjtu@info@major@zh \\\cline{2-2} - \fi - \sjtu@name@supervisor@zh & \sjtu@info@supervisor@zh \\\cline{2-2} - \sjtu@name@department@zh & \sjtu@info@department@zh \\\cline{2-2} - \end{tabular} - \par - \endgroup - \vskip 64pt - \end{center} -} -\endinput -%% -%% End of file `sjtuthesis-undergraduate.ltx'. diff --git a/texmf/tex/latex/sjtuthesis/sjtuthesis.cls b/texmf/tex/latex/sjtuthesis/sjtuthesis.cls deleted file mode 100644 index 899a446e..00000000 --- a/texmf/tex/latex/sjtuthesis/sjtuthesis.cls +++ /dev/null @@ -1,1329 +0,0 @@ -%% -%% This is file `sjtuthesis.cls', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% sjtuthesis.dtx (with options: `class') -%% -%% Copyright (C) 2009-2017 by weijianwen -%% (C) 2018-2022 by SJTUG -%% -%% This file may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3c -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% https://www.latex-project.org/lppl.txt -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This file has the LPPL maintenance status "maintained". -%% -%% The Current Maintainer of this work is Alexara Wu. -%% -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{sjtuthesis} - [2022/07/29 1.1.1 Shanghai Jiao Tong University Thesis Template] -\hyphenation{SJTU-Thesis} -\def\sjtuthesis{SJTU\textsc{Thesis}} -\def\version{1.1.1} -\newcommand\sjtu@error[1]{% - \ClassError{sjtuthesis}{#1}{}% -} -\newcommand\sjtu@warning[1]{% - \ClassWarning{sjtuthesis}{#1}{}% -} -\RequirePackage{iftex} -\ifXeTeX\else - \ifLuaTeX\else - \sjtu@error{% - The SJTUThesis class requires either XeTeX or LuaTeX.\\\\ - You must change your typesetting engine to, e.g., - "xelatex" or "lualatex" instead of "latex" or "pdflatex". - } - \fi -\fi -\RequirePackage{kvdefinekeys} -\RequirePackage{kvsetkeys} -\RequirePackage{kvoptions} -\SetupKeyvalOptions{ - family=sjtu, - prefix=sjtu@, - setkeys=\kvsetkeys} -\newcommand\sjtusetup[1]{% - \kvsetkeys{sjtu}{#1}% -} -\newcommand\sjtu@define@key[2]{% - \kvsetkeys{#1@key}{#2}% -} -\newcommand\sjtu@set@family@handler[1]{% - \kv@set@family@handler{#1@key}{% - \def\sjtu@@initial{}% - \def\sjtu@@choices{}% - \@namedef{#1@##1@@default}{}% - \@namedef{#1@##1@@check}{}% - \@namedef{#1@##1@@code}{}% - \@namedef{#1@##1@@name}{##1}% - \kv@define@key{#1@value}{name}{% - \@namedef{#1@##1@@name}{####1}% - }% - \kv@define@key{#1@value}{choices}{% - \def\sjtu@@choices{####1}% - \@namedef{#1@##1@@reset}{}% - \@namedef{#1@##1@@check}{% - \@ifundefined{% - if#1@\@nameuse{#1@##1@@name}@\@nameuse{#1@\@nameuse{#1@##1@@name}}% - }{% - \sjtu@error{Invalid value `##1 = \@nameuse{#1@\@nameuse{#1@##1@@name}}'}% - }% - \@nameuse{#1@##1@@reset}% - \@nameuse{#1@\@nameuse{#1@##1@@name}@\@nameuse{#1@\@nameuse{#1@##1@@name}}true}% - }% - }% - \kv@define@key{#1@value}{initial}{% - \def\sjtu@@initial{####1}% - \expandafter\ifx\csname #1@##1@@default\endcsname\@empty - \@namedef{#1@##1@@default}{####1}% - \fi - }% - \kv@define@key{#1@value}{default}{% - \@namedef{#1@##1@@default}{####1}% - }% - \kvsetkeys{#1@value}{##2}% - \@namedef{#1@\@nameuse{#1@##1@@name}}{}% - \kv@set@family@handler{#1@choice}{% - \ifx\sjtu@@initial\@empty - \def\sjtu@@initial{####1}% - \fi - \expandafter\ifx\csname #1@##1@@default\endcsname\@empty - \@namedef{#1@##1@@default}{####1}% - \fi - \expandafter\newif\csname if#1@\@nameuse{#1@##1@@name}@####1\endcsname - \expandafter\g@addto@macro\csname #1@##1@@reset\endcsname{% - \@nameuse{#1@\@nameuse{#1@##1@@name}@####1false}% - }% - }% - \kvsetkeys@expandafter{#1@choice}{\sjtu@@choices}% - \expandafter\let\csname #1@\@nameuse{#1@##1@@name}\endcsname\sjtu@@initial - \expandafter\ifx\csname #1@\@nameuse{#1@##1@@name}\endcsname\@empty\else - \@nameuse{#1@##1@@check}% - \fi - \kv@define@key{#1}{##1}[\@nameuse{#1@##1@@default}]{% - \@namedef{#1@\@nameuse{#1@##1@@name}}{####1}% - \@nameuse{#1@##1@@check}% - \@nameuse{#1@##1@@code}% - }% - } -} -\newcommand\sjtu@option@hook[3]{% - \expandafter\g@addto@macro\csname #1@#2@@code\endcsname{#3}% -} -\sjtu@set@family@handler{sjtu} -\sjtu@define@key{sjtu}{ - type = { - choices = { - doctor, - master, - bachelor, - course, - }, - }, - lang = { - choices = { - zh, - en, - }, - }, - zihao = { - choices = { - -4, - 5, - auto, - false, - }, - initial = auto, - }, -} -\DeclareStringOption[newtx]{text-font} -\@namedef{sjtu@text@font}{\csname sjtu@text-font\endcsname} -\DeclareStringOption[auto]{math-font} -\@namedef{sjtu@math@font}{\csname sjtu@math-font\endcsname} -\DeclareStringOption[auto]{cjk-font} -\@namedef{sjtu@cjk@font}{\csname sjtu@cjk-font\endcsname} -\DeclareBoolOption[false]{nothm} -\DeclareBoolOption[false]{review} -\DeclareBoolOption[false]{openright} -\DeclareComplementaryOption{openany}{openright} -\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{ctexbook}} -\ProcessKeyvalOptions* -\newif\ifsjtu@type@graduate -\sjtu@type@graduatefalse -\ifsjtu@type@doctor - \sjtu@type@graduatetrue -\fi -\ifsjtu@type@master - \sjtu@type@graduatetrue -\fi -\ifsjtu@zihao@auto - \ifsjtu@type@graduate - \def\sjtu@zihao{-4} - \else - \def\sjtu@zihao{5} - \fi -\fi -\edef\sjtu@opt@zihao{{zihao=\sjtu@zihao}} -\expandafter\PassOptionsToClass\sjtu@opt@zihao{ctexbook} -\ifsjtu@openright - \PassOptionsToClass{openright}{book} -\else - \PassOptionsToClass{openany}{book} -\fi -\ifsjtu@type@graduate\else - \PassOptionsToClass{oneside}{book} -\fi -\PassOptionsToPackage{no-math,quiet}{fontspec} -\LoadClass[a4paper,UTF8,scheme=plain,fontset=none,linespread=1.3]{ctexbook}[2018/04/01] -\AtEndOfClass{ - \ifsjtu@type@graduate - \input{sjtuthesis-graduate.ltx} - \else - \input{sjtuthesis-undergraduate.ltx} - \fi -} -\RequirePackage{xparse} -\RequirePackage{etoolbox} -\RequirePackage{filehook} -\RequirePackage{environ} -\RequirePackage{calc} -\RequirePackage{geometry} -\RequirePackage{fancyhdr} -\RequirePackage{pageslts} -\RequirePackage{amsmath} -\RequirePackage{xcolor} -\RequirePackage{graphicx} -\RequirePackage{array} -\RequirePackage{caption} -\RequirePackage[list=off]{bicaption} -\RequirePackage{subcaption} -\RequirePackage[titles]{tocloft} -\RequirePackage[inline]{enumitem} -\RequirePackage[perpage,bottom]{footmisc} -\RequirePackage{pdfpages} -\includepdfset{fitpaper=true} -\RequirePackage{url} -\RequirePackage{silence} -\WarningFilter{pageslts}{Package pdfpages detected} -\newcommand\sjtu@package@conflict[2]{ - \AtEndOfPackageFile*{#1}{% - \AtBeginOfPackageFile*{#2}{% - \sjtu@error{The "#2" package is incompatible with "#1"}% - } - } -} -\sjtu@package@conflict{unicode-math}{amscd} -\sjtu@package@conflict{unicode-math}{amsfonts} -\sjtu@package@conflict{unicode-math}{amssymb} -\sjtu@package@conflict{unicode-math}{bbm} -\sjtu@package@conflict{unicode-math}{bm} -\sjtu@package@conflict{unicode-math}{eucal} -\sjtu@package@conflict{unicode-math}{eufrak} -\sjtu@package@conflict{unicode-math}{mathrsfs} -\sjtu@package@conflict{unicode-math}{newtxmath} -\sjtu@package@conflict{unicode-math}{upgreek} -\sjtu@package@conflict{newtxmath}{amsfonts} -\sjtu@package@conflict{newtxmath}{amssymb} -\sjtu@package@conflict{newtxmath}{unicode-math} -\sjtu@package@conflict{newtxmath}{upgreek} -\newcommand\sjtu@patchcmd[3]{% - \patchcmd{#1}{#2}{#3}{}% - {\sjtu@warning{Oops! Command `\protect#1' is NOT patchable.}} -} -\kv@define@key{sjtu}{style}{ - \kvsetkeys{sjtu@style}{#1} -} -\sjtu@set@family@handler{sjtu@style} -\sjtu@define@key{sjtu@style}{ - header = { - choices = { - single, - double, - }, - }, - frontmatter-numbering = { - name = frontmatter@numbering, - choices = { - true, - false, - }, - }, - indent-headings = { - name = indent@headings, - choices = { - fixed, - auto, - false, - }, - initial = false, - default = fixed, - }, - footnote = { - choices = { - indent, - hang, - }, - }, - title-logo-color = { - name = title@logo@color, - choices = { - red, - blue, - black, - }, - initial = red, - }, - header-logo-color = { - name = header@logo@color, - choices = { - red, - blue, - black, - }, - initial = red, - }, - float-number-separator = { - name = fl@num@sep, - initial = {--}, - }, - equation-number-separator = { - name = eq@num@sep, - initial = {--}, - }, -} -\kv@define@key{sjtu}{info}{ - \kvsetkeys{sjtu@info}{#1} -} -\sjtu@set@family@handler{sjtu@info} -\sjtu@define@key{sjtu@info}{ - title = { name = title@zh }, - title* = { name = title@en }, - display-title = { name = display@title@zh }, - display-title* = { name = display@title@en }, - running-title = { name = running@title@zh }, - running-title* = { name = running@title@en }, - keywords = { name = keywords@zh }, - keywords* = { name = keywords@en }, - author = { name = author@zh }, - author* = { name = author@en }, - id, - supervisor = { name = supervisor@zh }, - supervisor* = { name = supervisor@en }, - assisupervisor = { name = assisupervisor@zh }, - assisupervisor* = { name = assisupervisor@en }, - degree = { name = degree@zh }, - degree* = { name = degree@en }, - department = { name = department@zh }, - department* = { name = department@en }, - major = { name = major@zh }, - major* = { name = major@en }, - course = { name = course@zh }, - course* = { name = course@en }, - fund = { name = fund@zh }, - fund* = { name = fund@en }, - date = {% - initial = {\the\year-\two@digits{\month}-\two@digits{\day}}, - }, -} -\sjtu@option@hook{sjtu@info}{title}{% - \ifx\sjtu@info@display@title@zh\@empty - \global\let\sjtu@info@display@title@zh\sjtu@info@title@zh - \fi - \ifx\sjtu@info@running@title@zh\@empty - \global\let\sjtu@info@running@title@zh\sjtu@info@title@zh - \fi -} -\sjtu@option@hook{sjtu@info}{title*}{% - \ifx\sjtu@info@display@title@en\@empty - \global\let\sjtu@info@display@title@en\sjtu@info@title@en - \fi - \ifx\sjtu@info@running@title@en\@empty - \global\let\sjtu@info@running@title@en\sjtu@info@title@en - \fi -} -\newcommand\sjtu@clist@use[2]{% - \let\sjtu@@tmp\@empty% - \def\sjtu@clist@processor##1{% - \ifx\sjtu@@tmp\@empty - \def\sjtu@@tmp{#2}% - \else - #2% - \fi - ##1% - }% - \expandafter\comma@parse\expandafter{#1}{\sjtu@clist@processor}% -} -\ifsjtu@lang@zh - \def\sjtu@info@title{\sjtu@info@title@zh} - \def\sjtu@info@title@sec{\sjtu@info@title@en} - \def\sjtu@info@display@title{\sjtu@info@display@title@zh} - \def\sjtu@info@running@title{\sjtu@info@running@title@zh} - \def\sjtu@info@keywords{\sjtu@info@keywords@zh} - \def\sjtu@info@author{\sjtu@info@author@zh} -\else - \def\sjtu@info@title{\sjtu@info@title@en} - \def\sjtu@info@title@sec{\sjtu@info@title@zh} - \def\sjtu@info@display@title{\sjtu@info@display@title@en} - \def\sjtu@info@running@title{\sjtu@info@running@title@en} - \def\sjtu@info@keywords{\sjtu@info@keywords@en} - \def\sjtu@info@author{\sjtu@info@author@en} -\fi -\newcommand\sjtu@date[2]{% - \ifsjtu@review\relax\else - \edef\sjtu@@date{#2}% - \def\sjtu@@process@date##1-##2-##3\@nil{% - #1{##1}{##2}{##3}% - }% - \expandafter\sjtu@@process@date\sjtu@@date\@nil - \fi -} -\newcommand\sjtu@date@format@zh[3]{#1 年 \number#2 月 \number#3 日} -\newcommand\sjtu@date@month@en[1]{% - \ifcase\number#1\or - January\or February\or March\or April\or May\or June\or - July\or August\or September\or October\or November\or December% - \fi -} -\newcommand\sjtu@date@format@en[3]{\sjtu@date@month@en{#2} \number#3, #1} -\kv@define@key{sjtu}{name}{ - \kvsetkeys{sjtu@name}{#1} -} -\sjtu@set@family@handler{sjtu@name} -\sjtu@define@key{sjtu@name}{ - appendix = { initial = Appendix }, - contents = { initial = Contents }, - listfigure = { initial = List of Figures }, - listtable = { initial = List of Tables }, - listalgorithm = { initial = List of Algorithms }, - figure = { initial = Figure }, - figure* = { name = figure@second, initial = 图 }, - table = { initial = Table }, - table* = { name = table@second, initial = 表 }, - algorithm = { initial = Algorithm }, - abbr = { initial = Abbreviation }, - nom = { initial = Nomenclature }, - summary = { initial = Summary }, - bib = { initial = Bibliography }, - index = { initial = Index }, - ack = { initial = Acknowledgements }, - achv = { initial = Research Achievements }, - resume = { initial = Resume }, - digest = { initial = Digest }, -} -\newcommand\sjtu@name@def[2]{% - \@namedef{sjtu@name@#1}{#2} -} -\sjtu@name@def{school@zh}{上海交通大学} -\sjtu@name@def{school@en}{Shanghai Jiao Tong University} -\ifsjtu@type@graduate - \ifsjtu@type@doctor - \sjtu@name@def{degree@type@zh}{博士} - \sjtu@name@def{degree@type@en}{Doctor} - \else - \sjtu@name@def{degree@type@zh}{硕士} - \sjtu@name@def{degree@type@en}{Master} - \fi - \sjtu@name@def{author@zh}{\sjtu@name@degree@type@zh 研究生} - \sjtu@name@def{author@en}{Candidate} - \sjtu@name@def{id@zh}{学号} - \sjtu@name@def{id@en}{Student ID} - \sjtu@name@def{supervisor@zh}{导师} - \sjtu@name@def{supervisor@en}{Supervisor} - \sjtu@name@def{assisupervisor@zh}{副导师} - \sjtu@name@def{assisupervisor@en}{Assistant Supervisor} - \sjtu@name@def{degree@zh}{申请学位} - \sjtu@name@def{degree@en}{Academic Degree Applied for} - \sjtu@name@def{major@zh}{学科} - \sjtu@name@def{major@en}{Speciality} - \sjtu@name@def{department@zh}{所在单位} - \sjtu@name@def{department@en}{Affiliation} - \sjtu@name@def{defenddate@zh}{答辩日期} - \sjtu@name@def{defenddate@en}{Date of Defence} - \sjtu@name@def{conferring@zh}{授予学位单位} - \sjtu@name@def{conferring@en}{Degree-Conferring-Institution} - \sjtu@name@def{thesis@type}{学位论文} - \sjtu@name@def{subject@zh}{% - \sjtu@name@school@zh\sjtu@name@degree@type@zh\sjtu@name@thesis@type - } - \sjtu@name@def{subject@en}{% - Dissertation Submitted to \sjtu@name@school@en \\ - for the Degree of \sjtu@name@degree@type@en - } -\else - \ifsjtu@type@course - \sjtu@name@def{degree@type@zh}{} - \sjtu@name@def{degree@type@en}{} - \sjtu@name@def{thesis@type}{课程论文} - \sjtu@name@def{subject@zh}{\sjtu@name@thesis@type} - \sjtu@name@def{subject@en}{Course Paper} - \else - \sjtu@name@def{degree@type@zh}{学士} - \sjtu@name@def{degree@type@en}{Bachelor} - \sjtu@name@def{thesis@type}{学位论文} - \sjtu@name@def{subject@zh}{\sjtu@name@degree@type@zh\sjtu@name@thesis@type} - \sjtu@name@def{subject@en}{\sjtu@name@degree@type@en's Thesis} - \fi - \sjtu@name@def{author@zh}{学生姓名} - \sjtu@name@def{id@zh}{学生学号} - \sjtu@name@def{supervisor@zh}{指导教师} - \sjtu@name@def{course@zh}{课程名称} - \sjtu@name@def{major@zh}{专业} - \sjtu@name@def{department@zh}{学院(系)} -\fi -\sjtu@name@def{orig@title@zh}{原创性声明} -\sjtu@name@def{orig@title@en}{Statement of Originality} -\sjtu@name@def{copr@title@zh}{使用授权书} -\sjtu@name@def{copr@title@en}{Copyright Permission} -\sjtu@name@def{orig@body}{% - 本人郑重声明:所呈交的\sjtu@name@thesis@type ,是本人在导师的指导下,独立进行 - 研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集 - 体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中 - 以明确方式标明。本人完全意识到本声明的法律结果由本人承担。} -\sjtu@name@def{copr@body}{% - 本\sjtu@name@thesis@type 作者完全了解学校有关保留、使用\sjtu@name@thesis@type - 的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被 - 查阅和借阅。} -\sjtu@name@def{abstract@zh}{摘\hspace{\ccwd}要} -\sjtu@name@def{abstract@en}{Abstract} -\sjtu@name@def{keywords@zh}{关键词:} -\sjtu@name@def{keywords@en}{Key words:~} -\ifsjtu@lang@zh - \sjtusetup{ - name = { - appendix = {附录}, - contents = {目\hspace{\ccwd}录}, - listfigure = {插图索引}, - listtable = {表格索引}, - listalgorithm = {算法索引}, - figure = {图}, - figure* = {Figure}, - table = {表}, - table* = {Table}, - algorithm = {算法}, - abbr = {缩略语对照表}, - nom = {符号对照表}, - summary = {全文总结}, - bib = {参考文献}, - index = {索\hspace{\ccwd}引}, - ack = {致\hspace{\ccwd}谢}, - achv = {学术论文和科研成果目录}, - resume = {个人简历}, - digest = {大摘要}, - } - } - \ctexset{ - chapter/name = {第,章}, - chapter/number = \chinese{chapter}, - } - \sjtu@name@def{titlepage}{扉页} - \sjtu@name@def{subject}{\sjtu@name@subject@zh} - \sjtu@name@def{copr@mk}{\sjtu@name@orig@title@zh 及\sjtu@name@copr@title@zh} - \sjtu@name@def{abstract}{\sjtu@name@abstract@zh} - \sjtu@name@def{assumption}{假设} - \sjtu@name@def{axiom}{公理} - \sjtu@name@def{conjecture}{猜想} - \sjtu@name@def{corollary}{推论} - \sjtu@name@def{definition}{定义} - \sjtu@name@def{example}{例} - \sjtu@name@def{exercise}{练习} - \sjtu@name@def{lemma}{引理} - \sjtu@name@def{problem}{问题} - \sjtu@name@def{proof}{证明} - \sjtu@name@def{proposition}{命题} - \sjtu@name@def{remark}{注} - \sjtu@name@def{solution}{解} - \sjtu@name@def{theorem}{定理} -\else - \sjtu@name@def{titlepage}{Title Page} - \sjtu@name@def{subject}{\sjtu@name@subject@en} - \sjtu@name@def{copr@mk}{\sjtu@name@orig@title@en and \sjtu@name@copr@title@en} - \sjtu@name@def{abstract}{\sjtu@name@abstract@en} - \sjtu@name@def{assumption}{Assumption} - \sjtu@name@def{axiom}{Axiom} - \sjtu@name@def{conjecture}{Conjecture} - \sjtu@name@def{corollary}{Corollary} - \sjtu@name@def{definition}{Definition} - \sjtu@name@def{example}{Example} - \sjtu@name@def{exercise}{Exercise} - \sjtu@name@def{lemma}{Lemma} - \sjtu@name@def{problem}{Problem} - \sjtu@name@def{proof}{Proof} - \sjtu@name@def{proposition}{Proposition} - \sjtu@name@def{remark}{Remark} - \sjtu@name@def{solution}{Solution} - \sjtu@name@def{theorem}{Theorem} -\fi -\ctexset{% - appendixname = \sjtu@name@appendix, - contentsname = \sjtu@name@contents, - listfigurename = \sjtu@name@listfigure, - listtablename = \sjtu@name@listtable, - figurename = \sjtu@name@figure, - tablename = \sjtu@name@table, - bibname = \sjtu@name@bib, - indexname = \sjtu@name@index, -} -\ifthenelse{\equal{\sjtu@math@font}{auto}}{ - \let\sjtu@math@font\sjtu@text@font -}{} -\ifthenelse{\equal{\sjtu@math@font}{none}}{}{% - \InputIfFileExists{sjtu-math-font-\sjtu@math@font.def}{}{% - \sjtu@warning{% - Invalid value `math-font = \sjtu@math@font'! \MessageBreak - Using `newtx' instead. - } - \def\sjtu@math@font{newtx} - \input{sjtu-math-font-\sjtu@math@font.def} - } -} -\ifthenelse{\equal{\sjtu@text@font}{none}}{}{% - \InputIfFileExists{sjtu-text-font-\sjtu@text@font.def}{}{% - \sjtu@warning{% - Invalid value `text-font = \sjtu@text@font'! \MessageBreak - Using `newtx' instead. - } - \def\sjtu@text@font{newtx} - \input{sjtu-text-font-\sjtu@text@font.def} - } -} -\ifthenelse{\equal{\sjtu@cjk@font}{auto}}{ - \IfFontExistsTF{SimSun}{ - \def\sjtu@cjk@font{windows} - }{ - \IfFileExists{/System/Library/Fonts/Menlo.ttc}{ - \def\sjtu@cjk@font{mac} - }{ - \IfFontExistsTF{Noto Serif CJK SC}{ - \def\sjtu@cjk@font{ubuntu} - }{ - \def\sjtu@cjk@font{fandol} - } - } - } -}{} -\ifthenelse{\equal{\sjtu@cjk@font}{none}}{}{% - \InputIfFileExists{sjtu-cjk-font-\sjtu@cjk@font.def}{}{% - \sjtu@warning{% - Invalid value `cjk-font = \sjtu@cjk@font'! \MessageBreak - Using `fandol' instead. - } - \def\sjtu@cjk@font{fandol} - \input{sjtu-cjk-font-\sjtu@cjk@font.def} - } -} -\ifXeTeX - \xeCJKDeclareCharClass{CJK}{"24EA,"2460->"2473,"3251->"32BF,"25A1} -\fi -\ifLuaTeX - \ltjdefcharrange{100}{"24EA,"2460-"2473,"3251-"32BF,"25A1} - \ltjsetparameter{jacharrange={+100}} -\fi -\newcommand\sjtu@square{\symbol{"25A1}} -\newcommand\sjtu@colon{\makebox[1\ccwd]{\symbol{"FF1A}}} -\def\sjtu@thepage{} -\def\sjtu@lastpageref{} -\newif\ifsjtu@page@numbering \sjtu@page@numberingtrue -\AtEndOfClass{% - \sloppy - \raggedbottom -} -\sjtu@patchcmd\cleardoublepage% - {\newpage}{\thispagestyle{empty}\newpage} -\def\ps@chapter{} -\ctexset{chapter/pagestyle = chapter} -\AtBeginDocument{% - \pagenumbering{Alph} - \pagestyle{empty} -} -\renewcommand\frontmatter{% - \cleardoublepage - \@mainmatterfalse - \ifsjtu@style@frontmatter@numbering@false - \sjtu@page@numberingfalse - \fi - \pagenumbering{Roman} - \def\sjtu@thepage{\thepage} - \def\sjtu@lastpageref{\lastpageref{pagesLTS.Roman}} - \pagestyle{plain} -} -\renewcommand\mainmatter{% - \cleardoublepage - \@mainmattertrue - \sjtu@page@numberingtrue - \sjtu@set@float@fontsizetrue - \pagenumbering{arabic} - \def\sjtu@lastpageref{\lastpageref{pagesLTS.arabic}} -} -\renewcommand\backmatter{% - \if@openright\cleardoublepage\else\clearpage\fi% - \@mainmatterfalse -} -\ctexset{% - chapter = {% - format = \zihao{3}\bfseries\heiti\centering, - nameformat = {}, - titleformat = {}, - aftername = \quad, - afterindent = true, - fixskip = true, - beforeskip = 24pt, - afterskip = 24pt, - lofskip = 0pt, - lotskip = 0pt, - }, - section = {% - format = \zihao{4}\bfseries\heiti, - afterindent = true, - afterskip = {1ex \@plus .2ex}, - }, - subsection = {% - format = \zihao{-4}\bfseries\heiti, - afterindent = true, - afterskip = {1ex \@plus .2ex}, - }, - subsubsection = {% - format = \zihao{-4}\normalfont, - afterindent = true, - afterskip = {1ex \@plus .2ex}, - }, - paragraph/afterindent = true, - subparagraph/afterindent = true, -} -\newlength{\sjtu@headings@indent@fixed} -\setlength{\sjtu@headings@indent@fixed}{2\ccwd} -\newcommand\sjtu@style@set@indent@headings{% - \ifsjtu@style@indent@headings@fixed - \sjtu@style@indent@headings@autotrue - \gdef\sjtu@headings@indent{\sjtu@headings@indent@fixed} - \else - \gdef\sjtu@headings@indent{2\ccwd} - \fi - \ifsjtu@style@indent@headings@auto - \ifsjtu@type@graduate\relax\else - \ctexset{% - subsubsection/name = {(,)}, - subsubsection/number = \arabic{subsubsection}, - } - \fi - \else - \gdef\sjtu@headings@indent{\z@} - \ctexset{% - subsubsection/name = {}, - subsubsection/number = \thesubsubsection, - } - \fi - \ctexset{% - section/indent = \sjtu@headings@indent, - subsection/indent = \sjtu@headings@indent, - subsubsection/indent = \sjtu@headings@indent, - } -} -\sjtu@style@set@indent@headings -\sjtu@option@hook{sjtu@style}{indent-headings}{% - \sjtu@style@set@indent@headings -} -\newcommand\sjtu@indent@box{% - \hspace*{\ifsjtu@style@indent@headings@auto 2\ccwd\else\z@\fi}% -} -\ctexset{% - punct = quanjiao, - space = auto, - autoindent = true, -} -\setlist{nosep} -\setlist*{leftmargin=*} -\setlist[1]{labelindent=\parindent} -\let\footnotemarkfont\@empty -\def\sjtu@num@circled#1{% - \ifnum#1 <21% - {\footnotemarkfont\symbol{\the\numexpr#1+"245F\relax}}% - \else\ifnum#1 <36% - {\footnotemarkfont\symbol{\the\numexpr#1+"323C\relax}}% - \else\ifnum#1 <51% - {\footnotemarkfont\symbol{\the\numexpr#1+"328D\relax}}% - \else - \sjtu@warning{Too many footnotes in this page.}% - \fi\fi\fi -} -\renewcommand{\thefootnote}{\sjtu@num@circled{\c@footnote}} -\renewcommand{\thempfootnote}{\sjtu@num@circled{\c@mpfootnote}} -\footnotemargin1.5em\relax -\long\def\@makefntext#1{% - \ifsjtu@style@footnote@hang - \bgroup - \def\@makefnmark{\hbox{\normalfont\@thefnmark}}% - \setbox\@tempboxa\hbox{% - \ifdim\footnotemargin>\z@ - \hb@xt@\footnotemargin{\@makefnmark\hss}% - \else - \@makefnmark - \fi - }% - \leftmargin\wd\@tempboxa - \rightmargin\z@ - \linewidth \columnwidth - \advance \linewidth -\leftmargin - \parshape \@ne \leftmargin \linewidth - \footnotesize - \@setpar{{\@@par}}% - \leavevmode - \llap{\box\@tempboxa}% - \parskip\hangfootparskip\relax - \parindent\hangfootparindent\relax - \else - \parindent 2\ccwd% - {\normalfont\@thefnmark} - \fi - \footnotelayout#1% - \ifsjtu@style@footnote@hang - \par\egroup - \fi -} -\urlstyle{same} -\g@addto@macro\UrlBreaks{% - \do0\do1\do2\do3\do4\do5\do6\do7\do8\do9% - \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M - \do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z - \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j\do\k\do\l\do\m - \do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z -} -\Urlmuskip=0mu plus 0.1mu -\newcommand\sjtu@pdfbookmark[2]{} -\newcommand\sjtu@phantomsection{} -\NewDocumentCommand{\sjtu@chapter}{s O{#3} m O{#2}}{ - \if@openright\cleardoublepage\else\clearpage\fi% - \IfBooleanTF{#1}{% - \ifthenelse{\equal{#4}{}}{}{% - \sjtu@pdfbookmark{0}{#4}% - } - }{% - \sjtu@phantomsection - \addcontentsline{toc}{chapter}{#4}% - }%% - \chapter*{#3}% - \@mkboth{\MakeUppercase{#2}}{\MakeUppercase{#2}}% -} -\setcounter{secnumdepth}{3} -\setcounter{tocdepth}{2} -\renewcommand\tableofcontents{% - \sjtu@chapter*{\contentsname}% - \@starttoc{toc}% -} -\def\sjtu@listof#1{% #1: float type - \setcounter{tocdepth}{2} % restore tocdepth in case being modified - \@ifstar - {\sjtu@chapter*{\csname list#1name\endcsname} - \@starttoc{\csname ext@#1\endcsname}}% - {\sjtu@chapter{\csname list#1name\endcsname} - \@starttoc{\csname ext@#1\endcsname}}% -} -\renewcommand\listoffigures{\sjtu@listof{figure}} -\renewcommand\listoftables{\sjtu@listof{table}} -\ifsjtu@lang@zh - \renewcommand\cftdot{\textperiodcentered} -\fi -\renewcommand\cftdotsep{1} -\setlength{\cftbeforechapskip}{0pt} -\renewcommand\cftchappagefont{\normalfont} -\renewcommand\cftchapleader{\normalfont\cftdotfill{\cftdotsep}} -\renewcommand\cftfigpresnum{\sjtu@name@figure~} -\renewcommand\cfttabpresnum{\sjtu@name@table~} -\AtEndPreamble{% - \addtolength{\cftfignumwidth}{\widthof{\cftfigpresnum}} - \addtolength{\cfttabnumwidth}{\widthof{\cfttabpresnum}} -} -\renewcommand\textfraction{0.15} -\renewcommand\topfraction{0.85} -\renewcommand\bottomfraction{0.65} -\renewcommand\floatpagefraction{0.60} -\AtBeginDocument{% - \def\thefigure{\thechapter\sjtu@style@fl@num@sep\arabic{figure}} - \def\p@subfigure{\thefigure} - \def\thetable{\thechapter\sjtu@style@fl@num@sep\arabic{table}} - \def\theequation{\thechapter\sjtu@style@eq@num@sep\arabic{equation}} -} -\newcommand\sjtu@counter@without@chapter{ - \counterwithout{section}{chapter} - \setcounter{section}{0} - \counterwithout{figure}{chapter} - \setcounter{figure}{0} - \counterwithout{table}{chapter} - \setcounter{table}{0} -} -\newif\ifsjtu@set@float@fontsize \sjtu@set@float@fontsizefalse -\sjtu@patchcmd\@floatboxreset% - {\normalsize} - {\ifsjtu@set@float@fontsize\zihao{5}\else\normalsize\fi} -\NewDocumentCommand{\SJTUsetfloatfontsize}{}{\sjtu@set@float@fontsizetrue} -\NewDocumentCommand{\SJTUunsetfloatfontsize}{}{\sjtu@set@float@fontsizefalse} -\ifsjtu@type@graduate - \DeclareCaptionFont{sjtu@caption@font}{\zihao{5}\kaishu} -\else - \DeclareCaptionFont{sjtu@caption@font}{\zihao{5}\bfseries} -\fi -\DeclareCaptionFont{sjtu@subcaption@font}{\zihao{5}\normalfont} -\DeclareCaptionLabelSeparator{enskip}{\enskip} -\captionsetup{% - format = plain, - labelformat = simple, - labelsep = enskip, - justification = centering, - font = sjtu@caption@font -} -\captionsetup[sub]{% - format = hang, - labelformat = brace, - justification = justified, - font = sjtu@subcaption@font -} -\DeclareCaptionOption{bi-second}[]{% - \def\tablename{\sjtu@name@table@second} - \def\figurename{\sjtu@name@figure@second} -} -\captionsetup[bi-second]{bi-second} -\newcommand\sjtu@copr@addon{% - \noindent - 本\sjtu@name@thesis@type 属于\enskip - \begin{minipage}[t]{28\ccwd} - \sjtu@square{\bfseries 公开论文} \par - \sjtu@square{\bfseries 内部论文},% - \sjtu@square 1 年/\sjtu@square 2 年/\sjtu@square 3 年\quad% - 解密后适用本授权书。\par - \sjtu@square{\bfseries 秘密论文},\underline{\hspace{2\ccwd}}年% - (不超过10年)解密后适用本授权书。\par - \sjtu@square{\bfseries 机密论文},\underline{\hspace{2\ccwd}}年% - (不超过20年)解密后适用本授权书。\par - (请在以上方框内打“$\checkmark$”) - \end{minipage} -} -\newcommand\sjtu@signbox[1]{% - \begingroup - \zihao{4} - \parbox[t]{64mm}{% - {#1}签名:\\[6pt] - 日期:\hspace{\stretch{3}}年\hspace{\stretch{2}}月\hspace{\stretch{2}}日 - } - \endgroup -} -\NewDocumentCommand{\copyrightpage}{O{}}{% - \ifsjtu@review\relax\else - \cleardoublepage - \sjtu@pdfbookmark{0}{\sjtu@name@copr@mk}% - \ifblank{#1}{% - \newgeometry{ - vmargin = 3cm, - left = 3cm, - right = 2.5cm, - }% - \thispagestyle{empty} - \begingroup - \zihao{-4}\linespread{1.73}\selectfont - \begin{center} - \heiti\zihao{3} - \sjtu@name@school@zh\par - \sjtu@name@thesis@type\sjtu@name@orig@title@zh - \end{center}\par - \sjtu@name@orig@body\par - \vskip \baselineskip \hfill - \sjtu@signbox{\sjtu@name@thesis@type 作者} - \hspace*{20mm}\par - \vskip 2\baselineskip - \begin{center} - \heiti\zihao{3} - \sjtu@name@school@zh\par - \sjtu@name@thesis@type\sjtu@name@copr@title@zh - \end{center}\par - \sjtu@name@copr@body\par - \vskip \baselineskip - \sjtu@copr@addon\par - \vskip 1.5\baselineskip - \sjtu@signbox{\sjtu@name@thesis@type 作者}\hfill - \sjtu@signbox{指导教师}\par - \endgroup - \restoregeometry - }{\includepdf[pages=-]{#1}} - \fi -} -\newcommand\sjtu@save@env@body[1]{\long\gdef\sjtu@saved@env@body{#1}} -\NewDocumentEnvironment{abbreviation}{}{% - \sjtu@chapter{\sjtu@name@abbr} -}{} -\NewDocumentEnvironment{abbreviation*}{}{% - \sjtu@chapter*{\sjtu@name@abbr} -}{} -\NewDocumentEnvironment{nomenclature}{}{% - \sjtu@chapter{\sjtu@name@nom} -}{} -\NewDocumentEnvironment{nomenclature*}{}{% - \sjtu@chapter*{\sjtu@name@nom} -}{} -\NewDocumentEnvironment{summary}{}{% - \sjtu@chapter{\sjtu@name@summary} -}{} -\NewDocumentEnvironment{acknowledgements}{}{% - \Collect@Body\sjtu@save@env@body -}{% - \ifsjtu@review\relax\else - \sjtu@chapter{\sjtu@name@ack} - \sjtu@saved@env@body - \fi -} -\newcounter{sjtu@bib} -\NewDocumentEnvironment{@bibliolist}{m}{% - \list{\@biblabel{\@arabic\c@sjtu@bib}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@nmbrlisttrue - \def\@listctr{sjtu@bib} - \let\p@sjtu@bib\@empty - \renewcommand\thesjtu@bib{\@arabic\c@sjtu@bib}}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m -}{% - \def\@noitemerr - {\@latex@warning{Empty `bibliolist' environment}}% - \endlist -} -\NewDocumentEnvironment{bibliolist}{m}{% - \Collect@Body\sjtu@save@env@body -}{% - \ifsjtu@review\relax\else - \begin{@bibliolist}{#1} - \sjtu@saved@env@body - \end{@bibliolist} - \fi -} -\NewDocumentEnvironment{bibliolist*}{m}{% - \Collect@Body\sjtu@save@env@body -}{% - \ifsjtu@review - \begin{@bibliolist}{#1} - \sjtu@saved@env@body - \end{@bibliolist} - \fi -} -\NewDocumentEnvironment{achievements}{}{% - \sjtu@chapter{\sjtu@name@achv} -}{} -\NewDocumentEnvironment{resume}{}{% - \Collect@Body\sjtu@save@env@body -}{% - \ifsjtu@review\relax\else - \sjtu@chapter{\sjtu@name@resume} - \sjtu@saved@env@body - \fi -} -\NewDocumentEnvironment{digest}{}{% - \Collect@Body\sjtu@save@env@body -}{% - \ifsjtu@type@bachelor - \AtEndDocument{% - \cleardoublepage - \pagenumbering{roman} - \def\sjtu@thepage{\theCurrentPageLocal} - \def\sjtu@lastpageref{\lastpageref{pagesLTS.roman.local}} - \sjtu@chapter*[\sjtu@name@digest]{\MakeUppercase\sjtu@info@title@sec} - \sjtu@counter@without@chapter - \let\addcontentsline\@gobblethree - \sjtu@saved@env@body - } - \fi -} -\AtEndPreamble{ - \ifsjtu@review% - \sjtusetup{% - info = { - author = {}, - author* = {}, - id = {}, - supervisor = {}, - supervisor* = {}, - assisupervisor = {}, - assisupervisor* = {}, - } - } - \fi -} -\NewDocumentCommand{\encrypt}{m O{***}}{% - \ifsjtu@review - {#2} - \else - {#1} - \fi -} -\newcommand\sjtu@title@box[2][]{% - \def\sjtu@@title@uline{\rule[-1ex]{#1}{.5pt}}% - \def\sjtu@@title@box##1{\parbox[t]{#1}{##1}}% - \newlength\sjtu@@title@temp@ht - \settototalheight\sjtu@@title@temp@ht{\sjtu@@title@box{#2}}% - \ifdim\sjtu@@title@temp@ht=0pt% - \sjtu@@title@uline% - \else - \leavevmode% - \ifdim\sjtu@@title@temp@ht>\normalbaselineskip - \rlap{\smash{\sjtu@@title@box{% - \@whiledim\sjtu@@title@temp@ht>0pt% - \leavevmode% - \do{% - \rlap{\sjtu@@title@uline}\\% - \addtolength\sjtu@@title@temp@ht{-\normalbaselineskip}% - }% - }}}% - \sjtu@@title@box{\centering #2}% - \else - \rlap{\sjtu@@title@uline}% - \sjtu@@title@box{\centering #2}% - \fi - \fi -} -\newcolumntype{F}[2]{% - >{\minipage[#1]{#2}% - \ifXeTeX\def\CJKglue{\hskip \z@ plus 1filll}\fi% - \ifLuaTeX\ltjsetparameter{kanjiskip=\z@ plus 1filll}\fi% - \begingroup}% - c% - <{\endgroup% - \endminipage% - \ignorespacesafterend}} -\AtEndOfPackageFile*{hyperref}{ - \hypersetup{ - linktoc = all, - bookmarksdepth = 2, - bookmarksnumbered = true, - bookmarksopen = true, - bookmarksopenlevel = 1, - unicode = true, - psdextra = true, - breaklinks = true, - plainpages = false, - pdfdisplaydoctitle = true, - hidelinks, - } - \newcounter{sjtu@bookmark} - \renewcommand\sjtu@pdfbookmark[2]{% - \phantomsection - \stepcounter{sjtu@bookmark}% - \pdfbookmark[#1]{#2}{sjtuchapter.\thesjtu@bookmark}% - } - \renewcommand\sjtu@phantomsection{% - \phantomsection - } - \pdfstringdefDisableCommands{% - \let\\\@empty - \let\quad\@empty - \let\hspace\@gobble - } - \@ifpackagelater{hyperref}{2019/04/27}{}{% - \g@addto@macro\psdmapshortnames{\let\mu\textmu} - }% - \AtBeginDocument{% - \hypersetup{ - pdftitle = \sjtu@info@title, - pdfsubject = \sjtu@name@subject, - pdfkeywords = \sjtu@info@keywords, - pdfauthor = \sjtu@info@author, - pdfcreator = {LaTeX with SJTUThesis \version} - } - }% -} -\AtEndOfPackageFile*{threeparttable}{ - \appto\TPTnoteSettings{\footnotesize} -} -\AtEndOfPackageFile*{longtable}{ - \BeforeBeginEnvironment{longtable} - {\begingroup\ifsjtu@set@float@fontsize\zihao{5}\fi} - \AfterEndEnvironment{longtable} - {\endgroup} -} -\AtEndOfPackageFile*{unicode-math}{ - \unimathsetup{ - math-style = ISO, - bold-style = ISO, - nabla = upright, - } - \newcommand{\bm}{\symbf} - \renewcommand{\boldsymbol}{\symbf} - \newcommand{\square}{\mdlgwhtsquare} -} -\AtEndOfPackageFile*{physics}{ - \@ifundefined{updelta}{}{ - \DeclareDocumentCommand\variation{o g d()}{ - \IfNoValueTF{#2}{ - \IfNoValueTF{#3} - {\updelta \IfNoValueTF{#1}{}{^{#1}}} - {\mathinner{\updelta \IfNoValueTF{#1}{}{^{#1}}\argopen(#3\argclose)}} - } - {\mathinner{\updelta \IfNoValueTF{#1}{}{^{#1}}#2} \IfNoValueTF{#3}{}{(#3)}} - } - } -} -\AtEndOfPackageFile*{siunitx}{ - \sisetup{ - group-minimum-digits = 4, - separate-uncertainty = true, - inter-unit-product = \ensuremath{{}\cdot{}}, - } - \ifsjtu@lang@zh - \sisetup{ - list-final-separator = { 和 }, - list-pair-separator = { 和 }, - range-phrase = {~}, - } - \fi -} -\newcommand\sjtu@def@theorem{% - \newtheorem{assumption} {\sjtu@name@assumption} [chapter] - \newtheorem{axiom} {\sjtu@name@axiom} [chapter] - \newtheorem{conjecture} {\sjtu@name@conjecture} [chapter] - \newtheorem{corollary} {\sjtu@name@corollary} [chapter] - \newtheorem{definition} {\sjtu@name@definition} [chapter] - \newtheorem{example} {\sjtu@name@example} [chapter] - \newtheorem{exercise} {\sjtu@name@exercise} [chapter] - \newtheorem{lemma} {\sjtu@name@lemma} [chapter] - \newtheorem{problem} {\sjtu@name@problem} [chapter] - \newtheorem{proposition}{\sjtu@name@proposition}[chapter] - \newtheorem{theorem} {\sjtu@name@theorem} [chapter] - \newtheorem*{remark} {\sjtu@name@remark} - \newtheorem*{solution} {\sjtu@name@solution} -} -\PassOptionsToPackage{amsmath,thmmarks,hyperref}{ntheorem} -\AtEndOfPackageFile*{ntheorem}{ - \theoremheaderfont{\sjtu@indent@box\bfseries\heiti} - \theorembodyfont{\normalfont} - \theoremseparator{\enskip} - \theoremsymbol{\ensuremath{\square}} - \newtheorem*{proof}{\sjtu@name@proof} - \theoremstyle{plain} - \theoremsymbol{} - \ifsjtu@nothm\else - \sjtu@def@theorem - \fi -} -\AtBeginOfPackageFile*{amsthm}{ - \newif\ifsjtu@openbox@defined - \@ifundefined{openbox}{ - \sjtu@openbox@definedfalse - }{ - \sjtu@openbox@definedtrue - \let\oldopenbox\openbox - \let\openbox\@undefined - } -} -\AtEndOfPackageFile*{amsthm}{ - \ifsjtu@openbox@defined - \let\openbox\oldopenbox - \fi - \let\sjtu@thmhead\thmhead@plain - \def\thmhead@plain{\sjtu@indent@box\sjtu@thmhead} - \newtheoremstyle{sjtuplain} - {}{} - {\normalfont}{} - {\bfseries\heiti}{} - {\ccwd}{} - \theoremstyle{sjtuplain} - \ifsjtu@nothm\else - \sjtu@def@theorem - \fi - \renewcommand\proofname\sjtu@name@proof - \renewenvironment{proof}[1][\proofname]{\par - \pushQED{\qed}% - \normalfont \topsep6\p@\@plus6\p@\relax - \trivlist - \item\relax - {\sjtu@indent@box\bfseries\heiti #1~} - \hspace\labelsep\ignorespaces - }{% - \popQED\endtrivlist\@endpefalse - } -} -\PassOptionsToPackage{algochapter}{algorithm2e} -\AtBeginOfPackageFile*{algorithm2e}{ - \let\old@chapter\@chapter -} -\AtEndOfPackageFile*{algorithm2e}{ - \let\@chapter\old@chapter - \SetAlgorithmName{\sjtu@name@algorithm}% - {\sjtu@name@algorithm}% - {\sjtu@name@listalgorithm} - \SetAlgoCaptionSeparator{~} - \def\listalgocfname{\listalgorithmcfname} - \newlistof{alg}{loa}{\listalgocfname} - \let\l@algocf\l@alg - \setlength{\cftalgindent}{1.5em} - \setlength{\cftalgnumwidth}{2.3em} - \renewcommand\cftalgpresnum{\sjtu@name@algorithm~} - \apptocmd{\sjtu@counter@without@chapter}{% - \counterwithout{algocf}{chapter} - \setcounter{algocf}{0} - }{}{} - \sjtu@patchcmd\algocf@latexcaption% - {\addcontentsline} - {\caption@iflist{\addcontentsline}{\@gobblethree}} - \AtEndPreamble{% - \addtolength{\cftalgnumwidth}{\widthof{\cftalgpresnum}} - } - \renewcommand\listofalgorithms{\sjtu@listof{algocf}} - \AtBeginDocument{% - \def\thealgocf{\thechapter\sjtu@style@fl@num@sep\arabic{algocf}} - } -} -\PassOptionsToPackage{chapter}{algorithm} -\AtEndOfPackageFile*{algorithm}{ - \floatname{algorithm}{\sjtu@name@algorithm} - \def\listalgorithmname{\sjtu@name@listalgorithm} - \newlistof{alg}{loa}{\listalgorithmname} - \let\l@algorithm\l@alg - \setlength{\cftalgindent}{1.5em} - \setlength{\cftalgnumwidth}{2.3em} - \renewcommand\cftalgpresnum{\sjtu@name@algorithm~} - \apptocmd{\sjtu@counter@without@chapter}{% - \counterwithout{algorithm}{chapter} - \setcounter{algorithm}{0} - }{}{} - \AtEndPreamble{% - \addtolength{\cftalgnumwidth}{\widthof{\cftalgpresnum}} - } - \renewcommand\listofalgorithms{\sjtu@listof{algorithm}} - \AtBeginDocument{% - \def\thealgorithm{\thechapter\sjtu@style@fl@num@sep\arabic{algorithm}} - } -} -\AtEndOfPackageFile*{listings}{ - \lstdefinestyle{lstStyleCode}{ - aboveskip=\medskipamount, - belowskip=\medskipamount, - basicstyle=\ttfamily\zihao{6}, - commentstyle=\slshape\color{black!60}, - stringstyle=\color{green!40!black!100}, - keywordstyle=\bfseries\color{blue!50!black}, - extendedchars=false, - upquote=true, - tabsize=2, - showstringspaces=false, - xleftmargin=1em, - xrightmargin=1em, - breaklines=false, - framexleftmargin=1em, - framexrightmargin=1em, - backgroundcolor=\color{gray!10}, - columns=flexible, - keepspaces=true, - texcl=true, - mathescape=true - } -} -\endinput -%% -%% End of file `sjtuthesis.cls'.