% \iffalse meta-comment % !TeX program = XeLaTeX % !TeX encoding = UTF-8 % % Copyright (C) 2017--2023 by Xiangdong Zeng <xdzeng96@gmail.com> % % 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'. % % The Current Maintainer of this work is Xiangdong Zeng. % % This work consists of the files fduthesis.dtx, % fduthesis-doc.dtx, % fduthesis-logo.dtx, % and the derived files fduthesis.ins, % fduthesis.cls, % fduthesis-en.cls, % fduthesis.def, % fdudoc.cls, % fdulogo.sty, % fdulogo-example.tex, % fduthesis-cover.tex, % fduthesis-en.tex, % fudan-emblem.pdf, % fudan-emblem-new.pdf, % fudan-name.pdf, % fduthesis.pdf, % fduthesis-en.pdf, % fduthesis-code.pdf, % and README.md. % %<*internal> \iffalse %</internal> % %<*readme> The `fduthesis` Class ===================== *LaTeX thesis template for Fudan University, v0.9a* Overview -------- This template supports doctoral or master dissertion and undergraduate thesis, both in Chinese or English. With the help of modern LaTeX technology, `fduthesis` aims to create a simple interface, a normative format, as well as a hackable class for the users. At present, `fduthesis` only supports XeTeX and LuaTeX engines. Support for pdfTeX and [ApTeX](https://github.com/clerkma/ptex-ng) is still under development. `fduthesis` only allows UTF-8 encoding. The documentation can be found in [fduthesis.pdf](http://mirrors.ctan.org/macros/latex/contrib/fduthesis/fduthesis.pdf) (in Chinese) or [fduthesis-en.pdf](http://mirrors.ctan.org/macros/latex/contrib/fduthesis/fduthesis-en.pdf) (in English). GitHub repository: <https://github.com/stone-zeng/fduthesis>. Installation ------------ To install `fduthesis`, you can use one of the following methods: - If you are running TeX Live, the simplest way is to run tlmgr install fduthesis - Download [fduthesis.tds.zip](http://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip) from CTAN, extract it in the root of one of your TDS trees, and update the filename database. - Get the source from GitHub: git clone https://github.com/stone-zeng/fduthesis.git Run `install-win.bat` (Windows) or `install-unix.sh` (Linux or macOS) to generate the templates and configuration files. These files would be found in a new-created `thesis` folder. You can enjoy `fduthesis` here at once. For permanent installation, you may move the following files into a directory where LaTeX will find them (e.g. `TEXMF/tex/latex/fduthesis/`): - `fduthesis.cls` - `fduthesis-en.cls` - `fduthesis.def` - `fdudoc.cls` - `fdulogo.sty` - `fudan-emblem.pdf` - `fudan-emblem-new.pdf` - `fudan-name.pdf` Do not forget to update the filename database afterwards. Contributing ------------ [Issues](https://github.com/stone-zeng/fduthesis/issues) and [pull requests](https://github.com/stone-zeng/fduthesis/pulls) are always welcome. License ------- This work may be distributed and/or modified under the conditions of the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), either version 1.3c of this license or (at your option) any later version. ----- Copyright (C) 2017–2023 by Xiangdong Zeng <xdzeng96@gmail.com>. %</readme> % %<*internal> \fi \begingroup \def\NameOfLaTeXe{LaTeX2e} \expandafter\endgroup\ifx\NameOfLaTeXe\fmtname\else \csname fi\endcsname %</internal> % %<*install> \input docstrip.tex \keepsilent \askforoverwritefalse \preamble Copyright (C) 2017--2023 by Xiangdong Zeng <xdzeng96@gmail.com> 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'. The Current Maintainer of this work is Xiangdong Zeng. This work consists of the files fduthesis.dtx, fduthesis-doc.dtx, fduthesis-logo.dtx, and the derived files fduthesis.ins, fduthesis.cls, fduthesis-en.cls, fduthesis.def, fdudoc.cls, fdulogo.sty, fdulogo-example.tex, fduthesis-cover.tex, fduthesis-en.tex, fudan-emblem.pdf, fudan-emblem-new.pdf, fudan-name.pdf, fduthesis.pdf, fduthesis-en.pdf, fduthesis-code.pdf, and README.md. \endpreamble \generate{ \usedir{tex/latex/fduthesis} \file{\jobname.cls} {\from{\jobname.dtx}{class}} \file{\jobname-en.cls} {\from{\jobname.dtx}{class-en}} \file{\jobname.def} {\from{\jobname.dtx}{definition}} \file{fdudoc.cls} {\from{\jobname.dtx}{doc} \from{\jobname-doc.dtx}{doc}} \file{fdulogo.sty} {\from{\jobname.dtx}{logo} \from{\jobname-logo.dtx}{logo}} \file{fdulogo-example.tex} {\from{\jobname.dtx}{ex-logo} \from{\jobname-logo.dtx}{ex-logo}} \file{\jobname-cover.tex} {\from{\jobname.dtx}{cover} \from{\jobname-logo.dtx}{cover}} %<*internal> \usedir{source/latex/fduthesis} \file{\jobname.ins} {\from{\jobname.dtx}{install}} %</internal> \usedir{doc/latex/fduthesis} \nopreamble\nopostamble \file{README.md} {\from{\jobname.dtx}{readme}} } \obeyspaces \Msg{*************************************************************} \Msg{* *} \Msg{* To finish the installation you have to move the following *} \Msg{* files into a directory searched by TeX: *} \Msg{* *} \Msg{* The recommended directory is TDS:tex/latex/fduthesis *} \Msg{* *} \Msg{* fduthesis.cls *} \Msg{* fduthesis-en.cls *} \Msg{* fduthesis.def *} \Msg{* fdudoc.cls *} \Msg{* fdulogo.sty *} \Msg{* *} \Msg{* To produce the documentation, run the file fduthesis.dtx *} \Msg{* through XeLaTeX. *} \Msg{* *} \Msg{* Happy TeXing! *} \Msg{* *} \Msg{*************************************************************} \endbatchfile %</install> % %<*internal> \fi %</internal> % %<class|class-en|doc|logo>\NeedsTeXFormat{LaTeX2e}[2020/10/01] %<*!(driver|install|ex-logo|cover)> %<!readme>\GetIdInfo $Id: fduthesis.dtx 0.9a 2023-05-27 12:00:00Z Xiangdong Zeng <xdzeng96@gmail.com> $ %<class> {Thesis template for Fudan University} %<class>\ProvidesExplClass{\ExplFileName} %<class-en> {Thesis template for Fudan University (English version)} %<class-en>\ProvidesExplClass{\ExplFileName-en} %<definition> {Definition file for fduthesis} %<definition>\ProvidesExplFile{\ExplFileName.def} %<doc> {Documentation class for fduthesis} %<doc>\ProvidesExplClass{fdudoc} %<logo> {Fudan University's Visual Identity} %<logo>\ProvidesExplPackage{fdulogo} %<!readme> {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} %</!(driver|install|ex-logo|cover)> %<*driver> % \PassOptionsToPackage{showframe}{geometry} \documentclass{fdudoc} \usepackage{xeCJKfntef} \hypersetup{ pdftitle = {fduthesis: ������������������������}, pdfauthor = {���������}} % ������������������������������������������������������������������������������������ \def\FSID{���{\xeCJKsetup{PunctStyle=banjiao}���}���} % U+3002 \def\FSFW{���{\xeCJKsetup{PunctStyle=banjiao}���}���} % U+FF0E \def\COFW{���{\xeCJKsetup{PunctStyle=banjiao}���}���} % U+FF1A \def\SCFW{���{\xeCJKsetup{PunctStyle=banjiao}���}���} % U+FF1B %^^A! \PassOptionsToPackage{scheme=plain, linespread=1.1}{ctex} %^^A! \documentclass{fdudoc} %^^A! \hypersetup{ %^^A! pdftitle = {fduthesis: LaTeX Thesis Template for Fudan University}, %^^A! pdfauthor = {Xiangdong Zeng}} %^^A! \ctexset{ %^^A! section = {name = {}, format+ = \raggedright}, %^^A! subsubsection/tocline = {\CTEXnumberline{#1}#2}} %^^A! \pagestyle{headings} %^^A! \def\FSID{{\xeCJKsetup{PunctStyle=banjiao}���}} %^^A! \def\FSFW{{\xeCJKsetup{PunctStyle=banjiao}���}} %^^A! \title{\textcolor{MaterialIndigo800}{\textbf{fduthesis: ������������������������}}} \author{���������} \date{2023/05/27\quad v0.9a% \thanks{\url{https://github.com/stone-zeng/fduthesis}.}} %^^A! \title{\textcolor{MaterialIndigo800}{% %^^A! \textbf{The \textsf{fduthesis} Class \\ %^^A! \LaTeX{} Thesis Template for Fudan University}}} %^^A! \author{Xiangdong Zeng} %^^A! \date{2023/05/27\quad v0.9a% %^^A! \thanks{\url{https://github.com/stone-zeng/fduthesis}.}} %^^A! \begin{document} %^^A! \begin{document} %^^A! \DisableImplementation %<!--CODEDOC--> \EnableImplementation %<!--CODEDOC--> \def\FDUCODEDOC{} \DocInput{fduthesis.dtx} %<!--CODEDOC--> \DocInput{fduthesis-doc.dtx,fduthesis-logo.dtx} %<!--CODEDOC--> \IndexLayout %<!--CODEDOC--> \PrintChanges %<!--CODEDOC--> \PrintIndex \end{document} %</driver> % \fi % % \changes{v0.1}{2017/02/15}{���������������������} % \changes{v0.2}{2017/02/19}{������ Git ��������������������������������� GitHub���} % \changes{v0.3}{2017/02/21}{������ \cls{doc} ��� \pkg{DocStrip}���} % \changes{v0.3}{2017/03/04}{������ \LuaLaTeX{}���} % \changes{v0.3}{2017/03/20}{���������������������} % \changes{v0.3}{2017/05/26}{������ Travis CI ���������������������} % \changes{v0.3}{2017/06/23}{���������������������������������������} % \changes{v0.3}{2017/07/05}{������������������} % \changes{v0.3}{2017/07/10}{���������������������} % \changes{v0.3}{2017/07/19}{������ \pkg{l3docstrip} ���������������������} % \changes{v0.3}{2017/07/28}{������������������������������������} % \changes{v0.4}{2017/08/03}{������ \file{.dtx} ���������} % \changes{v0.4}{2017/08/11}{���������������������������} % \changes{v0.6}{2017/11/23}{������ \pkg{ctex} v2.4.11���} % \changes{v0.6}{2017/11/29}{������������������������������} % \changes{v0.7}{2018/01/26}{������ \pkg{l3build} ���������������������} % \changes{v0.7}{2018/01/31}{������������ \file{fduthesis-user.def}���} % \changes{v0.7}{2018/03/04}{���������������������������������������������������} % \changes{v0.7a}{2018/04/09}{������������������������ CTAN���} % \changes{v0.7b}{2018/04/29}{������ \TeXLive{} 2018���} % \changes{v0.7b}{2018/05/06}{���������������������������������������������} % %^^A ������������ " ��������������������������������� % \DeleteShortVerb\" %^^A! \DeleteShortVerb\" %^^A! % %^^A ��������������������������� %^^A+ % \newgeometry{ % left = 1.25 in, % right = 1.25 in, % top = 1.25 in, % bottom = 1.00 in % } % % \maketitle % \vfill % \begin{center} % \includegraphics[width=8cm]{../logo/fduthesis-cover.pdf} % \end{center} % \vfill % \thispagestyle{plain} % \clearpage % % \tableofcontents % %^^A- % % \EnableDocumentation %^^A \DisableDocumentation % % \begin{documentation} % %^^A ������������������������ %^^A+ % \newgeometry{ % left = 1.65 in, % right = 0.80 in, % top = 1.25 in, % bottom = 1.00 in % } % %^^A- % % \section{������} %^^A! \section{Introduction} %^^A! % % ��������������������������������������������������� \LaTeX{} ������������������������������ % \begin{itemize} % \item ��������������������������������������������� \cite{������������������������������������}��������������������� 2001 ������ % ������������������������������ 2004 ��������������������� % \item Pandoxie ��������� \cls{FDU-Thesis-Latex} \cite{pandoxie2014fduthesislatex}������������������������ % ��������������������������������������������������������������������� % \item richarddzh ��������������������������� \cls{fudan-thesis} \cite{richard2016fudanthesis}��� % \end{itemize} % ��������������������������������������������������������������������������������������������������� \cite{thuthesis}��� % ������������ \cite{pkuthss}��������������� \cite{cquthesis}��������������������������� \cite{ustcthesis}��� % ��������������������� \cite{ucasthesis} ������������������������������ \cite{sjtuthesis} ��������������������������������� % ������������������������������������������������������������������������������ % % ��������������������������������������������������������� \LaTeX3 \cite{source3} ��������������������������������������������� % ��������������������������������� %^^A! \cls{fduthesis} is a thesis template for Fudan University. %^^A! This template is mostly written in \LaTeX3 syntax, and %^^A! provides a simple interface for users. %^^A! % % \subsection*{\LaTeX{} ������} %^^A! \subsection*{Getting started with \LaTeX{}} %^^A! % % ��������������������� \LaTeX{} ������������������������������������ \LaTeX{} ��������������������������������������������������� % ���������������������\LaTeX{} ���������\cite{���������2013latex������} ������������������\pkg{lshort}��� \cite{lshort} % ��������������������� \cite{lshort-zh-cn}������������������������ \LaTeX{} ������������������������������������������ %^^A! This documentation is \emph{not} a \LaTeX{} tutorial at %^^A! starter's level. If you are totally a newbie, please read some %^^A! introductions like the famous \pkg{lshort}. Of course, there %^^A! are countless \LaTeX{} tutorials on the Internet. You can %^^A! choose whatever you like. %^^A! % % \subsection*{���������������} %^^A! \subsection*{About this documentation} %^^A! % % ��������������������������������������������������������������������������������������� \pkg{xeCJK} ���������\cls{fduthesis} % ��������������������������������������������������������� \cs{fdusetup} ���������\env{abstract} ���������\TeX{} ������ % \file{thesis.tex} ��������������������������������������������������������������������������� \meta{������������}��� % \meta{English title} ������������������������������������������������������������������������������������������������������ % ������������������ %^^A! In this documentation, different typefaces are used to %^^A! represent different contents. Packages and classes are shown %^^A! in sans-serif font, e.g.\ \pkg{xeCJK} package and %^^A! \cls{fduthesis} class. Commands and file names are shown in %^^A! monospaced font, e.g.\ command \cs{fdusetup}, environment %^^A! \env{abstract} and \TeX{} document \file{thesis.tex}. %^^A! Italic-shaped font with angle brackets outside means arguments, %^^A! e.g.\ \meta{English title}. However, you do not need to type %^^A! the brackets when using these commands. The example code has %^^A! proper syntax highlighting so it will be much easier to read. %^^A! % % ������������������������������������������������ \LaTeX{} ������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������������������������������������������������ %^^A! \LaTeX{} code lines will have a blue line on their left, while %^^A! for command lines there will be a pink line. The options, %^^A! commands and environments in \cls{fduthesis} will be surrounded %^^A! by two horizontal lines. Their usages and descriptions are %^^A! provided at the same time. %^^A! % % ������������������������������������������������������������������ % \begin{itemize} % \item ������������������ \rexptarget\rexpstar{} ���������������������\emph{������������}������������ % \item ������������������ \exptarget\expstar{} ���������������������\emph{������������}������������ % \item ��������������������������������������������������������������������������������������������������������������������� % \end{itemize} %^^A! The options, commands and environments in \cls{fduthesis} can be %^^A! divided into the following three types: %^^A! \begin{itemize} %^^A! \item Those can be only used in \emph{Chinese templates} are %^^A! indicated by \rexptarget\rexpstar{}. %^^A! \item Those can be only used in \emph{English templates} are %^^A! indicated by \rexptarget\expstar{}. %^^A! \item If they do not have marks afterwards, then you can use %^^A! them in both Chinese and English templates. %^^A! \end{itemize} %^^A! % % \section{������} %^^A! \section{Installation} %^^A! % % \subsection{������ \cls{fduthesis}} %^^A! \subsection{Obtaining \cls{fduthesis}} %^^A! % % \subsubsection{������������} %^^A! \subsubsection{Standard installation} %^^A! % % ������������������������������������������������������������������ \cls{fduthesis}������������ \TeXLive{} ��������������������� % ������������������������ % \begin{shellexample}[morekeywords={tlmgr,install}] % tlmgr install fduthesis % \end{shellexample} % ��������������������������������������������������� \TeXLive{}������ \cls{fduthesis} ������������������������������������������ % ������������������������������ % \begin{shellexample}[morekeywords={tlmgr,update},emph={--all}] % tlmgr update --all % \end{shellexample} % ������������������������������ %^^A! If there are no special reasons, it is always recommended to %^^A! install \cls{fduthesis} with a package manager. For example, %^^A! the following command will install the package in \TeXLive{} %^^A! (administrator permission may be required): %^^A! \begin{shellexample}[morekeywords={tlmgr,install}] %^^A! tlmgr install fduthesis %^^A! \end{shellexample} %^^A! % % ��� \TeXLive{} ��� \MiKTeX{} ������������������������������������������������������������������������������ %^^A! In \TeXLive{} and \MiKTeX{}, you can also install \cls{fduthesis} %^^A! through a graphical interface. It's rather simple and will not be %^^A! described here. %^^A! % % \subsubsection{������������} %^^A! \subsubsection{Install manually} %^^A! % % ��������������� CTAN ������������������������������������������ TDS ������������ % \begin{itemize} % \item ��� CTAN ��������� \cls{fduthesis} ��� % \href{https://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip}{TDS ���������}��� % \item ������������������ \file{fduthesis.tds.zip} ��������������������� \TeX{} ������������������ TDS ������������ % \item ������ \texttt{mktexlsr} ������������������������������������������������ % \end{itemize} %^^A! If you want to download the template from CTAN and install it %^^A! manually, the recommended way is to use the TDS ZIP file: %^^A! \begin{itemize} %^^A! \item Download the \href{http://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip}% %^^A! {TDS ZIP file} for \cls{fduthesis}; %^^A! \item Copy all the files in \file{fduthesis.tds.zip} into the %^^A! local TDS directory of \TeX{} distribution. %^^A! \item Run \texttt{mktexlsr} to update the ls-R database. %^^A! \end{itemize} %^^A % % \subsubsection{������������} %^^A! \subsubsection{Development version} %^^A! % % CTAN ��������������� \cls{fduthesis} ��������������������������������������������������� bug ��������������������������������� % ��������������������������������������� GitHub ��������������������������������������������������� % \begin{itemize} % \item ������ \href{https://github.com/stone-zeng/fduthesis}{������������}������������Code��������������������� % ���Download ZIP������������ \file{fduthesis-main.zip}��������������������� Git ��������������������������������������� % ��������������������� % \begin{shellexample}[gobble=7,alsoletter={.},morekeywords={git,clone}] % git clone https://github.com/stone-zeng/fduthesis.git % \end{shellexample} % \item ������ \file{install-win.bat}���Windows ������������ \file{install-unix.sh}���Linux ��� macOS % ������������������������������������������ \file{thesis} ��������������������� % \end{itemize} %^^A! On CTAN, only the stable version of \cls{fduthesis} is provided, where new features and %^^A! bug fixes may not be included in time. To use the latest development version on GitHub, %^^A! you can use the install script: %^^A! \begin{itemize} %^^A! \item Open the project's \href{https://github.com/stone-zeng/fduthesis}{homepage}, click %^^A! ``Code'' button and choose ``Download ZIP'' to download \file{fduthesis-main.zip}. %^^A! If you have git program on your computer, you can also clone the repository directly: %^^A! \begin{shellexample}[gobble=5,alsoletter={.},morekeywords={git,clone}] %^^A! git clone https://github.com/stone-zeng/fduthesis.git %^^A! \end{shellexample} %^^A! \item Run \file{install-win.bat} (Windows) or \file{install-unix.sh} (Linux or macOS), %^^A! all the necessary files will be found in the \file{thesis} folder then. %^^A! \end{itemize} %^^A! % % \subsubsection{Overleaf} %^^A! \subsubsection{Overleaf} %^^A! % % \cls{fduthesis} ������������ \href{https://www.overleaf.com/latex/templates/fduthesis-latex-thesis-template-for-fudan-university/svtdhhstkmkt}{Overleaf ���������}��� % ��������������������������������������������� %^^A! \cls{fduthesis} also provides the \href{https://www.overleaf.com/latex/templates/fduthesis-latex-thesis-template-for-fudan-university/svtdhhstkmkt}{Overleaf version}. %^^A! You can follow the link and login to edit directly on the web. %^^A! % % \subsection{������������} %^^A! \subsection{Composition of the template} %^^A! % % ������������������������������������������������������������������������������������������������������������������������ % ���~\ref{tab:fduthesis-components}��� %^^A! There are several parts in \cls{fduthesis}, including kernel template %^^A! classes, configuration files, affiliated packages and user's guides. %^^A! More details are listed in table~\ref{tab:fduthesis-components}. %^^A! % % \begin{table}[ht] % \caption{\cls{fduthesis} ���������������������} % \label{tab:fduthesis-components} % \centering % \small % \begin{tabular}{ll} % \toprule % \textbf{������} & \textbf{������������} \\ % \midrule % \file{fduthesis.cls} & ��������������������� \\ % \file{fduthesis-en.cls} & ��������������������� \\ % \file{fduthesis.def} & ��������������������������������������������������������������������� \\ % \file{fdudoc.cls} & ��������������������� \\ % \file{fdulogo.sty} & ������������������������������ \\ % \file{fudan-emblem.pdf} & ������ \\ % \file{fudan-emblem-new.pdf} & ��������������������� \\ % \file{fudan-name.pdf} & ������������ \\ % \file{README.md} & ������������ \\ % \ifdefined\FDUCODEDOC % \file{fduthesis.pdf} & ������������������ \\ % \file{fduthesis-en.pdf} & ������������������ \\ % \file{fduthesis-code.pdf} & ��������������������������������� \\ % \else % \file{fduthesis.pdf} & ��������������������������������� \\ % \file{fduthesis-en.pdf} & ������������������ \\ % \file{fduthesis-code.pdf} & ������������������ \\ % \fi % \bottomrule % \end{tabular} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{The main components of \cls{fduthesis}} %^^A! \label{tab:fduthesis-components} %^^A! \centering %^^A! \begin{tabular}{lp{24em}} %^^A! \toprule %^^A! \textbf{Files} & \textbf{Descriptions} \\ %^^A! \midrule %^^A! \file{fduthesis.cls} & Document class for Chinese thesis. \\ %^^A! \file{fduthesis-en.cls} & Document class for English thesis.\\ %^^A! \file{fduthesis.def} & Configuration parameters file %^^A! for \cls{fduthesis}. Please do \emph{not} modify it. \\ %^^A! \file{fdudoc.cls} & Document class for user guides. \\ %^^A! \file{fdulogo.sty} & Fudan University's visual identity. \\ %^^A! \file{fudan-emblem.pdf} & University emblem. \\ %^^A! \file{fudan-emblem-new.pdf} & University emblem (revised version). \\ %^^A! \file{fudan-name.pdf} & Figure of university name. \\ %^^A! \file{README.md} & The brief introduction. \\ %^^A! \file{fduthesis.pdf} & User's guide in Chinese. \\ %^^A! \file{fduthesis-en.pdf} & User's guide in English (this %^^A! document). \\ %^^A! \file{fduthesis-code.pdf} & Code implementation. \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \end{table} %^^A! % % \section{������������} %^^A! \section{User's guide} %^^A! % % \subsection{������������} %^^A! \subsection{Getting started} %^^A! % % ������������������������ \TeX{} ��������������������� \cls{fduthesis} ��������������������� %^^A! Here is a minimal \TeX{} file for \cls{fduthesis}: %^^A+ % \begin{latexexample}[deletetexcs={\documentclass}, % moretexcs={\chapter},morekeywords={\documentclass}, % emph={[2]document}] % % thesis.tex % \documentclass{fduthesis} % \begin{document} % \chapter{������} % \section{Welcome to fduthesis!} % ���������\LaTeX{}��� % \end{document} % \end{latexexample} %^^A- %^^A! % % ������ \ref{subsec:������������}~��������������������������������������������������� % ������ 5 ��������������������������������������������������������������������� %^^A! Compile this file under the instructions in %^^A! subsection~\ref{subsec:compilation}, you will get a 5-page article. %^^A! Of course, most of it will be blank, as you may predicate. %^^A! % % ��������������������������������������������� %^^A! The English version can be used in the same way: %^^A+ % \begin{latexexample}[deletetexcs={\documentclass}, % moretexcs={\chapter},morekeywords={\documentclass}, % emph={[2]document}] % % thesis-en.tex % \documentclass{fduthesis-en} % \begin{document} % \chapter{Welcome} % \section{Welcome to fduthesis!} % Hello, \LaTeX{}! % \end{document} % \end{latexexample} %^^A- % ������������������������������������������������������������������������������������������������ % ������������������ %^^A! The differences between English and Chinese version only %^^A! live in the main body. Thesis cover, instructors list and %^^A! declaration page are still printed in Chinese. %^^A! % % \subsection{������������} \label{subsec:������������} %^^A! \subsection{Compilation} \label{subsec:compilation} %^^A! % % ������������������ \pdfTeX{} ������������������ \XeLaTeX{} ��� \LuaLaTeX{} % ��������������������� \XeLaTeX{}������������������������������������������������������������ % ������������������������������������ %^^A! \cls{fduthesis} does NOT support \pdfTeX{}. Please use %^^A! \XeLaTeX{} or \LuaLaTeX{} to compile, and \XeLaTeX{} is %^^A! recommended. To get the correct table of contents, footnotes %^^A! and cross-references, you need to compile the source file at %^^A! least twice. %^^A! % % ������������������������������ \TeX{} ��������������� \file{thesis.tex}��� % ������ \XeLaTeX{} ��������������������������������������� % \begin{shellexample}[morekeywords={xelatex}] % xelatex thesis % xelatex thesis % \end{shellexample} % ��������� \pkg{latexmk}��� % \begin{shellexample}[morekeywords={latexmk},emph={-xelatex}] % latexmk -xelatex thesis % \end{shellexample} %^^A! In the following example, suppose your \TeX{} source file is %^^A! \file{thesis.tex}. Please execute the following commands if %^^A! you want to use \XeLaTeX{}: %^^A! \begin{shellexample}[morekeywords={xelatex}] %^^A! xelatex thesis %^^A! xelatex thesis %^^A! \end{shellexample} %^^A! You can use \pkg{latexmk} as well: %^^A! \begin{shellexample}[morekeywords={latexmk},emph={-xelatex}] %^^A! latexmk -xelatex thesis %^^A! \end{shellexample} %^^A! % % ������ \LuaLaTeX{} ��������������������������������������� % \begin{shellexample}[morekeywords={lualatex}] % lualatex thesis % lualatex thesis % \end{shellexample} % ������ % \begin{shellexample}[morekeywords={latexmk},emph={-lualatex}] % latexmk -lualatex thesis % \end{shellexample} %^^A! \LuaLaTeX{} can be used in a similar way: %^^A! \begin{shellexample}[morekeywords={lualatex}] %^^A! lualatex thesis %^^A! lualatex thesis %^^A! \end{shellexample} %^^A! or %^^A! \begin{shellexample}[morekeywords={latexmk},emph={-lualatex}] %^^A! latexmk -lualatex thesis %^^A! \end{shellexample} %^^A! % % \subsection{������������} %^^A! \subsection{Options of the template} %^^A! % % ��������������������������������������������������������������������������������� % \begin{latexexample}[deletetexcs={\documentclass}, % morekeywords={\documentclass}] % \documentclass(*\oarg{������������}*){fduthesis} % \documentclass(*\oarg{������������}*){fduthesis-en} % \end{latexexample} %^^A! You can specify some \emph{template options} when loading %^^A! \cls{fduthesis}: %^^A! \begin{latexexample}[deletetexcs={\documentclass}, %^^A! morekeywords={\documentclass}] %^^A! \documentclass(*\oarg{options}*){fduthesis} %^^A! \documentclass(*\oarg{options}*){fduthesis-en} %^^A! \end{latexexample} %^^A! % % ������������������������������������������������ \opt{true} ��� \opt{false} % ���������������������������������\kvopt{\meta{������}}{true} ���������|= true|��� % ��������������� %^^A! Some options are \emph{boolean} --- they only take the value %^^A! \opt{true} or \opt{false}. For these options, you can %^^A! abbreviate ``\kvopt{\meta{option}}{true}'' simply to %^^A! ``\opt{\meta{option}}''. %^^A! % %^^A+ % \begin{function}[added=2018-02-01]{type} % \begin{fdusyntax}[emph={[1]type}] % type = (*<doctor|master|(bachelor)>*) % \end{fdusyntax} %^^A- % ��������������������������������������������������������������������������������������������� % ��������������� % \end{function} %^^A! Choose the type of your thesis. The three options represent %^^A! doctoral dissertation, master degree thesis and undergraduate %^^A! thesis, respectively. %^^A! \end{function} %^^A! % % \begin{function}{oneside,twoside} % ������������������������������������������ \opt{twoside}��������������������������� % ��������������������������������������������� % \end{function} %^^A! \begin{function}{oneside,twoside} %^^A! Specify whether single or double sided output should be %^^A! generated. \opt{twoside} will be chosen by default. These %^^A! option will determine where the new chapters begin and how %^^A! the headers display. The option \opt{twoside} does %^^A! \emph{not} tell the printer to actually make a two-sided %^^A! printout. %^^A! \end{function} %^^A! % % ������������������\opt{twoside}������������������������������������������������������ % ���������������������������������������������������\opt{oneside}��������������������� % ��������������������������������������������������������������������������������������������� % ��������������� %^^A! If choosing \opt{twoside}, chapters will begin at the odd pages %^^A! (right hand). However, they will begin at arbitrary pages %^^A! available when choosing \opt{oneside}. Table of contents, %^^A! abstract and the list of symbols are considered as chapters and %^^A! processed in the same way. %^^A! % % ������������������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������������������ % ������������������������������������������������������������ % ��������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������������� %^^A! At two-sided mode, left headers on the even pages (left hand) %^^A! in \emph{main body} will show the title of chapters, while the %^^A! right headers on the odd pages (right hand) will show the %^^A! title of sections. Headers in \emph{front matter} have the %^^A! same style, but they will only show the title as ``Contents'', %^^A! ``Abstract'', etc. %^^A! %^^A! At one-sided mode, both left and right headers on \emph{all} %^^A! pages in main body will be shown. The text is the title of %^^A! chapters and sections, respectively. In front matter, there %^^A! are only middle headers, which show the corresponding titles. %^^A! % % \begin{function}{draft} % \begin{fdusyntax}[emph={[1]draft}] % draft = (*<\TFF>*) % \end{fdusyntax} % ������������������������������������������������ % \end{function} %^^A! \begin{function}{draft} %^^A! \begin{fdusyntax}[emph={[1]draft}] %^^A! draft = (*<\TFF>*) %^^A! \end{fdusyntax} %^^A! Enable draft mode. Default off. %^^A! \end{function} %^^A! % % ������������������������������������������������������������������������ % ������������������������������������ % \begin{itemize} % \item ��������������������������������������������� % \item ������������������������������������������������������ % \item ��������������������������������������� PDF ��������� % \item ��������������������� % \end{itemize} %^^A! \opt{draft} is a global option and will affect many packages. %^^A! You may notice the following changes when using \opt{draft}: %^^A! \begin{itemize} %^^A! \item Lines with overfull \tn{hbox}'s will be marked with %^^A! a thick black square on the right margin. %^^A! \item Will not include graphics files actually, but instead %^^A! print a box of the size the graphic would take up, as well %^^A! as the file name. %^^A! \item Will not make hyperlinks and PDF bookmarks. %^^A! \item Show the page frames. %^^A! \end{itemize} %^^A! % % \begin{function}[added=2018-01-31]{config} % \begin{fdusyntax}[emph={[1]config}] % config = (*\marg{������}*) % \end{fdusyntax} % ��������������������������������������������������������������������������������� % \end{function} %^^A! \begin{function}[added=2018-01-31]{config} %^^A! \begin{fdusyntax}[emph={[1]config}] %^^A! config = (*\marg{file}*) %^^A! \end{fdusyntax} %^^A! File name of user profile. Default value is empty, so no %^^A! profile is loaded automatically. %^^A! \end{function} %^^A! % % \subsection{������������} %^^A! \subsection{More options} %^^A! % % \begin{function}{\fdusetup} % \begin{fdusyntax}[morekeywords={\fdusetup}] % \fdusetup(*\marg{������������}*) % \end{fdusyntax} % ������������������������������������������������������������������������������������������ % ��������������������������������������� \cs{fdusetup} ������������ % \end{function} %^^A! \begin{function}{\fdusetup} %^^A! \begin{fdusyntax}[morekeywords={\fdusetup}] %^^A! \fdusetup(*\marg{key-value list}*) %^^A! \end{fdusyntax} %^^A! \cls{fduthesis} has provided a number of options, which %^^A! can be given via the general command \cs{fdusetup}. %^^A! \end{function} %^^A! % % \cs{fdusetup} ��������������������������������������������������������������������������� % ��������������� \kvopt{\meta{key}}{\meta{value}} ��������������������������� % \meta{value} ������������������������������������������������������������������������������ % ������������������������������\textbf{������}������������������ %^^A! The argument of \cs{fdusetup} is a set of comma-separated option list. %^^A! The options usually have the form of \kvopt{\meta{key}}{\meta{value}} %^^A! and in some cases \meta{value} can be omitted. %^^A! For the same option, the values given later will override the %^^A! the previous ones. Default values are indicated in %^^A! \textbf{boldface} in the following descriptions. %^^A! % % \cs{fdusetup} ������ \LaTeX3 ������������������������������������������������������ % ���������������������������������������������|=|��������������������������������������������������� % ��������������������������������������� %^^A! \cs{fdusetup} follows \LaTeX3 key-value style, and different %^^A! types as well as various levels options are supported. In the %^^A! key-value list, spaces around ``|=|'' will be trimmed; however, %^^A! blank lines should never appear in the argument. %^^A! % % ������������������������������������������������������ \kvopt{\meta{������}}{true} % ���������\kvopt{}{true}������ %^^A! Similar with template options, ``\kvopt{\meta{option}}{true}'' %^^A! can be abbreviated to \opt{\meta{option}} for boolean type. %^^A! % % ��������������������������������������� \opt{style} ��� \opt{info} ������������������ % ��������������������������������������� %^^A! Some options, such as \opt{style} and \opt{info}, may have %^^A! sub-options. They can be set by the following two equivalent %^^A! methods: %^^A+ % \begin{latexexample}[morekeywords={\fdusetup}, % emph={[1]style,cjk-font,font-size,info,title,title*,author,author*,department}] % \fdusetup{ % style = {cjk-font = adobe, font-size = -4}, % info = { % title = {������������������������}, % title* = {On the Electrodynamics of Moving Bodies}, % author = {��������������������������}, % author* = {Albert Einstein}, % department = {������������} % } % } % \end{latexexample} %^^A- % ������ %^^A! or %^^A+ % \begin{latexexample}[morekeywords={\fdusetup}, % emph={[1]style,cjk-font,font-size,info,title,title*,author,author*,department}] % \fdusetup{ % style/cjk-font = adobe, % style/font-size = -4, % info/title = {������������������������}, % info/title* = {On the Electrodynamics of Moving Bodies}, % info/author = {��������������������������}, % info/author* = {Albert Einstein}, % info/department = {������������} % } % \end{latexexample} %^^A- %^^A! % % ������ ���|/|��� ������������������������������������������ %^^A! Note that you may \emph{not} put spaces around ``|/|''. %^^A! % % \subsubsection{������������} \label{subsubsec:������������} %^^A! \subsubsection{Style and format} \label{subsubsec:style-and-format} %^^A! % % \begin{function}{style} % \begin{fdusyntax}[emph={[1]style}] % style = (*\marg{������������}*) % style/(*\meta{key}*) = (*\meta{value}*) % \end{fdusyntax} % ��������������������������������������������������������������������������������� % \end{function} %^^A! \begin{function}{style} %^^A! \begin{fdusyntax}[emph={[1]style}] %^^A! style = (*\marg{key-value list}*) %^^A! style/(*\meta{key}*) = (*\meta{value}*) %^^A! \end{fdusyntax} %^^A! This general option is for setting the thesis style and format. %^^A! See the following details. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[updated=2019-03-05]{style/font} % \begin{fdusyntax}[emph={[1]font}] % font = (*<garamond|libertinus|lm|palatino|(times)|times*|none>*) % \end{fdusyntax} %^^A- % ���������������������������������������������������������������~\ref{tab:font}��� % \end{function} %^^A! Set fonts (including math fonts). The details can be found in table~\ref{tab:font}. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \centering % \begin{threeparttable} % \caption{������������������} % \label{tab:font} % \small % \begin{tabular}{ccccc} % \toprule % & \textbf{������������} & \textbf{���������������} & \textbf{������������} & \textbf{������������} \\ % \midrule % |garamond| & EB Garamond & Libertinus Sans & LM Mono\tnote{a} & Garamond Math \\ % |libertinus| & Libertinus Serif & Libertinus Sans & LM Mono & Libertinus Math \\ % |lm| & LM Roman & LM Sans & LM Mono & LM Math \\ % |palatino| & TG Pagella\tnote{b} & Libertinus Sans & LM Mono & TG Pagella Math \\ % |times| & XITS & TG Heros & TG Cursor & XITS Math \\ % |times*|\tnote{c} & Times New Roman & Arial & Courier New & XITS Math \\ % \bottomrule % \end{tabular} % \begin{tablenotes} % \item[a] ���LM������ Latin Modern ������������ % \item[b] ���TG������ TeX Gyre ������������ % \item[c] ������������Times New Roman���Arial ��� Courier New ������������������ % ������������ \TeXLive{} ��������������������� Windows ��� macOS ��������������������������� % \end{tablenotes} % \end{threeparttable} % \end{table} %^^A! \begin{table}[ht] %^^A! \begin{threeparttable} %^^A! \caption{Font configuration} %^^A! \label{tab:font} %^^A! \centering %^^A! \begin{tabular}{ccccc} %^^A! \toprule %^^A! & \textbf{Roman} & \textbf{Sans-serif} & \textbf{Monospaced} & \textbf{Math} \\ %^^A! \midrule %^^A! |garamond| & EB Garamond & Libertinus Sans & LM Mono\tnote{a} & Garamond Math \\ %^^A! |libertinus| & Libertinus Serif & Libertinus Sans & LM Mono & Libertinus Math \\ %^^A! |lm| & LM Roman & LM Sans & LM Mono & LM Math \\ %^^A! |palatino| & TG Pagella\tnote{b} & Libertinus Sans & LM Mono & TG Pagella Math \\ %^^A! |times| & XITS & TG Heros & TG Cursor & XITS Math \\ %^^A! |times*|\tnote{c} & Times New Roman & Arial & Courier New & XITS Math \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \begin{tablenotes} %^^A! \item[a] ``LM'' is the abbreviation of Latin Modern. %^^A! \item[b] ``TG'' is the abbreviation of TeX Gyre. %^^A! \item[c] Here, Times New Roman, Arial and Courier New are commercial fonts. They are %^^A! installed on Windows and macOS by default. %^^A! \end{tablenotes} %^^A! \end{threeparttable} %^^A! \end{table} % %^^A+ % \begin{function}[rEXP,updated=2019-03-05]{style/cjk-font} % \begin{fdusyntax}[emph={[1]cjk-font}] % cjk-font = (*<adobe|(fandol)|founder|mac|sinotype|sourcehan|windows|none>*) % \end{fdusyntax} %^^A- % ���������������������������������������~\ref{tab:cjk-font}��� % \end{function} %^^A! Set CJK (Chinese, Japanese and Korean) fonts. The details can be found in %^^A! table~\ref{tab:cjk-font}. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \caption{������������������} % \label{tab:cjk-font} % \centering % \small % \begin{tabular}{ccccc} % \toprule % & \textbf{������������������������} & \textbf{���������������������������} & \textbf{������������������������} & \textbf{������} \\ % \midrule % |adobe| & Adobe ������ & Adobe ������ & Adobe ������ & Adobe ������ \\ % |fandol| & Fandol ������ & Fandol ������ & Fandol ������ & Fandol ������ \\ % |founder| & ������������ & ������������ & ������������ & ������������ \\ % |mac| & ������������������-��� & ������������������-��� & ������������ & ������������������-��� \\ % |sinotype| & ������������ & ������������ & ������������ & ������������ \\ % |sourcehan| & ������������ & ������������ & --- & --- \\ % |windows| & ������������������ & ������������������ & ������������������ & ������������������ \\ % \bottomrule % \end{tabular} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{CJK font configuration} %^^A! \label{tab:cjk-font} %^^A! \centering %^^A! \begin{tabular}{cccc} %^^A! \toprule %^^A! & \textbf{Roman (song)} & \textbf{Sans-serif (hei)} & \textbf{Monospaced (fang)} \\ %^^A! \midrule %^^A! |adobe| & Adobe Song Std & Adobe Heiti Std & Adobe Fangsong Std \\ %^^A! |fandol| & FandolSong & FandolHei & FandolFang \\ %^^A! |founder| & FZShuSong-Z01 & FZHei-B01 & FZFangSong-Z02 \\ %^^A! |mac| & Songti SC & Heiti SC & STFangsong \\ %^^A! |sinotype| & STSong & STHeiti & STFangsong \\ %^^A! |sourcehan| & Source Han Serif SC & Source Han Sans SC & --- \\ %^^A! |windows| & SimSun & SimHei & FangSong \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \end{table} %^^A! % % ������ \kvopt{font}{none} ��� \kvopt{cjk-font}{none} ������������������������ % ������������ / ��������������������������������������������������� \cs{setmainfont}��� % \cs{setCJKmainfont}���\cs{setmathfont} ��������������������������� %^^A! When you choose \kvopt{font}{none} or \kvopt{cjk-font}{none}, %^^A! \cls{fduthesis} will disable the default western/CJK font %^^A! settings. You may use \cs{setmainfont}, \cs{setCJKmainfont} %^^A! and \cs{set\-math\-font}, etc.\ to configure the fonts manually. %^^A! % %^^A+ % \begin{function}{style/font-size} % \begin{fdusyntax}[emph={[1]font-size}] % font-size = (*<(-4)|5>*) % \end{fdusyntax} %^^A- % ������������������������������ % \end{function} %^^A! Specify the basic font size in your thesis. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[rEXP,updated=2017-10-14]{style/fullwidth-stop} % \begin{fdusyntax}[emph={[1]fullwidth-stop}] % fullwidth-stop = (*<catcode|mapping|(false)>*) % \end{fdusyntax} %^^A- % ���������������������������������\FSFW ������������������������������ % ���������������������������������������������������������������$_o$���������$_0$������������ % \end{function} %^^A! Let full-width full stop ``\FSFW'' as the default full stop. %^^A! Generally, this punctuation is used for scientific articles, %^^A! where ``\FSID'' is easily to be confused with subscript %^^A! ``$_o$'' or ``$_0$''. %^^A! \end{function} %^^A! % % ������ \kvopt{fullwidth-stop}{catcode} ��� \opt{mapping} ��������������������������������� % ������������������������������ \opt{catcode} ������������\emph{���������}\FSID ������������ % ���\FSFW��������������� \opt{mapping} ������\emph{���������}\FSID ��������������������������� % ������������������������������������\FSID ��������������������������� \opt{catcode} ������������ % ���\FSID ���������������������\FSFW��� %^^A! If you choose \kvopt{fullwidth-stop}{catcode}, only %^^A! \emph{explicit} ``\FSID'' will be replaced by ``\FSFW''; when %^^A! choosing \kvopt{fullwidth-stop}{mapping}, however, \emph{all} %^^A! the ``\FSID'' will be replaced. %^^A! % % ������ \kvopt{fullwidth-stop}{mapping} ������ \XeTeX{} ������������������ % \LuaTeX{} ������������������������������ \kvopt{fullwidth-stop}{catcode}��� %^^A! \opt{mapping} is valid only under \XeTeX{}. When compiling %^^A! with \LuaTeX{}, it is equivalent to \opt{catcode}. %^^A! % % ������������������ \kvopt{fullwidth-stop}{mapping} ������������������������\FSID��� % ������������������������������ % \begin{latexexample}[moretexcs={\CJKfontspec},emph={[1]Mapping}] % % ��������� XeTeX ������ % % ������������������������������ % ������������������{\CJKfontspec{(*\meta{���������}*)}[Mapping=full-stop]���} % \end{latexexample} %^^A! If you want to display ``\FSID'' temporarily after setting %^^A! \kvopt{fullwidth-stop}{mapping}, the following code snippet %^^A! will be helpful: %^^A! \begin{latexexample}[moretexcs={\CJKfontspec},emph={[1]Mapping}] %^^A! % Compiled with XeTeX %^^A! % The outside braces is used for group %^^A! ������������������{\CJKfontspec{(*\meta{font name}*)}[Mapping=full-stop]���} %^^A! \end{latexexample} %^^A! % % \begin{function}{style/footnote-style} %^^A ������������������������������������������������fdusyntax ������������������������ %^^A ������������������������ . ������������ % \begin{fdusyntax}[emph={[1]footnote-style}] % footnote-style = (*<plain|\\ % ......\mbox{}~~~~~~~~~~~~~~~~~libertinus|libertinus*|libertinus-sans|\\ % ......\mbox{}~~~~~~~~~~~~~~~~~pifont|pifont*|pifont-sans|pifont-sans*|\\ % ......\mbox{}~~~~~~~~~~~~~~~~~xits|xits-sans|xits-sans*>*) % \end{fdusyntax} % ��������������������������������������������������������������������������� % ���~\ref{tab:footnote-font}��������������������������������������������������� % ��������� \opt{font} ��������������������� |sans| ������������������������������ % ��������������� |*| ������������������������������������������ % \end{function} %^^A! \begin{function}{style/footnote-style} %^^A! \begin{fdusyntax}[emph={[1]footnote-style}] %^^A! footnote-style = (*<plain|\\ %^^A! ....\mbox{}~~~~~~~~~~~~~~~~~libertinus|libertinus*|libertinus-sans|\\ %^^A! ....\mbox{}~~~~~~~~~~~~~~~~~pifont|pifont*|pifont-sans|pifont-sans*|\\ %^^A! ....\mbox{}~~~~~~~~~~~~~~~~~xits|xits-sans|xits-sans*>*) %^^A! \end{fdusyntax} %^^A! Set the style of footnote numbers. Note that western fonts %^^A! will affect its default value (see table~\ref{tab:footnote-font}), %^^A! so you may put it after |font| option. The one with |sans| %^^A! is for the corresponding sans-serif version, while |*| %^^A! for white on black version. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \caption{���������������������������������������������������������} % \label{tab:footnote-font} % \centering % \small % \begin{tabular}{ccccc} % \toprule % \textbf{������������������} & % |libertinus| & |lm| & |palatino| & |times| \\ % \midrule % \textbf{���������������������������} & % |libertinus| & |pifont| & |pifont| & |xits| \\ % \bottomrule % \end{tabular} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{Relationship between option \opt{font} and the %^^A! default value of \opt{footnote-style}} %^^A! \label{tab:footnote-font} %^^A! \centering %^^A! \begin{tabular}{ccccc} %^^A! \toprule %^^A! \textbf{Western fonts settings} & %^^A! |libertinus| & |lm| & |palatino| & |times| \\ %^^A! \midrule %^^A! \textbf{Default value of footnote number style} & %^^A! |libertinus| & |pifont| & |pifont| & |xits| \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \end{table} %^^A! % %^^A+ % \begin{function}[added=2017-08-13]{style/hyperlink} % \begin{fdusyntax}[emph={[1]hyperlink}] % hyperlink = (*<border|(color)|none>*) % \end{fdusyntax} %^^A- % ������������������������\opt{border} ��������������������������������������� % \opt{color} ���������������������������������\opt{none} ��������������������������� % ������������������������������������������ % \end{function} %^^A! Set the style of hyperlinks. \opt{border} draws borders around %^^A! hyperlinks; \opt{color} displays hyperlinks in colorful text; %^^A! \opt{none} leads to plain text, which is useful when printing %^^A! the final document. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-08-13,updated=2021-12-27]{style/hyperlink-color} % \begin{fdusyntax}[emph={[1]hyperlink-color}] % hyperlink-color = (*<(default)|classic|material|graylevel|prl>*) % \end{fdusyntax} % ������������������������������������ \kvopt{hyperlink}{none} ������������ % ���������������������������������~\ref{tab:hyperlink-color}��� % \end{function} %^^A! \begin{function}[added=2017-08-13,updated=2021-12-27]{style/hyperlink-color} %^^A! \begin{fdusyntax}[emph={[1]hyperlink-color}] %^^A! hyperlink-color = (*<(default)|classic|material|graylevel|prl>*) %^^A! \end{fdusyntax} %^^A! Set the color of hyperlinks. It is invalid if %^^A! \kvopt{hyperlink}{none}. The related colors can be found %^^A! in table~\ref{tab:hyperlink-color}. %^^A! \end{function} %^^A! % %^^A+ % \begin{table}[ht] % \centering % \small %^^A- % \newcommand\linkcolorexam[3]{^^A % {\small ���~\textcolor[HTML]{#1}{1-2}��� % (\textcolor[HTML]{#1}{3.4})~���} & % {\small \textcolor[HTML]{#2}{\texttt{https://g.cn}}} & % {\small ������~[\textcolor[HTML]{#3}{1}]��� % (\textcolor[HTML]{#3}{Knuth~1986})}} %^^A! \newcommand\linkcolorexam[3]{% %^^A! {\small Fig.~\textcolor[HTML]{#1}{1-2}��� %^^A! Eq.~(\textcolor[HTML]{#1}{3.4})} & %^^A! {\small \textcolor[HTML]{#2}{\texttt{http://g.cn}}} & %^^A! {\small Ref.~[\textcolor[HTML]{#3}{1}]��� %^^A! (\textcolor[HTML]{#3}{Knuth~1986})}} % \begin{threeparttable} % \caption{���������������������������������} % \label{tab:hyperlink-color} %^^A! \begin{threeparttable} %^^A! \caption{Pre-defined hyperlink color schemes} %^^A! \label{tab:hyperlink-color} % \begin{tabular}{c*{3}{>{\hspace{0.2cm}}c<{\hspace{0.2cm}}}} % \toprule % \textbf{������} & \textbf{������} & \textbf{URL} & \textbf{������} \\ %^^A! \begin{tabular}{c*{3}{>{\hspace{0.2cm}}c<{\hspace{0.2cm}}}} %^^A! \toprule %^^A! \textbf{Options} & \textbf{Cross references} & \textbf{URL} & \textbf{Citation} \\ %^^A+ % \midrule % \opt{default} & \linkcolorexam{990000}{0000B2}{007F00} \\ % \opt{classic} & \linkcolorexam{FF0000}{0000FF}{00FF00} \\ % \opt{material}\tnote{a} & \linkcolorexam{E91E63}{009688}{4CAF50} \\ % \opt{graylevel}\tnote{a} & \linkcolorexam{616161}{616161}{616161} \\ % \opt{prl}\tnote{b} & \linkcolorexam{2D3092}{2D3092}{2D3092} \\ % \bottomrule % \end{tabular} % \begin{tablenotes} %^^A- % \item[a] ������ Material ������������ % ������ \url{https://material.io/guidelines/style/color.html}������ % \item[b] \textit{Physical Review Letter} ��������������� %^^A! \item[a] Material Design color palette %^^A! (See \url{https://material.io/guidelines/style/color.html}). %^^A! \item[b] \textit{Physical Review Letter} magazine. %^^A+ % \end{tablenotes} % \end{threeparttable} % \end{table} %^^A- %^^A! % %^^A+ % \begin{function}[added=2018-01-25,updated=2023-05-11]{style/bib-backend} % \begin{fdusyntax}[emph={[1]bib-backend}] % bib-backend = (*<bibtex|biblatex>*) % \end{fdusyntax} %^^A- % ������������������������������������������ \opt{bibtex} ��������������� \BibTeX{} % ������������������������ \pkg{natbib} ��������������������� \opt{biblatex} ������ % ��������� \biber{} ��������������������������� \pkg{biblatex} ��������������� % ��������������������������������������������������������������������� % \end{function} %^^A! Specify the backend or driver of bibliography processing. %^^A! \BibTeX{} and \pkg{natbib} package will be used if you choose %^^A! \opt{bibtex}, while \biber{} and \pkg{biblatex} will be used %^^A! if you choose \opt{biblatex}. If not specified, the citations %^^A! and references will not be processed. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-10-28,updated=2018-01-25]{style/bib-style} % \begin{fdusyntax}[emph={[1]bib-style}] % bib-style = (*<author-year|(numerical)|\meta{������������}>*) % \end{fdusyntax} % ���������������������������\opt{author-year} ��� \opt{numerical} ������������ % ������������ GB/T 7714--2015 \cite{gb-t-7714-2015} ������������������������������ % ������������������������ \meta{������������} ������������ \kvopt{bib-backend}{bibtex}��� % ������������������ \file{.bst} ������������������������������������ % \kvopt{bib-backend}{biblatex}������������������������ \file{.bbx} ������������ % ��������������� % \end{function} %^^A! \begin{function}[added=2017-10-28,updated=2018-01-25]{style/bib-style} %^^A! \begin{fdusyntax}[emph={[1]bib-style}] %^^A! bib-style = (*<author-year|(numerical)|\meta{other style}>*) %^^A! \end{fdusyntax} %^^A! Set the style of bibliography. \opt{author-year} and %^^A! \opt{numerical} will follow the standard GB/T 7714--2015. %^^A! By setting \kvopt{bib-style}{\meta{other style}}, you can use %^^A! other bibliography style (\file{.bst} file for %^^A! \kvopt{bib-backend}{bibtex} and \file{.bbx} file for %^^A! \kvopt{bib-backend}{biblatex}). Suffix is not needed. %^^A! \end{function} %^^A! % % \begin{function}[added=2018-01-25]{style/cite-style} % \begin{fdusyntax}[emph={[1]cite-style}] % cite-style = (*\marg{������������}*) % \end{fdusyntax} % ��������������������������������������������������������������������������������������������� % ������������������������������������������������������������������ \file{.cbx} ������������ % ��������������������������� \kvopt{bib-backend}{bibtex} ������������ % \end{function} %^^A! \begin{function}[added=2018-01-25]{style/cite-style} %^^A! \begin{fdusyntax}[emph={[1]cite-style}] %^^A! cite-style = (*\marg{style}*) %^^A! \end{fdusyntax} %^^A! Select citation style. Default value is empty, which means %^^A! the citation style will follow your bibliography style %^^A! (author-year or numeric). If you want change the citation %^^A! style, the corresponding \file{.cbx} file must be available. %^^A! This option is invalid when \kvopt{bib-backend}{bibtex}. %^^A! \end{function} %^^A! % % \begin{function}[added=2018-01-25]{style/bib-resource} % \begin{fdusyntax}[emph={[1]bib-resource}] % bib-resource = (*\marg{������}*) % \end{fdusyntax} % ��������������������������������������������������������������������������������������������������� % ������ \kvopt{bib-backend}{biblatex}������������������������ \file{.bib} % ������������ % \end{function} %^^A! \begin{function}[added=2018-01-25]{style/bib-resource} %^^A! \begin{fdusyntax}[emph={[1]bib-resource}] %^^A! bib-resource = (*\marg{bib file\symbol{"28}s\symbol{"29}}*) %^^A! \end{fdusyntax} %^^A! Specify the bibliography database (usually in \file{.bib} %^^A! format). If using more than one files, the file names should %^^A! be separated with comma. When \kvopt{bib-backend}{biblatex}, %^^A! you must type in the ``\file{.bib}'' suffix. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-08-10]{style/logo} % \begin{fdusyntax}[emph={[1]logo}] % logo = (*\marg{������}*) % \end{fdusyntax} % ������������������������������������������������ \file{fudan-name.pdf}��� % \end{function} %^^A! \begin{function}[added=2017-08-10]{style/logo} %^^A! \begin{fdusyntax}[emph={[1]logo}] %^^A! logo = (*\marg{file}*) %^^A! \end{fdusyntax} %^^A! File name of the logo in thesis cover. Default value is %^^A! \file{fudan-name.pdf}. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-08-10]{style/logo-size} % \begin{fdusyntax}[emph={[1]logo-size}] % logo-size = (*\marg{������}*) % logo-size = {(*\meta{������}*), (*\meta{������}*)} % \end{fdusyntax} % ������������������������������������������������������ |0.5\textwidth|\/��� % ��������������������������������� \meta{������} ��������������������������� |{}|��� % \end{function} %^^A! \begin{function}[added=2017-08-10]{style/logo-size} %^^A! \begin{fdusyntax}[emph={[1]logo-size}] %^^A! logo-size = (*\marg{width}*) %^^A! logo-size = {(*\meta{width}*), (*\meta{height}*)} %^^A! \end{fdusyntax} %^^A! Size of the logo. By default, only width is set to %^^A! |0.5\textwidth|. To set height only, you can put an %^^A! empty group ``|{}|'' at \meta{width}. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[added=2017-07-06]{style/auto-make-cover} % \begin{fdusyntax}[emph={[1]auto-make-cover}] % auto-make-cover = (*<\TTF>*) % \end{fdusyntax} %^^A- % ������������������������������������������������������������������������������������ % ������������������������������������������������������������ \cs{fdusetup} ��������� % ��������������� \ref{subsubsec:������������}~������ % \end{function} %^^A! Whether generate thesis cover, list of instructors (inside %^^A! front cover) and declaration page (inside back cover) %^^A! automatically. Entries in the cover can be specified also %^^A! via \cs{fdusetup}, and you can find more details in %^^A! subsubsection~\ref{subsubsec:information}. %^^A! \end{function} %^^A! % % \begin{function}[added=2021-09-21]{style/declaration-page} % \begin{fdusyntax}[emph={[1]declaration-page}] % declaration-page = (*\marg{������}*) % \end{fdusyntax} % ��������������������������� PDF ��������������������������������������������������������������������������� % \end{function} %^^A! \begin{function}[added=2021-09-21]{style/declaration-page} %^^A! \begin{fdusyntax}[emph={[1]declaration-page}] %^^A! declaration-page = (*\marg{file}*) %^^A! \end{fdusyntax} %^^A! Insert the scanned declaration page PDF file. If empty (default), %^^A! then the pre-defined declaration page will be inserted. %^^A! \end{function} %^^A! % % \begin{function}{\makecoveri,\makecoverii,\makecoveriii} % ��������������������������������������������������������������������������������������������� % ������������������������������������������������������������������������������������������������ % \end{function} %^^A! \begin{function}{\makecoveri,\makecoverii,\makecoveriii} %^^A! For generating thesis cover, list of instructors and %^^A! declaration page manually. These commands cannot guarantee %^^A! the correct page numbers, hence you should always use the %^^A! auto-generated thesis cover unless necessary. %^^A! \end{function} %^^A! % % \subsubsection{������������} \label{subsubsec:������������} %^^A! \subsubsection{Personal information} \label{subsubsec:information} %^^A! % % \begin{function}{info} % \begin{fdusyntax}[emph={[1]info}] % info = (*\marg{������������}*) % info/(*\meta{key}*) = (*\meta{value}*) % \end{fdusyntax} % ���������������������������������������������������������������������������������������������|*|��� % ��������������������������������������� % \end{function} %^^A! \begin{function}{info} %^^A! \begin{fdusyntax}[emph={[1]info}] %^^A! info = (*\marg{key-value list}*) %^^A! info/(*\meta{key}*) = (*\meta{value}*) %^^A! \end{fdusyntax} %^^A! This general option is for entering your personal information. %^^A! See the following details. Note that options with ``|*|'' are %^^A! the corresponding English items. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[added=2018-02-01,updated=2019-03-12]{info/degree} % \begin{fdusyntax}[emph={[1]degree}] % degree = (*<(academic)|professional>*) % \end{fdusyntax} %^^A- % ���������������������������������������������������������\opt{academic} ��� \opt{professional} % ������������������������������������������ % \end{function} %^^A! Degree type. This option can only be used in master degree %^^A! thesis. %^^A! \end{function} %^^A! % % \begin{function}{info/title,info/title*} % \begin{fdusyntax}[emph={[1]title,title*}] % title = (*\marg{������������}*) % title* = (*\marg{������������}*) % \end{fdusyntax} % ������������������������������ 20 ��������������������������������������������������� % ������������������������������������������������������������������������������|\\|��� % ��������������� % \end{function} %^^A! \begin{function}{info/title,info/title*} %^^A! \begin{fdusyntax}[emph={[1]title,title*}] %^^A! title = (*\marg{title in Chinese}*) %^^A! title* = (*\marg{title in English}*) %^^A! \end{fdusyntax} %^^A! Title of your thesis. The line width is about \qty{30}{em} by %^^A! default, but you may break it with |\\| manually. %^^A! \end{function} %^^A! % % \begin{function}{info/author,info/author*} % \begin{fdusyntax}[emph={[1]author,author*}] % author = (*\marg{������}*) % author* = (*\marg{���������������������������}*) % \end{fdusyntax} % ��������������� % \end{function} %^^A! \begin{function}{info/author,info/author*} %^^A! \begin{fdusyntax}[emph={[1]author,author*}] %^^A! author = (*\marg{name in Chinese}*) %^^A! author* = (*\marg{name in English \lparen or Pinyin\rparen}*) %^^A! \end{fdusyntax} %^^A! Author's name. %^^A! \end{function} %^^A! % % \begin{function}{info/supervisor} % \begin{fdusyntax}[emph={[1]supervisor}] % supervisor = (*\marg{������}*) % \end{fdusyntax} % ��������������� % \end{function} %^^A! \begin{function}{info/supervisor} %^^A! \begin{fdusyntax}[emph={[1]supervisor}] %^^A! supervisor = (*\marg{name}*) %^^A! \end{fdusyntax} %^^A! Supervisor's name. %^^A! \end{function} %^^A! % % \begin{function}{info/department} % \begin{fdusyntax}[emph={[1]department}] % department = (*\marg{������}*) % \end{fdusyntax} % ��������������� % \end{function} %^^A! \begin{function}{info/department} %^^A! \begin{fdusyntax}[emph={[1]department}] %^^A! department = (*\marg{name}*) %^^A! \end{fdusyntax} %^^A! Name of the department. %^^A! \end{function} %^^A! % % \begin{function}{info/major} % \begin{fdusyntax}[emph={[1]major}] % major = (*\marg{������}*) % \end{fdusyntax} % ��������������� % \end{function} %^^A! \begin{function}{info/major} %^^A! \begin{fdusyntax}[emph={[1]major}] %^^A! major = (*\marg{name}*) %^^A! \end{fdusyntax} %^^A! Name of the major. %^^A! \end{function} %^^A! % % \begin{function}{info/student-id} % \begin{fdusyntax}[emph={[1]student-id}] % student-id = (*\marg{������}*) % \end{fdusyntax} % ��������������� % \end{function} %^^A! \begin{function}{info/student-id} %^^A! \begin{fdusyntax}[emph={[1]student-id}] %^^A! student-id = (*\marg{number}*) %^^A! \end{fdusyntax} %^^A! Author's student ID. %^^A! \end{function} %^^A! % % ��������������������� 11 ������������������������������������������������������������ % ��������������������� 1��������������� 2��������������� 3��������������������������� % ������������������������������������������ %^^A! In Fudan University, student ID has 11 digits. The first two %^^A! are the year of attendance; next one represents the student's %^^A! type (1 for doctor, 2 for master and 3 for bachelor); the %^^A! following five digits are major ID while the last three are %^^A! serial number. %^^A! % % \begin{function}{info/school-id} % \begin{fdusyntax}[emph={[1]school-id}] % school-id = (*\marg{������}*) % \end{fdusyntax} % ��������������������������� 10246������������������������������������������ % \end{function} %^^A! \begin{function}{info/school-id} %^^A! \begin{fdusyntax}[emph={[1]school-id}] %^^A! school-id = (*\marg{number}*) %^^A! \end{fdusyntax} %^^A! School ID. Default value is 10246 (school ID of Fudan University). %^^A! \end{function} %^^A! % % \begin{function}{info/date} % \begin{fdusyntax}[emph={[1]date}] % date = (*\marg{������}*) % \end{fdusyntax} % ������������������������������������������������������\tn{today}������ % \end{function} %^^A! \begin{function}{info/date} %^^A! \begin{fdusyntax}[emph={[1]date}] %^^A! date = (*\marg{date}*) %^^A! \end{fdusyntax} %^^A! Finish date of your thesis. Default value is the compilation %^^A! date (\tn{today}). %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[added=2017-07-04]{info/secret-level} % \begin{fdusyntax}[emph={[1]secret-level}] % secret-level = (*<(none)|i|ii|iii>*) % \end{fdusyntax} %^^A- % ���������\opt{i}���\opt{ii}���\opt{iii} ��������������������������������������� % \opt{none} ������������������������������������������������������������ % \end{function} %^^A! Secret level. \opt{i}, \opt{ii} and \opt{iii} means %^^A! ``������'' (secret), ``������'' (confidential) and ``������'' %^^A! (top secret) respectively. \opt{none} means your thesis is %^^A! not secret-related and secret level and year will not be %^^A! shown. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-07-04]{info/secret-year} % \begin{fdusyntax}[emph={[1]secret-year}] % secret-year = (*\marg{������}*) % \end{fdusyntax} % ��������������������������������������������������������������������������� % \kvopt{secret-level}{none} ������������ % \end{function} %^^A! \begin{function}[added=2017-07-04]{info/secret-year} %^^A! \begin{fdusyntax}[emph={[1]secret-year}] %^^A! secret-year = (*\marg{year}*) %^^A! \end{fdusyntax} %^^A! Secret year. It's recommended to use Chinese word as ``������'' %^^A! (5 years) here. This option is invalid if you have set %^^A! \kvopt{secret-level}{none}. %^^A! \end{function} %^^A! % % \begin{function}{info/instructors} % \begin{fdusyntax}[emph={[1]instructors}] % instructors = (*\marg{������ 1, ������ 2, ...}*) % \end{fdusyntax} % ������������������������������������������������������������������������������������ % ������������������������|{...}|��������������������������������� % \end{function} %^^A! \begin{function}{info/instructors} %^^A! \begin{fdusyntax}[emph={[1]instructors}] %^^A! instructors = (*\marg{member 1, member 2, ...}*) %^^A! \end{fdusyntax} %^^A! Instructors' name. Each name should be separated with %^^A! comma. To disambiguate, you may put text containing comma %^^A! into a group ``|{...}|''. %^^A! \end{function} %^^A! % % \begin{function}{info/keywords,info/keywords*} % \begin{fdusyntax}[emph={[1]keywords,keywords*}] % keywords = (*\marg{���������������}*) % keywords* = (*\marg{���������������}*) % \end{fdusyntax} % ������������������������������������������������������������������������������������ % ������������������������|{...}|��������������������������� % \end{function} %^^A! \begin{function}{info/keywords,info/keywords*} %^^A! \begin{fdusyntax}[emph={[1]keywords,keywords*}] %^^A! keywords = (*\marg{keywords in Chinese}*) %^^A! keywords* = (*\marg{keywords in English}*) %^^A! \end{fdusyntax} %^^A! Keywords list. Each keyword should be separated with comma. %^^A! To disambiguate, you may put text containing comma into a %^^A! group ``|{...}|''. %^^A! \end{function} %^^A! % % \begin{function}{info/clc} % \begin{fdusyntax}[emph={[1]clc}] % clc = (*\marg{���������}*) % \end{fdusyntax} % ������������������CLC������ % \end{function} %^^A! \begin{function}{info/clc} %^^A! \begin{fdusyntax}[emph={[1]clc}] %^^A! clc = (*\marg{classification codes}*) %^^A! \end{fdusyntax} %^^A! Chinese Library Classification (CLC). %^^A! \end{function} %^^A! % % \begin{function}[added=2021-09-16]{info/jel} % \begin{fdusyntax}[emph={[1]jel}] % jel = (*\marg{���������}*) % \end{fdusyntax} % JEL ������������������������������������������������������������������������������������ JEL % ��������������������������������������������� % \end{function} %^^A! \begin{function}[added=2021-09-16]{info/jel} %^^A! \begin{fdusyntax}[emph={[1]jel}] %^^A! jel = (*\marg{classification codes}*) %^^A! \end{fdusyntax} %^^A! \textit{Journal of Economic Literature} (JEL) Classification %^^A! Code. It's only mandatory for some departments. When specified, %^^A! CLC code in the English abstract will be replaced by it. %^^A! \end{function} %^^A! % % \subsection{������������} %^^A! \subsection{Writing your thesis} %^^A! % % \begin{quotation} % ��������������������������������������������������������������������������������� % ���\CJKunderdot{������������������������}������������������������������������������������������ % ��������������������������������������������������������������������������������������������� % \end{quotation} % \hfill ^^^^2e3a����������������������������������������������� ^^A ^^^^2e3a = ��������� % % \subsubsection{������} %^^A! \subsubsection{Front matter} %^^A! % % \begin{function}{\frontmatter} % ��������������������������� % \end{function} %^^A! \begin{function}{\frontmatter} %^^A! Declare the beginning of front matter. %^^A! \end{function} %^^A! % % ��������������������������������������������������������������������������������� % ������������������������������������������������������������������������������ %^^A! Front matter contains table of contents, abstracts and notation %^^A! list. The page numbers in front matter will be shown in %^^A! lowercase Roman numerals, and will be counted separately with %^^A! main matter. %^^A! % % \begin{function}{\tableofcontents,\listoffigures,\listoftables} % ���������������������������������������������������������������������������\emph{������}��������������� % ��������������������������������� \cs{listoffigures} ��� \cs{listoftables} ��������������� % ������������������������ % \end{function} %^^A! \begin{function}{\tableofcontents} %^^A! Generate the table of contents (TOC). You need to compile %^^A! the source file at least \emph{twice} to get the correct TOC. %^^A! If your thesis contains many figures or tables, you may also %^^A! use \cs{listoffigures} or \cs{listoftables} to generate a list %^^A! of them. %^^A! \end{function} %^^A! % %^^A TODO: \DescribeEnv{abstract} %^^A TODO: \DescribeEnv{abstract*} % \begin{function}{abstract} % \begin{fdusyntax}[emph={[2]abstract}] % % ������������������ (fduthesis) % ������������������ (fduthesis-en) % \begin{abstract} \begin{abstract} % (*\meta{������������} \hspace{3.52cm} \meta{������������}*) % \end{abstract} \end{abstract} % \end{fdusyntax} % \end{function} % \begin{function}[rEXP]{abstract*} % \begin{fdusyntax}[emph={[2]abstract*}] % % ������������������ (fduthesis) % \begin{abstract*} % (*\meta{������������}*) % \end{abstract*} % \end{fdusyntax} % ������������������������������������������������������������������������������������������ % ������������������������������������������������������������������������������������������ % \end{function} %^^A! \begin{function}{abstract} %^^A! \begin{fdusyntax}[emph={[2]abstract}] %^^A! % fduthesis (Chinese thesis) % fduthesis-en (English thesis) %^^A! \begin{abstract} \begin{abstract} %^^A! (*\meta{Chinese abstract} \hspace{3cm} \meta{English abstract}*) %^^A! \end{abstract} \end{abstract} %^^A! \end{fdusyntax} %^^A! \end{function} %^^A! \begin{function}[rEXP]{abstract*} %^^A! \begin{fdusyntax}[emph={[2]abstract*}] %^^A! % Only for fduthesis %^^A! \begin{abstract*} %^^A! (*\meta{English abstract}*) %^^A! \end{abstract*} %^^A! \end{fdusyntax} %^^A! Abstract environment. In \cls{fduthesis}, \env{abstract} and %^^A! \env{abstract*} are used for Chinese and English abstract, %^^A! respectively; while in \cls{fduthesis-en}, there is no %^^A! \env{abstract*} environment and you need to write the English %^^A! abstract merely. %^^A! \end{function} %^^A! % % ������������������������������������������������������������������CLC������ JEL ��������������������� % ��������� \cs{fdusetup} ������������������������ \ref{subsubsec:������������}~������ %^^A! At the end of abstract (both Chinese and English, if available), %^^A! keywords list and CLC or JEL code will be shown. They can be %^^A! specified via command \cs{fdusetup} and you may refer to %^^A! subsubsection~\ref{subsubsec:information} for more details. %^^A! % %^^A TODO: \DescribeEnv{notation} % \begin{function}{notation} % \begin{fdusyntax}[emph={[2]notation}] % \begin{notation}(*\oarg{���������������}*) % (*\meta{������ 1}*) & (*\meta{������}*) \\ % (*\meta{������ 2}*) & (*\meta{������}*) \\ % (*\phantom{\meta{������ $n$}}*) (*$\vdots$*) % (*\meta{������\ \kern-0.1em$n$}*) & (*\meta{������}*) % \end{notation} % \end{fdusyntax} % ������������������������ \meta{���������������}��� \LaTeX{} ������������������������ % ���������������������������������������|lp{7.5cm}|��������������������������������������� % ��������������� \qty{7.5}{cm}��������������������������� % \end{function} %^^A! \begin{function}{notation} %^^A! \begin{fdusyntax}[emph={[2]notation}] %^^A! \begin{notation}(*\oarg{column format}*) %^^A! (*\meta{symbol 1}*) & (*\meta{description}*) \\ %^^A! (*\meta{symbol 2}*) & (*\meta{description}*) \\ %^^A! (*\phantom{\meta{symbol $n$}}*) (*$\vdots$*) %^^A! (*\meta{symbol \kern-0.1em$n$}*) & (*\meta{description}*) %^^A! \end{notation} %^^A! \end{fdusyntax} %^^A! Notation list (or symbol list, nomenclature) environment. %^^A! The optional argument \meta{column format} is the same as %^^A! in a standard \LaTeX{} table. The default value is %^^A! ``|lp{7.5cm}|'', which means auto-width for the first column %^^A! and fix-width (\qty{7.5}{cm}) for the second; both columns will %^^A! be left-aligned. %^^A! \end{function} %^^A! % % \subsubsection{������} %^^A! \subsubsection{Main matter} %^^A! % % \begin{function}{\mainmatter} % ��������������������������� % \end{function} %^^A! \begin{function}{\mainmatter} %^^A! Declare the beginning of main matter. %^^A! \end{function} %^^A! % % ������������������������������������������������������������������������������������������ % ������������������������������������������������������������������������ %^^A! As the name suggests, ``main matter'' is the main body of your %^^A! thesis. When working on a big projects, it's usually a good %^^A! idea to split the source file into several parts. The page %^^A! numbers in main matter are shown in arabic numerals. %^^A! % % \begin{function}[updated=2018-01-15]{\footnote} % \begin{fdusyntax}[deletetexcs={\footnote},morekeywords={\footnote}] % \footnote(*\marg{������������}*) % \end{fdusyntax} % ������������������������������������������ \opt{style/footnote-style} ��������������� % ��������� \ref{subsubsec:������������}~��������� % \end{function} %^^A! \begin{function}[updated=2018-01-15]{\footnote} %^^A! \begin{fdusyntax}[deletetexcs={\footnote},morekeywords={\footnote}] %^^A! \footnote(*\marg{text}*) %^^A! \end{fdusyntax} %^^A! Insert a footnote. The style of footnote numbers can be set %^^A! with option \opt{style/foot\-note\-style}. See %^^A! subsubsection~\ref{subsubsec:style-and-format} for more details. %^^A! \end{function} %^^A! % % \begin{function}{\caption} % \begin{fdusyntax}[deletetexcs={\caption},morekeywords={\caption}] % \caption(*\marg{������������}*) % \caption(*\oarg{���������}\marg{���������}*) % \end{fdusyntax} % ��������������������������������� \meta{���������} ������������������������ % \meta{���������} ������������������������������������������������ \meta{���������} % ������������ \meta{������������} ������������������������ % \cite{���������2013latex������} % \end{function} %^^A! \begin{function}{\caption} %^^A! \begin{fdusyntax}[deletetexcs={\caption},morekeywords={\caption}] %^^A! \caption(*\marg{caption}*) %^^A! \caption(*\oarg{short caption}\marg{long caption}*) %^^A! \end{fdusyntax} %^^A! Insert the caption of figure or table. The optional argument %^^A! \meta{short caption} will be shown in the list of figures/tables. %^^A! In \meta{long caption}, you can write descriptions for several %^^A! paragraphs, but \meta{short caption} and the single %^^A! \meta{caption} will not allow multi-paragraph text (i.e.\ %^^A! text containing \tn{par}) inside. %^^A! \end{function} %^^A! % % ��������������������������������������������������������������������������������������� % ������������������������������������������������������������������������������ % \tn{caption} ������������������������������������������ \env{table} ��� % \env{figure}��������� %^^A! By convention, caption of a table is usually put \emph{before} %^^A! the table itself, while for figure it's the opposite. %^^A! In addition, command \tn{caption} must be put inside float %^^A! environments (e.g.\ \env{table} and \env{figure}). %^^A! % % \paragraph{������������������} %^^A! \paragraph{Citations} % % \begin{function}[updated=2021-09-20]{\cite} % \begin{fdusyntax}[deletetexcs={\cite},morekeywords={\cite}] % \cite(*\marg{������������}*) % \cite(*\oarg{������}\marg{������������}*) % \end{fdusyntax} % ��������������������������������������� \meta{������} ��������������������������������������������� % ��������������������������������������������������������������������������������������������������������� % ��������������������������������������������������������������������������������������� % ���~\ref{tab:citation-numerical} ������~\ref{tab:citation-author-year}��� % \end{function} %^^A! \begin{function}[updated=2021-09-20]{\cite} %^^A! \begin{fdusyntax}[deletetexcs={\cite},morekeywords={\cite}] %^^A! \cite(*\marg{bib key}*) %^^A! \cite(*\oarg{page number}\marg{bib key}*) %^^A! \end{fdusyntax} %^^A! Insert citations. The optional argument \meta{page number} can be %^^A! used to indicate the page number of the citation. The citation style %^^A! varies among different bibliography styles. More commands are also %^^A! provided to mark the citations, which can be found in %^^A! table~\ref{tab:citation-numerical} (numerical style) and %^^A! \ref{tab:citation-author-year} (author-year style). %^^A! \end{function} %^^A! % %^^A+ % \NewDocumentCommand\verbcite{O{cite}om}{^^A % \IfNoValueTF{#2}{^^A % \texttt{\textbackslash#1\{#3\}}^^A % }{^^A % \texttt{\textbackslash#1[#2]\{#3\}}^^A % }} %^^A- % % \begin{table}[ht] % \caption{���������������������������������} \label{tab:citation-numerical} % \centering % \small % \begin{tabularx}{\textwidth}{cCll} % \toprule % \textbf{������������} & % \textbf{������������} & % \textbf{\kvopt{bib-backend}{bibtex}} & % \textbf{\kvopt{bib-backend}{biblatex}} \\ % \midrule % ������������ & % ������\cite{texbook} & % \verbcite{texbook} & % ������ \\ % ������������ & % ������\cite{texbook,companion} & % \verbcite{texbook,companion} & % ������ \\ % ������������ & % ������\cite[126--137]{texbook} & % \verbcite[cite][126--137]{texbook} & % ������ \\ % ������������ & % \citet{texbook}������ & % \verbcite[citet]{texbook} & % \verbcite[authornumcite]{texbook} \\ % ��������������������� & % \citet[42]{texbook}������ & % \verbcite[citet][42]{texbook} & % \verbcite[authornumcite][42]{texbook} \\ % ��������� & % ������{\citestyle{numbers}\cite{texbook}} & % \verbcite[parencite]{texbook} & % ������ \\ % \bottomrule % \end{tabularx} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{Citations in numerical style} \label{tab:citation-numerical} %^^A! \centering %^^A! \small %^^A! \def\C#1{\textcolor{MaterialGreen}{#1}} %^^A! \begin{tabularx}{\textwidth}{cCll} %^^A! \toprule %^^A! \textbf{Styles} & %^^A! \textbf{Results} & %^^A! \textbf{\kvopt{bib-backend}{bibtex}} & %^^A! \textbf{\kvopt{bib-backend}{biblatex}} \\ %^^A! \midrule %^^A! Single & %^^A! Text\textsuperscript{[\C1]} & %^^A! \verbcite{texbook} & %^^A! Same as left \\ %^^A! Multiple & %^^A! Text\textsuperscript{[\C1--\C2]} & %^^A! \verbcite{texbook,companion} & %^^A! Same as left \\ %^^A! With page & %^^A! Text\textsuperscript{[\C1]126--137} & %^^A! \verbcite[cite][126--137]{texbook} & %^^A! Same as left \\ %^^A! With author & %^^A! Knuth\textsuperscript{[\C1]} states & %^^A! \verbcite[citet]{texbook} & %^^A! \verbcite[authornumcite]{texbook} \\ %^^A! With page \& author & %^^A! Knuth\textsuperscript{[\C1]42} states & %^^A! \verbcite[citet][42]{texbook} & %^^A! \verbcite[authornumcite][42]{texbook} \\ %^^A! No superscript & %^^A! Text [\C1] & %^^A! \verbcite[parencite]{texbook} & %^^A! Same as left \\ %^^A! \bottomrule %^^A! \end{tabularx} %^^A! \end{table} %^^A! % % \begin{table}[ht] % \caption{���������������������������������������} \label{tab:citation-author-year} % \centering % \small % \def\!{\kern-1.5pt} % \begin{tabularx}{\textwidth}{cCll} % \toprule % \textbf{������������} & % \textbf{������������} & % \textbf{\kvopt{bib-backend}{bibtex}} & % \textbf{\kvopt{bib-backend}{biblatex}} \\ % \midrule % ������������ & % (\citeauthor{texbook}\!, \citeyear{texbook}\!) & % \verbcite[citep]{texbook} & % \verbcite{texbook} \\ % ������������ & % (\citeauthor{texbook}\!, \citeyear{texbook}\!; % \citeauthor{companion}\!, \citeyear{companion}\!) & % \verbcite[citep]{texbook,companion} & % \verbcite{texbook,companion} \\ % ������������ & % (\citeauthor{texbook}\!, \citeyear{texbook}\!)^^A % \textsuperscript{126--137} & % \verbcite[citep][126--137]{texbook} & % \verbcite[cite][126--137]{texbook} \\ % ������������ & % \citeauthor{texbook}(\citeyear{texbook}\!) & % \verbcite[citet]{texbook} & % ������ \\ % ��������������������� & % \citeauthor{texbook}(\citeyear{texbook}\!)\textsuperscript{42} & % \verbcite[citet][42]{texbook} & % ������ \\ % \bottomrule % \end{tabularx} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{Citations in author-year style} \label{tab:citation-author-year} %^^A! \centering %^^A! \small %^^A! \def\C#1{\textcolor{MaterialGreen}{#1}} %^^A! \begin{tabularx}{\textwidth}{cCll} %^^A! \toprule %^^A! \textbf{Styles} & %^^A! \textbf{Results} & %^^A! \textbf{\kvopt{bib-backend}{bibtex}} & %^^A! \textbf{\kvopt{bib-backend}{biblatex}} \\ %^^A! \midrule %^^A! Single & %^^A! (\C{Knuth}, \C{1986}) & %^^A! \verbcite[citep]{texbook} & %^^A! \verbcite{texbook} \\ %^^A! Multiple & %^^A! (\C{Knuth}, \C{1986}; \C{Mittelbach et~al.}, \C{2004}) & %^^A! \verbcite[citep]{texbook,companion} & %^^A! \verbcite{texbook,companion} \\ %^^A! With page & %^^A! (\C{Knuth}, \C{1986})\textsuperscript{126--137} & %^^A! \verbcite[citep][126--137]{texbook} & %^^A! \verbcite[cite][126--137]{texbook} \\ %^^A! With author & %^^A! \C{Knuth} (\C{1986}) & %^^A! \verbcite[citet]{texbook} & %^^A! Same as left \\ %^^A! With page \& author & %^^A! \C{Knuth} (\C{1986})\textsuperscript{42} & %^^A! \verbcite[citet][42]{texbook} & %^^A! Same as left \\ %^^A! \bottomrule %^^A! \end{tabularx} %^^A! \end{table} %^^A! % % \paragraph{���������������} %^^A! \paragraph{Theorem-like environments} % %^^A TODO: \DescribeEnv{proof} % \begin{function}{axiom,corollary,definition,example,lemma, % proof,theorem} % \begin{fdusyntax}[emph={[2]proof}] % \begin{proof}(*\oarg{���������}*) % (*\meta{������������}*) % \end{proof} % \end{fdusyntax} % ������������������������������������������������������~\ref{tab:theorem}��� % \end{function} %^^A! \begin{function}{axiom,corollary,definition,example,lemma, %^^A! proof,theorem} %^^A! \begin{fdusyntax}[emph={[2]proof}] %^^A! \begin{proof}(*\oarg{subheading}*) %^^A! (*\meta{procedure of proof}*) %^^A! \end{proof} %^^A! \end{fdusyntax} %^^A! A series of pre-defined math environments. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \caption{������������������������} \label{tab:theorem} % \centering % \small % \begin{tabular}{*{8}{c}} % \toprule % \textbf{������} & % \env{axiom} & \env{corollary} & \env{definition} & \env{example} & % \env{lemma} & \env{proof} & \env{theorem} \\ % \midrule % \textbf{������} & % ������ & ������ & ������ & ��� & % ������ & ������ & ������ \\ % \bottomrule % \end{tabular} % \end{table} % % ���������������\env{proof}������������������������������������$\QED$��������������� % ��������������������������������������������������� \ref{subsec:������������}~��� % ������������������������\emph{������}��� %^^A! A QED\footnote{Abbreviation of Latin phrase \emph{quod erat %^^A! demonstrandum}, means ``what was to be demonstrated''.} %^^A! symbol ``$\QED$'' will be added at the end of \env{proof} %^^A! environment. You need to compile the source file \emph{twice} %^^A! as in subsection~\ref{subsec:compilation} in order to make %^^A! the position of QED symbol correct. %^^A! % % \begin{function}[updated=2023-02-08]{\newtheorem} % \begin{fdusyntax}[deletetexcs={\newtheorem}, % morekeywords={\newtheorem,\newtheorem*}] % \newtheorem(*\oarg{������}\marg{���������}\marg{������}*) % \newtheorem*(*\oarg{������}\marg{���������}\marg{������}*) % \begin(*\marg{���������}\oarg{���������}*) % (*\meta{������}*) % \end(*\marg{���������}*) % \end{fdusyntax} % ������������������������������������������������������������������������������������������ % ������������������������������������$\QED$��������������������������������������������������� % ��������������� % \end{function} %^^A! \begin{function}[updated=2017-12-12]{\newtheorem} %^^A! \begin{fdusyntax}[deletetexcs={\newtheorem}, %^^A! morekeywords={\newtheorem,\newtheorem*}] %^^A! \newtheorem(*\oarg{options}\marg{environment}\marg{title}*) %^^A! \newtheorem*(*\oarg{options}\marg{environment}\marg{title}*) %^^A! \begin(*\marg{environment}\oarg{subheading}*) %^^A! (*\meta{contents}*) %^^A! \end(*\marg{environment}*) %^^A! \end{fdusyntax} %^^A! Declare new math environments (theorems). If you use %^^A! \cs{newtheorem*}, then the theorem will not be numbered, and %^^A! a QED symbol ``$\QED$'' will be added at the end of the %^^A! environment. All the theorem environments defined by yourself %^^A! can be used as the pre-defined ones. %^^A! \end{function} %^^A! % % ���������������~\ref{tab:theorem} ��������������������������������������������������������� % \begin{latexexample}[deletetexcs={\newtheorem}, % morekeywords={\newtheorem,\newtheorem*}] % \newtheorem*{proof}{������} % \newtheorem{axiom}{������} % \newtheorem{corollary}{������} % ... % \end{latexexample} %^^A! Actually, the pre-defined math environments are just defined %^^A! with \cs{new\-the\-o\-rem} and \cs{new\-the\-o\-rem*}: %^^A! \begin{latexexample}[deletetexcs={\newtheorem}, %^^A! morekeywords={\newtheorem,\newtheorem*}] %^^A! \newtheorem*{proof}{proof} %^^A! \newtheorem{axiom}{axiom} %^^A! \newtheorem{corollary}{corollary} %^^A! ... %^^A! \end{latexexample} %^^A! % % ��� \cs{fdusetup} ���������\cs{newtheorem} ��������������� \meta{������} % ���������������������������������������������������������������������������|theorem/|������ %^^A! Similar with \cs{fdusetup}, the optional argument \meta{options} %^^A! of \cs{newtheorem} is a key-value list as well. The available %^^A! are described below. Note that you don't need to type in the %^^A! ``|theorem/|'' prefix. %^^A! % % \begin{function}{theorem/style} % \begin{fdusyntax}[emph={[1]style}] % style = (*<(plain)|margin|change|\\ % XXXXXX\mbox{}~~~~~~~~break|marginbreak|changebreak>*) % \end{fdusyntax} % ��������������������������������� % \end{function} %^^A! \begin{function}{theorem/style} %^^A! \begin{fdusyntax}[emph={[1]style}] %^^A! style = (*<(plain)|margin|change|\\ %^^A! XXXX\mbox{}~~~~~~~~break|marginbreak|changebreak>*) %^^A! \end{fdusyntax} %^^A! The overall style of the theorem environment. %^^A! \end{function} %^^A! % % \begin{function}{theorem/header-font} % \begin{fdusyntax}[emph={[1]header-font}] % header-font = (*\marg{������}*) % \end{fdusyntax} % ��������������������������������������������������������� \tn{sffamily}������������������ % ������������������������������������ |\bfseries\upshape|������������������������ % \end{function} %^^A! \begin{function}{theorem/header-font} %^^A! \begin{fdusyntax}[emph={[1]header-font}] %^^A! header-font = (*\marg{font}*) %^^A! \end{fdusyntax} %^^A! Font of the theorem header. Default value is \tn{sffamily} %^^A! and |\bfseries\upshape| for Chinese and English template, %^^A! respectively. %^^A! \end{function} %^^A! % % \begin{function}{theorem/body-font} % \begin{fdusyntax}[emph={[1]body-font}] % body-font = (*\marg{������}*) % \end{fdusyntax} % ��������������������������������������������� \tn{fdu@kai}��������������������������� % ��������� \tn{itshape}��������������� % \end{function} %^^A! \begin{function}{theorem/body-font} %^^A! \begin{fdusyntax}[emph={[1]body-font}] %^^A! body-font = (*\marg{font}*) %^^A! \end{fdusyntax} %^^A! Font of the theorem body. Default value is \tn{fdu@kai} %^^A! (\textit{������}) and \tn{itshape} for Chinese and English %^^A! template, respectively. %^^A! \end{function} %^^A! % % \begin{function}{theorem/qed} % \begin{fdusyntax}[emph={[1]qed}] % qed = (*\marg{������}*) % \end{fdusyntax} % ��������������������������������������������������� \cs{newtheorem} ��������������������������������� % ��� \cs{newtheorem*} ��������������������� |\ensuremath{\QED}|���������$\QED$������ % \end{function} %^^A! \begin{function}{theorem/qed} %^^A! \begin{fdusyntax}[emph={[1]qed}] %^^A! qed = (*\marg{symbol}*) %^^A! \end{fdusyntax} %^^A! Theorem end mark. For \cs{newtheorem}, default value is %^^A! empty; for \cs{newtheorem*}, default value is %^^A! |\ensuremath{\QED}| (i.e.\ ``$\QED$''). %^^A! \end{function} %^^A! % % \begin{function}{theorem/counter} % \begin{fdusyntax}[emph={[1]counter}] % counter = (*\marg{���������}*) % \end{fdusyntax} % ��������������������������������������� \meta{���������} ������������������������ \meta{���������} % ���������������������\cite{���������2013latex������}��������� |chapter|������������������������ % ������ \cs{newtheorem*} ������������������������ % \end{function} %^^A! \begin{function}{theorem/counter} %^^A! \begin{fdusyntax}[emph={[1]counter}] %^^A! counter = (*\marg{counter}*) %^^A! \end{fdusyntax} %^^A! The theorem will be enumerated within \meta{counter}. For %^^A! example, the default value is |chapter|, which means with %^^A! each new \tn{chapter}, the enumeration begins again with 1. %^^A! This option is invalid for \cs{newtheorem*}. %^^A! \end{function} %^^A! % % \subsubsection{������} %^^A! \subsubsection{Back matter} %^^A! % % \begin{function}{\backmatter} % ��������������������������� % \end{function} %^^A! \begin{function}{\backmatter} %^^A! Declare the beginning of back matter. %^^A! \end{function} %^^A! % % ������������������������������������������������ %^^A! Back matter contains bibliography, declaration page, etc. %^^A! % % \begin{function}[updated=2018-01-25]{\printbibliography} % \begin{fdusyntax}[morekeywords={\printbibliography}] % \printbibliography(*\oarg{������}*) % \end{fdusyntax} % ��������������������������������� \kvopt{bib-backend}{bibtex}������ \meta{������} % ������������������ \tn{bibliography} \texttt{\marg{���������������}}������������ % \meta{���������������} ��������� \opt{style/bib-resource} ������������������������ % \ref{subsubsec:������������}~������������������ \kvopt{bib-backend}{biblatex}��� % ��������������� \pkg{biblatex} ��������������������������������������������������� % \cite{biblatex}��� % \end{function} %^^A! \begin{function}[updated=2018-01-25]{\printbibliography} %^^A! \begin{fdusyntax}[morekeywords={\printbibliography}] %^^A! \printbibliography(*\oarg{options}*) %^^A! \end{fdusyntax} %^^A! Print the bibliography. When \kvopt{bib-backend}{bibtex}, then %^^A! \meta{options} is invalid and this command is equivalent to %^^A! \tn{bibliography} \texttt{\marg{bib files}}, where \meta{bib files} %^^A! should be specified with option \opt{style/bib-resource} (see %^^A! subsubsection~\ref{subsubsec:style-and-format}). When %^^A! \kvopt{bib-backend}{bibtex}, then \tn{printbibliography} is %^^A! provided by \pkg{biblatex} and the available options can be %^^A! found in its documentation. %^^A! \end{function} %^^A! % % \begin{function}[added=2023-02-06]{acknowledgements} % \begin{fdusyntax}[emph={[2]acknowledgements}] % \begin{acknowledgements} % (*\meta{������������}*) % \end{acknowledgements} % \end{fdusyntax} % ��������� % \end{function} %^^A! \begin{function}[added=2023-02-06]{acknowledgements} %^^A! \begin{fdusyntax}[emph={[2]acknowledgements}] %^^A! \begin{acknowledgements} %^^A! (*\meta{acknowledgements}*) %^^A! \end{acknowledgements} %^^A! \end{fdusyntax} %^^A! Acknowledgements. %^^A! \end{function} %^^A! % % \section{������������������} %^^A! \section{Packages dependencies} %^^A! % % ������������������������������������������������������������������������������������������ % ��������������� % \begin{itemize} % \item ������������������������������������\emph{������}������������������ % ��������������������� % \begin{itemize} % \item \pkg{xtemplate} ��� \pkg{l3keys2e}��������������� \LaTeX3 ��������������� % ������������ \pkg{l3packages} ��������� % \item \cls{ctexbook}��������������������������������������������� \CTeX{} % ������ \cite{CTeX}��� % \item \pkg{amsmath}������ \LaTeX{} ������������������������������ % ��������������������� \AmSLaTeX{} ��������� % \item \pkg{unicode-math}��������������� Unicode ��������� % OpenType ��������������� % \item \pkg{geometry}������������������������������ % \item \pkg{fancyhdr}������������������������ % \item \pkg{footmisc}������������������ % \item \pkg{ntheorem}��������������������������������������� % \item \pkg{graphicx}��������������������������������� % \item \pkg{longtable}��������������������������������������� % \item \pkg{caption}������������������������ % \item \pkg{xcolor}������������������������ % \item \pkg{hyperref}������������������������������������������������������������ % \end{itemize} % \item ������ \kvopt{style/footnote-style}{pifont} ��������������� % \pkg{pifont} ������������������ \pkg{psnfss} ��������� % \item ������ \kvopt{style/bib-backend}{bibtex} ��������������� % \pkg{natbib} ������������������ \BibTeX{} ������������������������������ % \pkg{gbt7714} ������������ \cite{natbib,gbt7714}��� % \item ������ \kvopt{style/bib-backend}{biblatex} ��������������� % \pkg{biblatex} ������������������ \biber{} ������������������������������ % \pkg{biblatex-gb7714-2015} ������������ % \cite{biblatex,biblatex-gb7714-2015}��� % \end{itemize} %^^A! Different compilation methods and options will result in a %^^A! different packages dependency. Details are as follows: %^^A! \begin{itemize} %^^A! \item In any case, \cls{fduthesis} will load the following %^^A! packages \emph{explicitly}: %^^A! \begin{itemize} %^^A! \item \pkg{xtemplate} and \pkg{l3keys2e}, belong to %^^A! \pkg{l3packages} bundle %^^A! \item \cls{ctexbook}, belongs to \CTeX{} bundle %^^A! \item \pkg{amsmath}, belongs to \AmSLaTeX{} bundle %^^A! \item \pkg{unicode-math} %^^A! \item \pkg{geometry} %^^A! \item \pkg{fancyhdr} %^^A! \item \pkg{footmisc} %^^A! \item \pkg{ntheorem} %^^A! \item \pkg{graphicx} %^^A! \item \pkg{longtable} %^^A! \item \pkg{caption} %^^A! \item \pkg{xcolor} %^^A! \item \pkg{hyperref} %^^A! \end{itemize} %^^A! \item When chosen \kvopt{style/footnote-style}{pifont}, %^^A! package \pkg{pifont} will be loaded. It belongs to %^^A! \pkg{psnfss} bundle. %^^A! \item When chosen \kvopt{style/bib-backend}{bibtex}, %^^A! package \pkg{natbib} will be loaded. Meanwhile, program %^^A! \BibTeX{} will be required for compilation. The %^^A! bibliography style is provided by \pkg{gbt7714}. %^^A! \item When chosen \kvopt{style/bib-backend}{biblatex}, %^^A! package \pkg{biblatex} will be loaded. Program \biber{} %^^A! will be required then. The bibliography style is provided %^^A! by \pkg{biblatex-gb7714-2015}. %^^A! \end{itemize} %^^A! % % ��������������������������������������������������������������������������������������� % ������������������������������������������������������������������ %^^A! Only the packages loaded directly by \cls{fduthesis} are listed %^^A! here. If you need to know the dependencies of the packages %^^A! themselves, please refer to the corresponding manuals. %^^A! % % \begin{thebibliography}{99} % % \newcommand\urlprefix{\newline\hspace*{\fill}} % \let\OldUrl=\url % \renewcommand\url[2][]{{\small\textit{#1}~\OldUrl{#2}}} % \newcommand\CTANurl[2][]{{^^A % \small\textit{#1}~\href{https://mirror.ctan.org/#2}{\texttt{CTAN://#2}}}} % % \subsection{������} % % \bibitem[Knuth(1986)]{texbook} % \textsc{Knuth D E}. % \newblock \textit{The \TeX book: Computers \& Typesetting, volume A} [M]. % \newblock Boston: Addison--Wesley Publishing Company, 1986 % \urlprefix \CTANurl[���������^^A % \footnote{������������������������������������������ Knuth ���������������������������������������������}���]^^A % {systems/knuth/dist/tex/texbook.tex} % % \bibitem[Mittelbach et~al.(2004)]{companion} % \textsc{Mittelbach F} and \textsc{Goossens M}. % \newblock \textit{The \LaTeX{} Companion} [M]. % \newblock 2nd ed. % \newblock Boston: Addison--Wesley Publishing Company, 2004 % % \bibitem[()]{������2017latex2e} % ������. % \newblock \textit{\LaTeXe{} ���������������������������} [M]. % \newblock ������: ���������������������, 2017 % % \bibitem[()]{���������2013latex������} % ���������. % \newblock \textit{\LaTeX{} ������} [M]. % \newblock ������: ���������������������, 2013 % % \subsection{���������������} % % \bibitem[()]{gb-t-7713.1-2006} % ���������������������������������, ���������������������������������������������. % \newblock \textit{������������������������: GB/T 7713.1--2006} [S]. % \newblock ������: ���������������������, 2007 % % \bibitem[()]{gb-t-7714-2015} % ���������������������������������������������. % \newblock \textit{���������������\quad ������������������������: GB/T 7714--2015} [S]. % \newblock ������: ���������������������, 2015 % % \bibitem[()]{gb-t-15834-2011} % ������������������������������������. % \newblock \textit{������������������: GB/T 15834--2011} [S/OL]. % \newblock ������: ���������������������, 2012 % \urlprefix\url{http://www.moe.gov.cn/ewebeditor/uploadfile/2015/01/13/20150113091548267.pdf} % % \bibitem[()]{clreq} % W3C. % \newblock \textit{���������������������Requirements for Chinese Text Layout���} [EB/OL]. % \newblock W3C Editor's Draft. % \newblock (2023-05-24) % \urlprefix\url{https://w3c.github.io/clreq/} % % \bibitem[()]{������������������������} % ���������������������, ������������������������. % \newblock \textit{���������������������������������������������} [EB/OL]. % \newblock 2017 ��� 3 ������������. % \newblock (2017-03-27) % \urlprefix\url{http://www.gs.fudan.edu.cn/_upload/article/4c/a8/a82545ef443b9c057c14ba13782c/c883c6f3-6d7f-410c-8f30-d8bde6fcb990.doc} % % \subsection{���������������} % % \bibitem[()]{source2e} % \textsc{Braams J}, \textsc{Carlisle D}, \textsc{Jeffrey A}, et~al. % \newblock \textit{The \LaTeXe{} Sources} [CP/OL]. % \newblock (2022-11-01) % \urlprefix\url{https://ctan.org/pkg/latex} % \urlprefix\CTANurl[������������]{macros/latex/base/source2e.pdf} % % \bibitem[()]{CTeX} % \textsc{CTEX.ORG}. % \newblock \textit{\CTeX{} ������������} [EB/OL]. % \newblock version 2.5.10, % \newblock (2022-07-14) % \urlprefix\url{https://ctan.org/pkg/ctex} % \urlprefix\CTANurl[���������������������]{language/chinese/ctex/ctex.pdf} % % \bibitem[()]{xeCJK} % \textsc{CTEX.ORG}. % \newblock \textit{\pkg{xeCJK} ������} [EB/OL]. % \newblock version 3.9.1, % \newblock (2022-08-05) % \urlprefix\url{https://ctan.org/pkg/xecjk} % \urlprefix\CTANurl[���������������������]{macros/xetex/latex/xecjk/xeCJK.pdf} % % \bibitem[()]{natbib} % \textsc{Daly P W}. % \newblock \textit{Natural Sciences Citations and References} [EB/OL]. % \newblock version 8.31b, % \newblock (2010-09-13) % \urlprefix\url{https://ctan.org/pkg/natbib} % \urlprefix\CTANurl[���������������������]{macros/latex/contrib/natbib/natbib.pdf} % % \bibitem[()]{source3} % \textsc{The \LaTeX3 Project}. % \newblock \textit{The \LaTeX3 Sources} [CP/OL]. % \newblock (2023-05-22) % \urlprefix\url{https://ctan.org/pkg/l3kernel} % \urlprefix\CTANurl[������������]{macros/latex/contrib/l3kernel/source3.pdf} % % \bibitem[()]{biblatex} % \textsc{Kime P}, \textsc{Wemheuer M}, \textsc{Lehman P}. % \newblock \textit{The \pkg{biblatex} Package} [EB/OL]. % \newblock version 3.19, % \newblock (2023-03-05) % \urlprefix\url{https://ctan.org/pkg/biblatex} % \urlprefix\CTANurl[���������]{macros/latex/contrib/biblatex/doc/biblatex.pdf} % % \bibitem[()]{lshort} % \textsc{Oetiker T}, \textsc{Partl H}, \textsc{Hyna I}, et~al. % \newblock \textit{The Not So Short Introduction to \LaTeXe{}: Or \LaTeXe{} in 139 minutes} [EB/OL]. % \newblock version 6.4, % \newblock (2021-03-09) % \urlprefix\url{https://ctan.org/pkg/lshort-english} % \urlprefix\CTANurl[���������]{info/lshort/english/lshort.pdf} % % \bibitem[()]{lshort-zh-cn} % \textsc{Oetiker T}, \textsc{Partl H}, \textsc{Hyna I}, et~al. % \newblock \textit{��������������������������� \LaTeXe{} ������: ��� 111 ������������ \LaTeXe{}} [EB/OL]. % \newblock \CTeX{} ������������, ���. % \newblock ������������ version 6.4, ������������ version 6.04, % \newblock (2023-05-05) % \urlprefix\url{https://ctan.org/pkg/lshort-zh-cn} % \urlprefix\CTANurl[���������]{info/lshort/chinese/lshort-zh-cn.pdf} % % \bibitem[()]{biblatex-gb7714-2015} % ���������. % \newblock \textit{������ GB/T 7714-2015 ��������� biblatex ������������������} [EB/OL]. % \newblock version 1.1n, % \newblock (2023-05-25) % \urlprefix\url{https://ctan.org/pkg/biblatex-gb7714-2015} % \urlprefix\CTANurl[���������]{biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf} % % \bibitem[()]{gbt7714} % ������������\textsc{Zeping L}���. % \newblock \textit{GB/T 7714-2015 \BibTeX{} Style} [EB/OL]. % \newblock version 2.1.5, % \newblock (2022-10-03) % \urlprefix\url{https://ctan.org/pkg/gbt7714} % \urlprefix\CTANurl[���������]{biblio/bibtex/contrib/gbt7714/gbt7714.pdf} % % \bibitem[()]{cquthesis} % ���������. % \newblock \textit{\textsc{CquThesis}��������������������������� \LaTeX{} ������} [EB/OL]. % \newblock version 1.50, % \newblock (2020-06-23) % \urlprefix\url{https://ctan.org/pkg/cquthesis} % \urlprefix\CTANurl[���������������������]{macros/latex/contrib/cquthesis/cquthesis.pdf} % % \bibitem[()]{pkuthss} % Casper Ti. Vector. % \newblock \textit{���������������������������������pkuthss} [EB/OL]. % \newblock version 1.9.3, % \newblock (2022-10-30) % \urlprefix\url{https://ctan.org/pkg/pkuthss} % \urlprefix\CTANurl[���������������������]{macros/latex/contrib/pkuthss/pkuthss.pdf} % % \bibitem[()]{thuthesis} % ������������ TUNA ������. % \newblock \textit{\textsc{ThuThesis}���������������������������������} [EB/OL]. % \newblock version 7.4.0, % \newblock (2023-05-15) % \urlprefix\url{https://ctan.org/pkg/thuthesis} % \urlprefix\CTANurl[���������������������]{macros/latex/contrib/thuthesis/thuthesis.pdf} % % \emph{������������������������ CTAN���������������������������} % % \bibitem[()]{sjtuthesis} % \textsc{SJTUG}. % \newblock \textit{������������������������������������} [EB/OL]. % \newblock version 2.0.2, % \newblock (2023-04-01) % \urlprefix\url{https://github.com/sjtug/SJTUThesis} % \urlprefix\url[������������������]{https://github.com/sjtug/SJTUTeX} % % \bibitem[()]{ustcthesis} % \textsc{USTC \TeX{} User Group}. % \newblock \textit{������������������������������������ \LaTeX{} ������} [EB/OL]. % \newblock version 3.3.4, % \newblock (2023-05-10) % \urlprefix\url{https://github.com/ustctug/ustcthesis} % % \bibitem[()]{ucasthesis} % \textsc{mohuangrui}. % \newblock \textit{\pkg{ucasthesis} ��������������������� \LaTeX{} ������} [EB/OL]. % \newblock (2021-10-29) % \urlprefix\url{https://github.com/mohuangrui/ucasthesis} % % \emph{���������������������������������} % % \bibitem[()]{pandoxie2014fduthesislatex} % \textsc{Pandoxie}. % \newblock \textit{Fudan University-Latex Template} [EB/OL]. % \newblock (2014-06-07) % \urlprefix\url{https://github.com/Pandoxie/FDU-Thesis-Latex} % % \bibitem[()]{richard2016fudanthesis} % \textsc{richard}. % \newblock \textit{������������������������������������} [EB/OL]. % \newblock (2016-01-31) % \urlprefix\url{https://github.com/richarddzh/fudan-thesis} % % \bibitem{������������������������������������} % ������������������������������. % \newblock \textit{2019 ������������������������������������} [EB/OL]. % \newblock (2019-03-12) % \urlprefix\url{https://math.fudan.edu.cn/f3/e1/c30360a324577/page.htm} % % \subsection{������} % % \bibitem[()]{wright2009dtxfile} % \textsc{Wright J}. % \newblock \textit{A model dtx file} [EB/OL]. % \newblock (2009-10-06) % \urlprefix\url{https://www.texdev.net/2009/10/06/a-model-dtx-file/} % % \bibitem[()]{������������} % ���������\textsc{Eric Q L}���. % \newblock \textit{������������������������������������������} [EB/OL]. % \urlprefix\url{https://thetype.com/kongque/} % % \end{thebibliography} % % \clearpage % %^^A! \end{document} % % \end{documentation} % % \begin{implementation} % %^^A ������������������������ % \newgeometry{ % left = 2.25 in, % right = 1.00 in, % top = 1.25 in, % bottom = 1.00 in, % marginpar = 2.25 in % } % % \section{������������} % % ��������������� \LaTeX3 ��������������������� \pkg{expl3} ��������� % ������������ \pkg{l3packages} ��������������������� % % ������ \LaTeX3 ������������������������������������������������������������������������ % ���������������|_|���������������|:|������������������������������������ % ������������������������������|~|������������������ |~| ��������������������������������� % ��������� \LaTeXe{} ��������������� \tn{nobreakspace} ��������� % % ������������������������������ \textcolor[HTML]{2E3191}{\textsf{<*class>}} % ������������������ \pkg{DocStrip} ���������guard��������������������������������������� % ���\textsf{*}���������\textsf{/}��������������������������������������������������� % ���\textsf{*}���������\textsf{/}������ guard ������������������������������������������ % ������������������������������������ guard ��������������������������������������������������� % % ������������������ \textcolor{MaterialPink}{\textsf{<@@=fdu>}} ��� guard��� % ��������������������������������������������� % % \subsection{������} % % \begin{macrocode} %<@@=fdu> %<*class|class-en> % \end{macrocode} % % \changes{v0.8}{2021/09/15}{������ \LaTeX{} 2020/10/01��������������������� % \pkg{expl3} ��� \pkg{xparse} ���������} % \changes{v0.8}{2022/02/17}{���������������������������������} % % ������ \LaTeX3 ��������������� % \begin{macrocode} \RequirePackage { xtemplate, l3keys2e } \msg_new:nnn { fduthesis } { 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. } \clist_map_inline:nn { xtemplate, l3keys2e } { \@ifpackagelater {#1} { 2020/07/17 } { } { \msg_error:nnn { fduthesis } { l3-too-old } {#1} } } % \end{macrocode} % % ������ \cls{fduthesis} ��������� \XeTeX{} ��� \LuaTeX{}��� % \begin{macrocode} \msg_new:nnn { fduthesis } { unsupported-engine } { The~ fduthesis~ class~ requires~ either~ XeTeX~ or~ LuaTeX. \\\\ "#1"~ is~ not~ supported~ at~ present.~ You~ must~ change \\ your~ typesetting~ engine~ to~ "xelatex"~ or~ "lualatex". } \sys_if_engine_xetex:F { \sys_if_engine_luatex:F { \msg_fatal:nnx { fduthesis } { unsupported-engine } { \c_sys_engine_str } } } % \end{macrocode} % % \subsubsection{������������������} % % \begin{variable}{\l_@@_tmpa_box, % \l_@@_tmpa_clist, % \l_@@_tmpa_dim, % \l_@@_tmpa_skip, % \l_@@_tmpa_tl,\l_@@_tmpb_tl} % ��������������� % \begin{macrocode} \box_new:N \l_@@_tmpa_box \clist_new:N \l_@@_tmpa_clist \dim_new:N \l_@@_tmpa_dim \skip_new:N \l_@@_tmpa_skip \tl_new:N \l_@@_tmpa_tl \tl_new:N \l_@@_tmpb_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_thesis_type_tl} % ��������������� % \begin{macrocode} \tl_new:N \g_@@_thesis_type_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_to_ctexbook_clist,\g_@@_to_hyperref_clist} % ��������������� \cls{fduthesis} ������ \cls{ctexbook} ������������ % \pkg{hyperref} ������������������������ % \begin{macrocode} \clist_new:N \g_@@_to_ctexbook_clist \clist_new:N \g_@@_to_hyperref_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_twoside_bool} % ��������������������������������������������� % \begin{macrocode} \bool_new:N \g_@@_twoside_bool \bool_set_true:N \g_@@_twoside_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_draft_bool} % ��������������������������������������������� % \begin{macrocode} \bool_new:N \g_@@_draft_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_config_tl} % ������������������������������������������ % \begin{macrocode} \tl_new:N \g_@@_config_tl % \end{macrocode} % \end{variable} % % \subsubsection{������������} % % \begin{macro}{ % \file_input:V, % \int_to_arabic:v, % \keys_define:nx, % \prop_item:No, % \regex_replace_all:nnc} % \begin{macro}[TF]{\tl_if_eq:Vn} % \LaTeX3{} ��������������� % \begin{macrocode} \cs_generate_variant:Nn \file_input:n { V } \cs_generate_variant:Nn \int_to_arabic:n { v } \cs_generate_variant:Nn \keys_define:nn { nx } \cs_generate_variant:Nn \prop_item:Nn { No } \cs_generate_variant:Nn \regex_replace_all:nnN { nnc } \prg_generate_conditional_variant:Nnn \tl_if_eq:nn { Vn } { T, TF } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@@_quad:,\@@_qquad:} % ��������� \LaTeXe{} ������ \tn{quad} ��� \tn{qquad}��� % \begin{macrocode} \cs_new:Npn \@@_quad: { \skip_horizontal:n { 1 em } } \cs_new:Npn \@@_qquad: { \skip_horizontal:n { 2 em } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_vspace:N,\@@_vspace:n,\@@_vspace:c} % ������ \LaTeXe{} ������ \tn{vspace*}��� % \begin{macrocode} \cs_new_protected:Npn \@@_vspace:N #1 { \dim_set_eq:NN \l_@@_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_@@_tmpa_dim } \cs_new_protected:Npn \@@_vspace:n #1 { \skip_set:Nn \l_@@_tmpa_skip {#1} \@@_vspace:N \l_@@_tmpa_skip } \cs_generate_variant:Nn \@@_vspace:N { c } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_symbol:n} % ��������� \LaTeXe{} ������ \tn{symbol}��� % \begin{macrocode} \cs_new:Npn \@@_symbol:n #1 { \tex_char:D #1 \scan_stop: } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_arabic:n} % ��������� \LaTeXe{} ������ \tn{arabic}��� % \begin{macrocode} \cs_new:Npn \@@_arabic:n #1 { \int_to_arabic:v { c@ #1 } } % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/15}{������������ \LaTeX{} 2020/10/01 ���������������������} % % \begin{macro}{\@@_gadd_ltxhook:nn} % ������ \LaTeX{} ��������������������������������������������������������������� % \texttt{begindocument/\allowbreak before} ������������������������ \pkg{xeCJK} ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_gadd_ltxhook:nn #1#2 { \hook_gput_code:nnn {#1} { . } {#2} } \hook_gset_rule:nnnn { begindocument/before } { . } { < } { xeCJK } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_patch_cmd:Nnn,\@@_appto_cmd:Nn} % ��������������������� \pkg{ctexpatch} ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_patch_cmd:Nnn #1#2#3 { \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3} { } { \ctex_patch_failure:N #1 } } \cs_new_protected:Npn \@@_appto_cmd:Nn #1#2 { \ctex_appto_cmd:NnnTF #1 { } {#2} { } { \ctex_patch_failure:N #1 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_fn_style:nn, % \@@_define_punct:nn, % \@@_define_name:nn, % \@@_define_name:nnn} % ������������������������������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_define_fn_style:nn #1#2 { \tl_const:cn { c_@@_fn_style_ #1 _tl } {#2} } \cs_new_protected:Npn \@@_define_punct:nn #1#2 { \tl_const:cn { c_@@_ #1 _tl } {#2} } \cs_new_protected:Npn \@@_define_name:nn #1#2 { \tl_const:cn { c_@@_name_ #1 _tl } {#2} } \cs_new_protected:Npn \@@_define_name:nnn #1#2#3 { \tl_const:cn { c_@@_name_ #1 _tl } {#2} \tl_const:cn { c_@@_name_ #1 _en_tl } {#3} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_msg_new:nn, % \@@_error:n,\@@_error:nn,\@@_error:nx,\@@_error:nnn,\@@_error:nnnn, % \@@_warning:n,\@@_warning:nn,\@@_warning:nxx, % \@@_info:nx} % ������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_msg_new:nn { \msg_new:nnn { fduthesis } } \cs_new:Npn \@@_error:n { \msg_error:nn { fduthesis } } \cs_new:Npn \@@_error:nn { \msg_error:nnn { fduthesis } } \cs_new:Npn \@@_error:nx { \msg_error:nnx { fduthesis } } \cs_new:Npn \@@_error:nnn { \msg_error:nnnn { fduthesis } } \cs_new:Npn \@@_error:nnnn { \msg_error:nnnnn { fduthesis } } \cs_new:Npn \@@_warning:n { \msg_warning:nn { fduthesis } } \cs_new:Npn \@@_warning:nn { \msg_warning:nnn { fduthesis } } \cs_new:Npn \@@_warning:nxx { \msg_warning:nnxx { fduthesis } } \cs_new:Npn \@@_info:nx { \msg_info:nnx { fduthesis } } % \end{macrocode} % \end{macro} % % \subsection{������������} % % ������ |fdu/option| ������������ % \begin{macrocode} \keys_define:nn { fdu / option } { % \end{macrocode} % % \changes{v0.7}{2018/02/01}{������ \opt{type} ���������} % % \begin{macro}{type} % ������������������������������������������������������������������������������������������������ % ������������������������������������������������������������������������������ % \begin{macrocode} type .choices:nn = { doctor, master, bachelor } { \tl_set_eq:NN \g_@@_thesis_type_tl \l_keys_choice_tl }, type .value_required:n = true, type .initial:n = bachelor, % \end{macrocode} % \end{macro} % % \begin{macro}{oneside,twoside} % ��������������������������������������� % \begin{macrocode} oneside .value_forbidden:n = true, twoside .value_forbidden:n = true, oneside .code:n = { \clist_gput_right:Nn \g_@@_to_ctexbook_clist { oneside } \bool_set_false:N \g_@@_twoside_bool }, twoside .code:n = { \clist_gput_right:Nn \g_@@_to_ctexbook_clist { twoside } \bool_set_true:N \g_@@_twoside_bool }, % \end{macrocode} % \end{macro} % % \changes{v0.5}{2017/09/23}{������ \opt{nofonts} ���������} % % \begin{macro}{draft} % ��������������������������������������������� % \begin{macrocode} draft .choice:, draft / true .code:n = { \bool_set_true:N \g_@@_draft_bool \clist_gput_right:Nn \g_@@_to_ctexbook_clist { draft } }, draft / false .code:n = { \bool_set_false:N \g_@@_draft_bool }, draft .default:n = true, draft .initial:n = false, % \end{macrocode} % \end{macro} % % \changes{v0.7}{2018/01/31}{������ \opt{config} ���������} % % \begin{macro}{config} % ������������������ % \begin{macrocode} config .tl_set:N = \g_@@_config_tl, % \end{macrocode} % \end{macro} % % ��������������������� % \begin{macrocode} unknown .code:n = { \@@_error:n { unknown-option } } } \@@_msg_new:nn { unknown-option } { Class~ option~ "\l_keys_key_str"~ is~ unknown. } % \end{macrocode} % % ������������������������ |fdu/option|��� % \begin{macrocode} \ProcessKeysOptions { fdu / option } % \end{macrocode} % % ��������������������������� % \begin{macrocode} \file_input:n { fduthesis.def } \@@_msg_new:nn { load-config-file } { You~ are~ loading~ config~ file~ "#1". } \tl_if_empty:NF \g_@@_config_tl { \@@_info:nx { load-config-file } { \g_@@_config_tl } \file_input:V \g_@@_config_tl } % \end{macrocode} % % \subsection{������������������������} % % \changes{v0.7}{2018/01/19}{������ \cls{ctexbook} ������������������������������ % ��������������� \cls{book}���} % % ��������������� \cls{ctexbook} ������������ % \begin{macrocode} % TODO: (2017-07-22) Chinese fonts in fduthesis-en \PassOptionsToClass { UTF8, %<class-en> scheme = plain, heading = true, %<class> fontset = none, %<class-en> fontset = fandol, zihao = -4, %<class> linespread = \c_@@_line_spread_fp, \g_@@_to_ctexbook_clist } { ctexbook } % \end{macrocode} % % ������������������������ % \begin{macrocode} \clist_map_inline:nn { { no-math } { fontspec }, { perpage } { footmisc }, { amsmath, thmmarks } { ntheorem } } { \PassOptionsToPackage #1 } % \end{macrocode} % % ������ \cls{ctexbook} ������������ % ��������� \XeLaTeX{} ������������\cls{ctexbook} ������������������ \pkg{xeCJK} % ��������������������� \LuaLaTeX{} ������������������������ \pkg{LuaTeX-ja} ��������� % ��������������� \cls{ctexbook} ������������ \pkg{fontspec} ��������� % \begin{macrocode} \LoadClass { ctexbook } % \end{macrocode} % % \changes{v0.4}{2017/08/13}{���������������������} % % ���������������������������\pkg{amsmath} ��������� \pkg{unicode-math} ��������������� % \begin{macrocode} \RequirePackage { amsmath, unicode-math, geometry, fancyhdr, footmisc, ntheorem, graphicx, longtable, caption, xcolor } % \end{macrocode} % % \changes{v0.8}{2021/09/16}{��������� \cls{ctexbook} ��� \pkg{xeCJK} ������������} % % \begin{macro}{\@@_check_package:nnn,\@@_check_class:nnn} % ��������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_check_package:nnn #1#2#3 { \@ifpackagelater {#1} {#2} { } { \@@_error:nnnn { package-too-old } { Package } {#1} {#3} } } \cs_new_protected:Npn \@@_check_class:nnn #1#2#3 { \@ifclasslater {#1} {#2} { } { \@@_error:nnnn { package-too-old } { Class } {#1} {#3} } } \@@_msg_new:nn { package-too-old } { #1~ "#2"~ is~ too~ old. \\ The~ fduthesis~ class~ only~ supports~ "#2" \\ with~ a~ version~ higher~ than~ v#3. \\\\ Please~ update~ an~ up-to-date~ version~ of~ it \\ using~ your~ TeX~ package~ manager~ or~ from~ CTAN. } % \end{macrocode} % \end{macro} % % \begin{macrocode} \@@_check_class:nnn { ctexbook } { 2021/03/14 } { 2.5.6 } \sys_if_engine_xetex:T { \@@_check_package:nnn { xeCJK } { 2020/05/01 } { 3.8.3 } } % \end{macrocode} % % \subsection{������������} % % ������ \pkg{geometry} ��������������������������������������������������������������������� % $\qty{2.54}{\centi\meter}=\qty{1}{in}$��� % $\qty{3.18}{\centi\meter}=\qty{1.25}{in}$��� % \begin{macrocode} \geometry { paper = a4paper, vmargin = 2.54 cm, hmargin = 3.18 cm, headheight = 15 pt } % \end{macrocode} % % ��������������������������������������������������������� % \begin{macrocode} \bool_if:NT \g_@@_draft_bool { \geometry { showframe } } % \end{macrocode} % % \subsection{������} % % \subsubsection{���������������������} % % \changes{v0.7c}{2019/03/05}{������������������������������ macOS���} % % \begin{variable}{\g_@@_fontset_tl, \g_@@_cjk_fontset_tl} % ������������������������ % \begin{macrocode} \tl_new:N \g_@@_fontset_tl %<class>\tl_new:N \g_@@_cjk_fontset_tl % \end{macrocode} % \end{variable} % % \begin{macro}{style/font} % \changes{v0.7c}{2019/03/05}{������ \opt{garamond} ��� \opt{times*} ���������} % ������������������������ % \begin{macrocode} \keys_define:nn { fdu / style } { font .choices:nn = { garamond, libertinus, lm, palatino, times, times*, none } { \tl_set_eq:NN \g_@@_fontset_tl \l_keys_choice_tl }, font .value_required:n = true, } % \end{macrocode} % \end{macro} % % \begin{macro}{style/cjk-font} % \changes{v0.7c}{2019/03/05}{������ \opt{sinotype} ��� \opt{sourcehan} ���������} % ������������������������ % \begin{macrocode} %<*class> \keys_define:nn { fdu / style } { cjk-font .choices:nn = { adobe, fandol, founder, mac, sinotype, sourcehan, windows, none } { \tl_set_eq:NN \g_@@_cjk_fontset_tl \l_keys_choice_tl }, cjk-font .value_required:n = true, } % \end{macrocode} %</class> % \end{macro} % % \begin{macro}{ % \@@_setmainfont:nn, % \@@_setsansfont:nn, % \@@_setmonofont:nn, % \@@_setmathfont:nn} % ��������������������������������������������������� \pkg{fontspec} ��� \pkg{unicode-math}��� % \begin{arguments} % \item ��������� % \item ������ % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_setmainfont:nn #1#2 { \__fontspec_main_setmainfont:nn {#2} {#1} } \cs_new_protected:Npn \@@_setsansfont:nn #1#2 { \__fontspec_main_setsansfont:nn {#2} {#1} } \cs_new_protected:Npn \@@_setmonofont:nn #1#2 { \__fontspec_main_setmonofont:nn {#2} {#1} } \cs_new_protected:Npn \@@_setmathfont:nn #1#2 { \__um_setmathfont:nn {#2} {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{ % \@@_setCJKmainfont:nn, % \@@_setCJKsansfont:nn, % \@@_setCJKmonofont:nn} % \changes{v0.8}{2021/09/15}{������������������������} % ��������������������������������������������������� \pkg{xeCJK} ��� \pkg{ctex} ��������� % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_setCJKmainfont:nn #1#2 { \@@_set_family:xnn { \CJKrmdefault } {#2} {#1} } \cs_new_protected:Npn \@@_setCJKsansfont:nn #1#2 { \@@_set_family:xnn { \CJKsfdefault } {#2} {#1} } \cs_new_protected:Npn \@@_setCJKmonofont:nn #1#2 { \@@_set_family:xnn { \CJKttdefault } {#2} {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_set_cjk_font_kai:nn,\fdu@kai} % ��������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_set_cjk_font_kai:nn #1#2 { \@@_set_family:nnn { fdu@kai } {#2} {#1} } \cs_new_protected:Npn \fdu@kai { \@@_switch_family:n { fdu@kai } } % \end{macrocode} % \end{macro} % % \changes{v0.7d}{2019/03/29}{������������������������������������������������������������������} % % \begin{macro}{ % \@@_cjk_font_options:, % \@@_setCJKmainfont:n, % \@@_setCJKsansfont:n, % \@@_setCJKmonofont:n, % \@@_set_cjk_font_kai:n} % ��� bold���italic ��� bold italic ������������ roman ��������� % \begin{macrocode} \tl_const:Nn \@@_cjk_font_options: { UprightFont = *, ItalicFont = *, AutoFakeBold = true } \cs_new_protected:Npx \@@_setCJKmainfont:n #1 { \@@_setCJKmainfont:nn {#1} { \@@_cjk_font_options: } } \cs_new_protected:Npx \@@_setCJKsansfont:n #1 { \@@_setCJKsansfont:nn {#1} { \@@_cjk_font_options: } } \cs_new_protected:Npx \@@_setCJKmonofont:n #1 { \@@_setCJKmonofont:nn {#1} { \@@_cjk_font_options: } } \cs_new_protected:Npx \@@_set_cjk_font_kai:n #1 { \@@_set_cjk_font_kai:nn {#1} { \@@_cjk_font_options: } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_set_family:nnn,\@@_set_family:xnn,\@@_switch_family:n} % ������ CJK ������������������������������������ % \begin{macrocode} \sys_if_engine_xetex:TF { \cs_new_eq:NN \@@_set_family:nnn \xeCJK_set_family:nnn \cs_new_eq:NN \@@_switch_family:n \xeCJK_switch_family:n } { \cs_new_eq:NN \@@_set_family:nnn \ctex_ltj_set_family:nnn \cs_new_eq:NN \@@_switch_family:n \ctex_ltj_switch_family:n } \cs_generate_variant:Nn \@@_set_family:nnn { x } %</class> % \end{macrocode} % \end{macro} % % \begin{macro}{ % \setmainfont, % \setsansfont, % \setmonofont, % \setmathfont, % \setCJKmainfont, % \setCJKsansfont, % \setCJKmonofont} % ������������������������������������������������������������������������������������������������������������������ % ��������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_set_font_helper:n #1 { \exp_args:Nc \RenewDocumentCommand { set #1 font } { O { } m O { } } { \ctex_at_end_preamble:n { \use:c { @@_set #1 font:nn } {##2} { ##1, ##3 } } } } \clist_map_inline:nn { main, sans, mono, math } { \@@_set_font_helper:n {#1} } %<class>\clist_map_inline:nn { CJKmain, CJKsans, CJKmono } %<class> { \@@_set_font_helper:n {#1} } % \end{macrocode} % \end{macro} % % \changes{v0.7e}{2019/04/10}{������ Libertinus ��� XITS ���������������������������} % \changes{v0.8}{2021/09/15}{������ Libertinus Sans Bold Oblique ���������������������} % \changes{v0.9}{2023/02/18}{������������ Libertinus ��� XITS ���������������������} % % \begin{macro}{\@@_load_font_garamond:} % EB Garamond ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_garamond: { \@@_setmainfont:nn { EBGaramond } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, BoldItalicFont = *-BoldItalic } \@@_setsansfont:nn { LibertinusSans } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, } \@@_setmonofont:nn { lmmonolt10 } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-oblique, BoldItalicFont = *-boldoblique } \@@_setmathfont:nn { Garamond-Math.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_libertinus:} % Libertinus ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_libertinus: { \@@_setmainfont:nn { LibertinusSerif } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, BoldItalicFont = *-BoldItalic, } \@@_setsansfont:nn { LibertinusSans } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, } \@@_setmonofont:nn { lmmonolt10 } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-oblique, BoldItalicFont = *-boldoblique } \@@_setmathfont:nn { LibertinusMath-Regular.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_lm:} % Latin Modern ������������ \XeLaTeX{} ��� \LuaLaTeX{} ��������������������������������������� % ��������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_lm: { \@@_setmathfont:nn { latinmodern-math.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_palatino:} % Palatino ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_palatino: { \@@_setmainfont:nn { texgyrepagella } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic } \@@_setsansfont:nn { LibertinusSans } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, Scale = MatchUppercase, } \@@_setmonofont:nn { lmmonolt10 } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-oblique, BoldItalicFont = *-boldoblique } \@@_setmathfont:nn { texgyrepagella-math.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_times:} % Times ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_times: { \@@_setmainfont:nn { XITS } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, BoldItalicFont = *-BoldItalic, } \@@_setsansfont:nn { texgyreheros } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic } \@@_setmonofont:nn { texgyrecursor } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, Ligatures = CommonOff } \@@_setmathfont:nn { XITSMath-Regular.otf } { BoldFont = XITSMath-Bold.otf } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_times*:} % Times* ������������������������������������������������ % \begin{macrocode} \cs_new_protected:cpn { @@_load_font_ times* : } { \@@_setmainfont:nn { Times~ New~ Roman } { } \@@_setsansfont:nn { Arial } { } \@@_setmonofont:nn { Courier~ New } { } \@@_setmathfont:nn { XITSMath-Regular.otf } { BoldFont = XITSMath-Bold.otf } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_adobe:} % Adobe ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_adobe: { \@@_setCJKmainfont:n { AdobeSongStd-Light } \@@_setCJKsansfont:n { AdobeHeitiStd-Regular } \@@_setCJKmonofont:n { AdobeFangsongStd-Regular } \@@_set_cjk_font_kai:n { AdobeKaitiStd-Regular } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_fandol:} % Fandol ������������������������������ TeX ������������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_fandol: { \@@_setCJKmainfont:nn { FandolSong } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_setCJKsansfont:nn { FandolHei } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_setCJKmonofont:nn { FandolFang } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Regular, ItalicFont = *-Regular, BoldItalicFont = *-Regular } \@@_set_cjk_font_kai:nn { FandolKai } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Regular, ItalicFont = *-Regular, BoldItalicFont = *-Regular } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_founder:} % ��������������������������������������������������������������������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_founder: { \@@_setCJKmainfont:n { FZShuSong-Z01 } \@@_setCJKsansfont:n { FZHei-B01 } \@@_setCJKmonofont:n { FZFangSong-Z02 } \@@_set_cjk_font_kai:n { FZKai-Z03 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_mac:} % macOS ��������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_mac: { \@@_setCJKmainfont:nn { STSongti-SC } { UprightFont = *-Light, BoldFont = *-Bold, ItalicFont = *-Light, BoldItalicFont = *-Bold } \@@_setCJKsansfont:nn { STHeitiSC } { UprightFont = *-Medium, BoldFont = *-Medium, ItalicFont = *-Medium, BoldItalicFont = *-Medium } \@@_setCJKmonofont:n { STFangsong } \@@_set_cjk_font_kai:nn { STKaitiSC } { UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_sinotype:} % ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_sinotype: { \@@_setCJKmainfont:n { STSong } \@@_setCJKsansfont:n { STHeiti } \@@_setCJKmonofont:n { STFangsong } \@@_set_cjk_font_kai:n { STKaiti } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_sourcehan:} % ������������������������������������������������������������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_sourcehan: { \@@_setCJKmainfont:nn { SourceHanSerifSC } { UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_setCJKsansfont:nn { SourceHanSansSC } { UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_warning:n { source-han } } \@@_msg_new:nn { source-han } { Font~ set~ "sourcehan"~ does~ not~ contain~ kaiti~ and~ fangsong. } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_windows:} % Windows ��������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_windows: { \@@_setCJKmainfont:n { SimSun } \@@_setCJKsansfont:n { SimHei } \@@_setCJKmonofont:n { FangSong } \@@_set_cjk_font_kai:n { KaiTi } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font:} % ��������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_load_font: { \use:c { @@_load_font_ \g_@@_fontset_tl : } %<class> \use:c { @@_load_cjk_font_ \g_@@_cjk_fontset_tl : } } \ctex_at_end_preamble:n { \@@_load_font: } % \end{macrocode} % \end{macro} % %^^A ������������������������ v0.7c ������������ % \changes{v0.5}{2017/09/09}{��������������������������������������������������������������������������� % ���������������������������������������������������} % \changes{v0.6}{2017/11/11}{������������ XITS ������������������������������} % \changes{v0.5}{2017/09/23}{������ \kvopt{font}{none} ���������} % \changes{v0.5}{2017/09/23}{������ \kvopt{cjk-font}{none} ���������} % \changes{v0.5}{2017/09/23}{������ \pkg{fontspec} v2.6e���} % \changes{v0.6}{2017/10/11}{������ \pkg{unicode-math} v0.8h���} % % \subsubsection{������������������} % % ������ GB 3102.11--93 ������ ISO 80000-2:2009 ������������������������������ % ������������������������������������������������������������������ % ��������� |\keys_set:nn{unicode-math}| ��������������� \cs{unimathsetup}��� % \begin{macrocode} % TODO: (2018-01-19) Do we need `mathrm=sym`? \keys_set:nn { unicode-math } { math-style = ISO, bold-style = ISO, % mathrm = sym } % \end{macrocode} % % \subsubsection{������} % % \begin{macro}{style/font-size} % \changes{v0.9}{2023/02/08}{������������ \file{ctex-c5size.clo} ������������������} % |font-size| ������������������������������������ \cls{ctexbook} ������������������ % ������������������ |.clo| ��������� % \begin{macrocode} \keys_define:nn { fdu / style } { font-size .choice:, font-size .value_required:n = true, font-size / -4 .code:n = { }, font-size / 5 .code:n = { \ctex_file_input:n { ctex-c5size.clo } }, %<class-en> } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \begin{macro}{style/fullwidth-stop} % \changes{v0.6}{2017/10/14}{������������������ TECKit ���������������������} % ��������������������������������������������� % \begin{macrocode} %<*class> fullwidth-stop .choice:, fullwidth-stop .value_required:n = true, % \end{macrocode} % ���������������������������������������������\FSID ��������������� % \begin{macrocode} fullwidth-stop / catcode .code:n = { \@@_set_fullwidth_stop_catcode: }, % \end{macrocode} % ������ TECKit ��������������������������������������� \tn{defaultCJKfontfeatures} % |{|\kvopt{Map\-ping}{fullwidth-stop}|}|���������������������������������������\FSID��� % ������������������������������������ \XeTeX{} ������������ % \begin{macrocode} fullwidth-stop / mapping .code:n = { \sys_if_engine_xetex:TF { \clist_gset:Nn \g__xeCJK_default_features_clist { Mapping = fullwidth-stop } } { % \end{macrocode} % \LuaTeX{} ��������������������������������������������������� % \begin{macrocode} \sys_if_engine_luatex:T { \@@_warning:n { mapping-not-available } \@@_set_fullwidth_stop_catcode: } } }, fullwidth-stop / false .code:n = { } } % \end{macrocode} % \end{macro} % ��������������� % \begin{macrocode} \@@_msg_new:nn { mapping-not-available } { Option~ "fullwidth-stop = mapping"~ is~ not~ available~ in~ LuaTeX. \\ "fullwidth-stop = catcode"~ will~ be~ set~ instead. } % \end{macrocode} % % \begin{macro}{\@@_set_fullwidth_stop_catcode:} % \changes{v0.8}{2021/09/16}{���������������������������������������������������������������������} % ���\FSID ���������������������������������������\FSFW��� % \begin{macrocode} \cs_new:Npn \@@_set_fullwidth_stop_catcode: { \char_set_active_eq:NN ^^^^3002 \c_@@_fwid_full_stop_tl \char_set_catcode_active:N ^^^^3002 \clist_map_inline:nn { \c_@@_orig_decl_text_tl, \c_@@_auth_decl_text_tl } { \tl_set_rescan:Nno ##1 { } {##1} } } %</class> % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/15}{������ \tn{emph} ������������������} % % ������ \tn{emph} ��������������������������������������������������� % \begin{macrocode} %<*class> \DeclareEmphSequence { \itshape \fdu@kai, \upshape \CJKfamily { \CJKfamilydefault }, } %</class> % \end{macrocode} % % \changes{v0.6}{2017/10/28}{������ \LuaTeX{} ��������������������������������������������������� % ���������\pkg{ctex} v2.4.11 ���������������������������} % % \subsection{������������} % % ��������������������������������� % \begin{macrocode} \fancyhf { } % \end{macrocode} % % \begin{macro}{\@@_fancy_head:nn} % ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_fancy_head:nn #1#2 { \fancyhead [#1] %<class> { \small \fdu@kai \nouppercase {#2} } %<class-en> { \small \itshape \nouppercase {#2} } } % \end{macrocode} % \end{macro} % % ������������������������������������������������������ % % \cs{fancyhead} ���������������\opt{E} ��� \opt{O} ���������������������even���������������odd������ ��� \opt{L}��� % \opt{R} ��� \opt{C} ���������������������left������������right���������������center������������������������������������ % ��������������������������������������������������������������������������������������������������������������������������� % \begin{macrocode} \bool_if:NTF \g_@@_twoside_bool { \@@_fancy_head:nn { EL } { \leftmark } \@@_fancy_head:nn { OR } { \rightmark } } { \@@_fancy_head:nn { L } { \leftmark } \@@_fancy_head:nn { R } { \rightmark } } % \end{macrocode} % % ������������������������������������������ \opt{C} ���������������center������ % \begin{macrocode} \fancyfoot [ C ] { \small \thepage } % \end{macrocode} % % ������������������������������������ % \begin{macrocode} % \RenewDocumentCommand \headrulewidth { } { 0 pt } % \end{macrocode} % % \begin{macro}{\cleardoublepage} % ��������� \tn{cleardoublepage}��������������������������������������������������������������������� % \url{https://tex.stackexchange.com/a/1683}��� % \begin{macrocode} \RenewDocumentCommand \cleardoublepage { } { \clearpage \bool_if:NT \g_@@_twoside_bool { \int_if_odd:nF \c@page { \hbox:n { } \thispagestyle { empty } \newpage } } } % \end{macrocode} % \end{macro} % % \pkg{ctex} ������������ \opt{heading} ��������������������������������������� |headings|��� % ��������������� \pkg{ctex} ������������������������ \cs{pagestyle} ��� |fancy|��� % \begin{macrocode} \pagestyle { fancy } % \end{macrocode} % % \subsection{������������������} % % |\keys_set:nn{ctex}| ��������������� \cs{ctexset}��� % \begin{macrocode} \keys_set:nn { ctex } { % \end{macrocode} % ������������chapter������������section���������������sub-section������������������ % ������������ \kvopt{fixskip}{true} ��������������������������������������� % \begin{macrocode} chapter = { %<class> format = \huge \normalfont \sffamily \centering, %<*class-en> format = \centering, nameformat = \LARGE \bfseries, titleformat = \huge \bfseries, aftername = \par \nobreak \vskip 10 pt, %</class-en> beforeskip = 50 pt, afterskip = 40 pt, number = \@@_arabic:n { chapter }, fixskip = true }, section = { %<class> format = \Large \normalfont \sffamily \raggedright, %<class-en> format = \Large \bfseries \raggedright, beforeskip = 3.5 ex plus 1.0 ex minus 0.2 ex, afterskip = 2.7 ex plus 0.5 ex, fixskip = true }, subsection = { %<class> format = \large \normalfont \sffamily \raggedright, %<class-en> format = \large \bfseries \raggedright, beforeskip = 3.25 ex plus 1.0 ex minus 0.2 ex, afterskip = 2.5 ex plus 0.3 ex, fixskip = true } } % \end{macrocode} % % \changes{v0.7d}{2019/03/24}{���������������������������������������������������������} % \changes{v0.9}{2023/02/05}{������������������������������������������ \tn{quad}���} % % \begin{macro}{\@@_sanitize_chapter_title:n} % ��������������������� \tn{quad}��� % \begin{macrocode} \cs_new_protected:Npn \@@_sanitize_chapter_title:n #1 { \tl_clear:N \l_@@_tmpa_tl \tl_set:No \l_@@_tmpa_tl {#1} \tl_remove_all:Nn \l_@@_tmpa_tl { \quad } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter:n,\@@_chapter:V} % ������������������������������������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_chapter:n #1 { \@@_sanitize_chapter_title:n {#1} \group_begin: \ctexset { chapter / numbering = false } \chapter [ \l_@@_tmpa_tl ] {#1} \group_end: \@@_chapter_header:n {#1} } \cs_generate_variant:Nn \@@_chapter:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter_no_toc:n,\@@_chapter_no_toc:V} % ������������������������������������������������������������ % \url{https://tex.stackexchange.com/a/1821}��� % \begin{macrocode} \cs_new_protected:Npn \@@_chapter_no_toc:n #1 { \chapter * {#1} \@@_sanitize_chapter_title:n {#1} \pdfbookmark [0] { \l_@@_tmpa_tl } { toc } \@@_chapter_header:n {#1} } \cs_generate_variant:Nn \@@_chapter_no_toc:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter_header:n} % \changes{v0.8}{2022/01/18}{���������������������������������������������} % ��������������������������������������������������������������������������������������������������������������������� % \tn{leftmark} ��������� % \begin{macrocode} \cs_new_protected:Npn \@@_chapter_header:n #1 { \bool_if:NTF \g_@@_twoside_bool { \markboth {#1} {#1} } { \markboth { \hfill #1 \hfill } { } } } % \end{macrocode} % \end{macro} % % \subsection{������} % % \changes{v0.3}{2017/02/21}{���������������} % % \subsubsection{������������} % % ������������������������������������ % \begin{macrocode} \clist_map_inline:nn { { plain } { plain }, { libertinus } { libertinus }, { libertinus_neg } { libertinus* }, { libertinus_sans } { libertinus-sans }, { pifont } { pifont }, { pifont_neg } { pifont* }, { pifont_sans } { pifont-sans }, { pifont_sans_neg } { pifont-sans* }, { xits } { xits }, { xits_sans } { xits-sans }, { xits_sans_neg } { xits-sans* } } { \@@_define_fn_style:nn #1 } % \end{macrocode} % % \begin{variable}{\l_@@_fn_style_tl} % ������������������������������������������ % \begin{macrocode} \tl_new:N \l_@@_fn_style_tl % \end{macrocode} % \end{variable} % % \begin{macrocode} \keys_define:nn { fdu / style } { % \end{macrocode} % % \begin{macro}{style/footnote-style} % ������������������������������ % \begin{itemize} % \item \opt{plain}������������������������ % \item \opt{libertinus}��������� Libertinus Serif ��� Libertinus Sans % ��������� % \item \opt{pifont}��������� \pkg{pifont} ��������� % \item \opt{xits}��������� XITS ��������� % \end{itemize} % ���������������������������������������������������|sans|���������������������������������|*|������ % ������������������ % \begin{macrocode} footnote-style .choices:nn = { plain, libertinus, libertinus*, libertinus-sans, pifont, pifont*, pifont-sans, pifont-sans*, xits, xits-sans, xits-sans* } % \end{macrocode} % \changes{v0.6}{2017/11/12}{������������ XITS-Math ���������} % ��������� \opt{pifont} ��������������������� \pkg{pifont} ��������� % \begin{macrocode} { \tl_gset_eq:NN \l_@@_fn_style_tl \l_keys_choice_tl \int_compare:nT { 5 <= \l_keys_choice_int <= 8 } { \RequirePackage { pifont } } }, footnote-style .value_required:n = true } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_libertinus:n} % \opt{libertinus} ������������\numrange{1}{20} ������������\numrange{21}{46} % ������������������������\numrange{47}{72} ������������������������ % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_libertinus:n #1 { \int_compare:nTF { #1 >= 21 } { \int_compare:nTF { #1 >= 47 } { \@@_symbol:n { \int_eval:n { "24B6 - 47 + #1 } } } { \@@_symbol:n { \int_eval:n { "24D0 - 21 + #1 } } } } { \@@_symbol:n { \int_eval:n { "2460 - 1 + #1 } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_libertinus_neg:n} % \opt{libertinus} ������������������������ \numrange{1}{20}��� % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_libertinus_neg:n #1 { \int_compare:nTF { #1 >= 11 } { \@@_symbol:n { \int_eval:n { "24EB - 11 + #1 } } } { \@@_symbol:n { \int_eval:n { "2776 - 1 + #1 } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont:n} % \opt{pifont} ������������������������������������ \numrange{1}{10}��� % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont:n #1 { \ding { \int_eval:n { 171 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont_neg:n} % \opt{pifont} ������������������ % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont_neg:n #1 { \ding { \int_eval:n { 181 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont_sans:n} % \opt{pifont} ��������������������� % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont_sans:n #1 { \ding { \int_eval:n { 191 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont_sans_neg:n} % \opt{pifont} ��������������������� % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont_sans_neg:n #1 { \ding { \int_eval:n { 201 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_xits:n} % \opt{xits} ������������\numrange{1}{9} ������������\numrange{10}{35} % ������������������������\numrange{36}{61} ������������������������ % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_xits:n #1 { \int_compare:nTF { #1 >= 10 } { \int_compare:nTF { #1 >= 36 } { \@@_symbol:n { \int_eval:n { "24B6 - 36 + #1 } } } { \@@_symbol:n { \int_eval:n { "24D0 - 10 + #1 } } } } { \@@_symbol:n { \int_eval:n { "2460 - 1 + #1 } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_xits_sans:n} % \opt{xits} ������������������������������ \numrange{1}{10}��� % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_xits_sans:n #1 { \@@_symbol:n { \int_eval:n { "2780 - 1 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_xits_sans_neg:n} % \opt{xits} ��������������������������������� \numrange{1}{10}��� % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_xits_sans_neg:n #1 { \@@_symbol:n { \int_eval:n { "278A - 1 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\thefootnote} % \changes{v0.7}{2018/01/17}{���������������������������������} % ������������������������ % \begin{macrocode} \cs_set:Npn \thefootnote { \fdu_footnote_number:N \c@footnote } % \end{macrocode} % \end{macro} % % \begin{macro}{\fdu_footnote_number:N} % ��������������������� % \begin{macrocode} \cs_new:Npn \fdu_footnote_number:N #1 { \tl_case:NnF \l_@@_fn_style_tl { % \end{macrocode} % \opt{plain} ��������������������������� |footnote| ��������� % \begin{macrocode} \c_@@_fn_style_plain_tl { \int_use:N #1 } % \end{macrocode} % \opt{libertinus} ������������������ Libertinus Serif ��� % Libertinus Sans ��������� % \begin{macrocode} \c_@@_fn_style_libertinus_tl { \fontspec { LibertinusSerif-Regular.otf } \@@_fn_symbol_libertinus:n {#1} } \c_@@_fn_style_libertinus_neg_tl { \fontspec { LibertinusSerif-Regular.otf } \@@_fn_symbol_libertinus_neg:n {#1} } \c_@@_fn_style_libertinus_sans_tl { \fontspec { LibertinusSans-Regular.otf } \@@_fn_symbol_libertinus:n {#1} } % \end{macrocode} % \opt{pifont} ������������������������������������ % \begin{macrocode} \c_@@_fn_style_pifont_tl { \@@_fn_symbol_pifont:n {#1} } \c_@@_fn_style_pifont_neg_tl { \@@_fn_symbol_pifont_neg:n {#1} } \c_@@_fn_style_pifont_sans_tl { \@@_fn_symbol_pifont_sans:n {#1} } \c_@@_fn_style_pifont_sans_neg_tl { \@@_fn_symbol_pifont_sans_neg:n {#1} } % \end{macrocode} % \opt{xits} ��������������������������������������� % \begin{macrocode} \c_@@_fn_style_xits_tl { \fontspec { XITS-Regular.otf } \@@_fn_symbol_xits:n {#1} } \c_@@_fn_style_xits_sans_tl { \fontspec { XITS-Regular.otf } \@@_fn_symbol_xits_sans:n {#1} } \c_@@_fn_style_xits_sans_neg_tl { \fontspec { XITS-Regular.otf } \@@_fn_symbol_xits_sans_neg:n {#1} } } % \end{macrocode} % ������ \cs{l_@@_fn_style_tl} ��������������������������������������� \opt{plain} % ��������� % \begin{macrocode} { \int_use:N #1 } } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \begin{macro}[int]{\@makefntext} % \changes{v0.7}{2018/01/18}{��������������������� \pkg{fancyvrb} ��������� % ���������������������������} % ������������������������������������������������������������������������������ \qty{1.5}{em}��� % ��� \url{http://tex.stackexchange.com/q/19844} ��� % \url{https://www.zhihu.com/question/53030087}��� % \begin{macrocode} \cs_set:Npn \@makefntext #1 { \mode_leave_vertical: \hbox_to_wd:nn { 1.5 em } { \@thefnmark \hfil } #1 } % \end{macrocode} % \end{macro} % % \subsection{������������} % % \changes{v0.3}{2017/05/07}{���������������������} % % \begin{variable}{\c_@@_thm_style_plain_clist, % \c_@@_thm_style_break_clist} % ������ \opt{plain}���\opt{break} ������������������������������������ % \begin{macrocode} \clist_const:Nn \c_@@_thm_style_plain_clist { plain, margin, change } \clist_const:Nn \c_@@_thm_style_break_clist { break, marginbreak, changebreak } % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_thm_style_tl, % \l_@@_thm_header_font_tl, % \l_@@_thm_body_font_tl, % \l_@@_thm_qed_tl, % \l_@@_thm_counter_tl} % ������������������������������ % \begin{macrocode} \tl_new:N \l_@@_thm_style_tl \tl_new:N \l_@@_thm_header_font_tl \tl_new:N \l_@@_thm_body_font_tl \tl_new:N \l_@@_thm_qed_tl \tl_new:N \l_@@_thm_counter_tl % \end{macrocode} % \end{variable} % % \begin{macro}{theorem/style, % theorem/header-font, % theorem/body-font, % theorem/qed, % theorem/counter} % ������ |fdu/theorem| ������������ % \begin{macrocode} \keys_define:nn { fdu / theorem } { style .tl_set:N = \l_@@_thm_style_tl, header-font .tl_set:N = \l_@@_thm_header_font_tl, body-font .tl_set:N = \l_@@_thm_body_font_tl, qed .tl_set:N = \l_@@_thm_qed_tl, counter .tl_set:N = \l_@@_thm_counter_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_thm_ntheorem_style:n,\@@_thm_ntheorem_new:w} % ������ \pkg{ntheorem} ��������� % \begin{macrocode} \cs_new_eq:NN \@@_thm_ntheorem_style:n \theoremstyle \cs_new_eq:NN \@@_thm_ntheorem_new:w \newtheorem % \end{macrocode} % \end{macro} % % \changes{v0.7}{2017/12/12}{��� \cs{fdunewtheorem} ��������������� % \cs{new\-the\-orem}���} % % \begin{macro}{\newtheorem} % \changes{v0.9}{2023/02/08}{������ \cs{DeclareDocumentCommand} ���������} % ��������������������������� % \begin{macrocode} \DeclareDocumentCommand \newtheorem { s o m m } { % \end{macrocode} % ��������������������� \cs{newtheorem*} ��������������������������������� \cs{QED}��� % ������ \cs{new\-the\-orem} ��������������������������������������� \cs{QED} ��� % \pkg{unicode-math} ��������������� % \begin{macrocode} \IfBooleanTF {#1} { \tl_set:Nn \l_@@_thm_qed_tl { \ensuremath { \QED } } } { \tl_set:Nn \l_@@_thm_qed_tl { } } % \end{macrocode} % ��������������������� \opt{plain}��� % \begin{macrocode} % TODO: (2017-12-07) Move to interface \tl_set:Nn \l_@@_thm_style_tl { plain } % \end{macrocode} % ��������������������������� |fdu/theorem| ������������������������������������������������ % ��������������������������������������� % \begin{macrocode} \IfValueT {#2} { \keys_set:nn { fdu / theorem } {#2} } \fdu_thm_set_header_font:V \l_@@_thm_header_font_tl \fdu_thm_set_body_font:V \l_@@_thm_body_font_tl \fdu_thm_set_qed:V \l_@@_thm_qed_tl % \end{macrocode} % \cs{newtheorem} ������������������������������ \cs{newtheorem*} % ������������������������������������������������������������������ % \begin{macrocode} \IfBooleanTF {#1} { % \end{macrocode} % ��� |*| ��������������������������� \opt{plain} ��� \opt{break} ��������������� % ��������������������������������������������������� % \begin{macrocode} \clist_if_in:nVF { plain, break } \l_@@_thm_style_tl { \clist_if_in:NVTF \c_@@_thm_style_plain_clist \l_@@_thm_style_tl { \@@_thm_redefine_style:n { plain } } { \clist_if_in:NVTF \c_@@_thm_style_break_clist \l_@@_thm_style_tl { \@@_thm_redefine_style:n { break } } { \@@_error:nx { unknown-theorem-style } { \l_@@_thm_style_tl } } } } % \end{macrocode} % \pkg{ntheorem} ������������������������������������ |nonumber| ��������� % ��������������������� % \begin{macrocode} \tl_put_left:Nn \l_@@_thm_style_tl { nonumber } \fdu_thm_new_no_number:Vxx \l_@@_thm_style_tl {#3} {#4} } { % \end{macrocode} % ������ |*| ������������������������|nonumber|��������������������������� % \begin{macrocode} \clist_clear:N \l_@@_tmpa_clist \clist_concat:NNN \l_@@_tmpa_clist \c_@@_thm_style_plain_clist \c_@@_thm_style_break_clist \clist_if_in:NVF \l_@@_tmpa_clist \l_@@_thm_style_tl { \@@_error:nx { unknown-theorem-style } { \l_@@_thm_style_tl } } \fdu_thm_new:VVxx \l_@@_thm_style_tl \l_@@_thm_counter_tl {#3} {#4} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_thm_redefine_style:n} % ������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_thm_redefine_style:n #1 { \@@_warning:nxx { redefine-theorem-style } {#1} { \l_@@_thm_style_tl } \tl_set:Nn \l_@@_thm_style_tl {#1} } % \end{macrocode} % \end{macro} % % ��������������� % \begin{macrocode} \@@_msg_new:nn { redefine-theorem-style } { Theorem~ style~ "#2"~ will~ be~ redefined~ as~ "#1". } \@@_msg_new:nn { unknown-theorem-style } { Theorem~ style~ "#1"~ is~ unknown. } % \end{macrocode} % % \begin{macro}{\fdu_thm_new:nnnn,\fdu_thm_new:VVxx} % ��������������������������� % \begin{arguments} % \item ������ % \item ��������� % \item ������������������ % \item ��������������� % \end{arguments} % \begin{macrocode} \cs_new:Npn \fdu_thm_new:nnnn #1#2#3#4 { \@@_thm_ntheorem_style:n {#1} \@@_thm_ntheorem_new:w {#3} {#4} [#2] } \cs_generate_variant:Nn \fdu_thm_new:nnnn { VVxx } % \end{macrocode} % \end{macro} % % \begin{macro}{\fdu_thm_new_no_number:nnn, % \fdu_thm_new_no_number:Vxx} % ������������������������������ % \begin{arguments} % \item ������ % \item ������������������ % \item ��������������� % \end{arguments} % \begin{macrocode} \cs_new:Npn \fdu_thm_new_no_number:nnn #1#2#3 { \@@_thm_ntheorem_style:n {#1} \@@_thm_ntheorem_new:w {#2} {#3} } \cs_generate_variant:Nn \fdu_thm_new_no_number:nnn { Vxx } % \end{macrocode} % \end{macro} % % \begin{macro}{\fdu_thm_set_qed:n, % \fdu_thm_set_header_font:n, % \fdu_thm_set_body_font:n, % \fdu_thm_set_qed:V, % \fdu_thm_set_header_font:V, % \fdu_thm_set_body_font:V} % ������ \pkg{ntheorem} ��������������������������������������������������������������� % ��������������������������������������� % \begin{macrocode} \cs_new:Npn \fdu_thm_set_qed:n #1 { \theoremsymbol {#1} } \cs_new:Npn \fdu_thm_set_header_font:n #1 { \theoremheaderfont {#1} } \cs_new:Npn \fdu_thm_set_body_font:n #1 { \theorembodyfont {#1} } \cs_generate_variant:Nn \fdu_thm_set_qed:n { V } \cs_generate_variant:Nn \fdu_thm_set_header_font:n { V } \cs_generate_variant:Nn \fdu_thm_set_body_font:n { V } % \end{macrocode} % \end{macro} % % \subsection{������������������������} % % \changes{v0.3}{2017/07/09}{������������������} % % ��������������������� \env{figure} ��� \env{table} ������������������ % \begin{macrocode} \captionsetup [ figure ] { font = small, labelsep = quad } \captionsetup [ table ] { font = { small, sf }, labelsep = quad } % \end{macrocode} % % \begin{macro}{\thefigure,\thetable} % \changes{v0.7}{2018/01/17}{���������������������������������} % \changes{v0.8}{2021/03/10}{������������ \tn{thechapter} ���������������������������������������������} % ������������������������ % \begin{macrocode} \cs_set:Npn \thefigure { \thechapter - \@@_arabic:n { figure } } \cs_set:Npn \thetable { \thechapter - \@@_arabic:n { table } } % \end{macrocode} % \end{macro} % % \subsection{������} % % \subsubsection{������������} % % \begin{variable}{\l_@@_info_title_tl, % \l_@@_info_date_tl, % \l_@@_info_author_tl, % \l_@@_info_supervisor_tl, % \l_@@_info_department_tl, % \l_@@_info_major_tl, % \l_@@_info_student_id_tl, % \l_@@_info_school_id_tl, % \l_@@_info_clc_tl, % \l_@@_info_jel_tl, % \l_@@_info_instructors_clist, % \l_@@_info_keywords_clist} % ������������������������������ % \begin{macrocode} \clist_map_inline:nn { title, date, author, supervisor, department, major, student_id, school_id, clc, jel } { \tl_new:c { l_@@_info_ #1 _tl } } \clist_new:N \l_@@_info_instructors_clist \clist_new:N \l_@@_info_keywords_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_info_title_en_tl, % \l_@@_info_author_en_tl, % \l_@@_info_supervisor_en_tl, % \l_@@_info_department_en_tl, % \l_@@_info_major_en_tl, % \l_@@_info_keywords_en_clist} % ������������������������ % \begin{macrocode} \clist_map_inline:nn { title, author, supervisor, department, major } { \tl_new:c { l_@@_info_ #1 _en_tl } } \clist_new:N \l_@@_info_keywords_en_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_info_degree_type_tl} % ��������������� % \begin{macrocode} \tl_new:N \l_@@_info_degree_type_tl % \end{macrocode} % \end{variable} % % \changes{v0.9}{2023/02/12}{������������������������ \tn{\textbackslash} ������������������������} % % \begin{variable}{\l_@@_info_title_sanitized_tl,\l_@@_info_title_en_sanitized_tl} % ��������������������������� % \begin{macrocode} \tl_new:N \l_@@_info_title_sanitized_tl \tl_new:N \l_@@_info_title_en_sanitized_tl % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_set_title:nn} % ��������������������������������������� |\\| ������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_set_title:nn #1#2 { \tl_set:cn { l_@@_info_ #1 _tl } {#2} \tl_set:cn { l_@@_info_ #1 _sanitized_tl } {#2} \tl_replace_all:cnn { l_@@_info_ #1 _sanitized_tl } { \\ } { ~ } \regex_replace_all:nnc { \s+ } { \ } { l_@@_info_ #1 _sanitized_tl } \regex_replace_all:nnc { ([\x{4e00}-\x{9fff}]) \s+ ([\x{4e00}-\x{9fff}]) } { \1 \2 } { l_@@_info_ #1 _sanitized_tl } } % \end{macrocode} % \end{macro} % % ������ |fdu/info| ������������ % \begin{macrocode} \keys_define:nn { fdu / info } { % \end{macrocode} % % \changes{v0.7}{2018/02/01}{������ \opt{info/degree} ���������} % % \begin{macro}{info/degree} % ������������������������������������������ % \begin{macrocode} degree .choices:nn = { academic, professional } { \tl_set_eq:NN \l_@@_info_degree_type_tl \l_keys_choice_tl }, degree .value_required:n = true, % \end{macrocode} % \end{macro} % % \begin{macro}{info/title,info/title*} % ������������������������������������������������������������������������ % \begin{macrocode} title .code:n = { \@@_set_title:nn { title } {#1} }, title* .code:n = { \@@_set_title:nn { title_en } {#1} }, % \end{macrocode} % \end{macro} % % \begin{macro}{info/date} % ��������������������� % \begin{macrocode} date .tl_set:N = \l_@@_info_date_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/author,info/author*} % ��������������� % \begin{macrocode} author .tl_set:N = \l_@@_info_author_tl, author* .tl_set:N = \l_@@_info_author_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/supervisor,info/supervisor*} % ��������������� % \begin{macrocode} supervisor .tl_set:N = \l_@@_info_supervisor_tl, % supervisor* .tl_set:N = \l_@@_info_supervisor_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/instructors} % ��������������������� % \begin{macrocode} instructors .clist_set:N = \l_@@_info_instructors_clist, % \end{macrocode} % \end{macro} % % \begin{macro}{info/department,info/department*} % ��������� % \begin{macrocode} department .tl_set:N = \l_@@_info_department_tl, % department* .tl_set:N = \l_@@_info_department_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/major,info/major*} % ��������� % \begin{macrocode} major .tl_set:N = \l_@@_info_major_tl, % major* .tl_set:N = \l_@@_info_major_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/student-id} % ��������� % \begin{macrocode} student-id .tl_set:N = \l_@@_info_student_id_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/school-id} % ��������������� % \begin{macrocode} school-id .tl_set:N = \l_@@_info_school_id_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/keywords,info/keywords*} % ������������������ % \begin{macrocode} keywords .clist_set:N = \l_@@_info_keywords_clist, keywords* .clist_set:N = \l_@@_info_keywords_en_clist, % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/16}{������ \opt{info/jel} ���������} % % \begin{macro}{info/clc,info/jel} % ������������������ JEL ������������ % \begin{macrocode} clc .tl_set:N = \l_@@_info_clc_tl, jel .tl_set:N = \l_@@_info_jel_tl } % \end{macrocode} % \end{macro} % % \changes{v0.4}{2017/08/10}{������ \opt{style/logo} ��� % \opt{style/logo-size} ���������} % % \begin{variable}{\l_@@_cover_logo_tl,\l_@@_cover_logo_size_clist} % \begin{macrocode} \tl_new:N \l_@@_cover_logo_tl \clist_new:N \l_@@_cover_logo_size_clist % \end{macrocode} % \end{variable} % % \begin{macro}{style/logo,style/logo-size} % ������������������������������������ % \begin{macrocode} \keys_define:nn { fdu / style } { logo .tl_set:N = \l_@@_cover_logo_tl, logo-size .clist_set:N = \l_@@_cover_logo_size_clist } % \end{macrocode} % \end{macro} % % \subsubsection{������} % % \changes{v0.3}{2017/07/04}{������ \opt{info/secret-level} ��� % \opt{info/secret-year} ���������} % % \begin{variable}{\l_@@_info_secret_level_tl} % ������������������������ % \begin{macrocode} \tl_new:N \l_@@_info_secret_level_tl % \end{macrocode} % \end{variable} % % \begin{macrocode} \keys_define:nn { fdu / info } { % \end{macrocode} % % \begin{macro}{info/secret-level} % \changes{v0.6}{2017/11/11}{������������ XITS-Math ���������} % ���������\opt{none} ������������������\opt{i}���\opt{ii}���\opt{iii} ��������� % ��������������������������� % \begin{macrocode} secret-level .choices:nn = { none, i, ii, iii } { \tl_set_eq:NN \l_@@_info_secret_level_tl \l_keys_choice_tl }, secret-level .value_required:n = true, % \end{macrocode} % \end{macro} % % \begin{macro}{info/secret-year} % ��������������� % \begin{macrocode} secret-year .tl_set:N = \l_@@_info_secret_year_tl } % \end{macrocode} % \end{macro} % % \subsubsection{������������������} % % \begin{macro}{\@@_spread_box:nn,\@@_spread_box:no} % ������������������������������ % \begin{arguments} % \item ������ % \item ������ % \end{arguments} % ������ \cs{tl_map_inline:nn} ������������������ \tn{hfil}������������������ \tn{unskip} % ������������������������ \tn{hfil}������ \url{https://tex.stackexchange.com/q/169689}��� % \begin{macrocode} \cs_new_protected:Npn \@@_spread_box:nn #1#2 { \mode_leave_vertical: \hbox_to_wd:nn {#1} { \tl_map_inline:nn {#2} { ##1 \hfil } \unskip } } \cs_generate_variant:Nn \@@_spread_box:nn { no } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_center_box:nn,\@@_center_box:Vn} % ������������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_center_box:nn #1#2 { \mode_leave_vertical: \hbox_to_wd:nn {#1} { \hfil #2 \hfil } } \cs_generate_variant:Nn \@@_center_box:nn { Vn } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fixed_width_box:nn} % ��������������������������������� % \begin{macrocode} \cs_new:Npn \@@_fixed_width_box:nn #1#2 { \parbox {#1} {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fixed_width_center_box:nn} % ������������������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_fixed_width_center_box:nn #1#2 { \parbox {#1} { \centering #2 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_get_text_width:Nn,\@@_get_text_width:NV} % ������������������������������ |dim| ������������ % \begin{arguments} % \item |dim| ��������� % \item ������ % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_get_text_width:Nn #1#2 { \hbox_set:Nn \l_@@_tmpa_box {#2} \dim_set:Nn #1 { \box_wd:N \l_@@_tmpa_box } } \cs_generate_variant:Nn \@@_get_text_width:Nn { NV } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_blank_underline:n} % \changes{v0.4}{2017/08/14}{������ \tn{rule} ������������������������������ % \pkg{ulem} ���������} % ���������������������|#1|: ��������� % \begin{macrocode} \cs_new:Npn \@@_blank_underline:n #1 { \rule [ -0.5 ex ] {#1} { 0.4 pt } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_line_spread:N,\@@_line_spread:n} % ���������������|#1|: ������������ |fp| ��������� % \begin{macrocode} \cs_new:Npn \@@_line_spread:N #1 { \linespread { \fp_use:N #1 } \selectfont } \cs_new:Npn \@@_line_spread:n #1 { \linespread {#1} \selectfont } % \end{macrocode} % \end{macro} % % \subsubsection{���������������} % % \changes{v0.5}{2017/09/19}{������ \pkg{expl3} ������������������������ % ������������������ \LaTeXe{} ������������} % % \begin{macro}{\@@_cover_id:,\@@_cover_id_tabular:n,\@@_cover_id_aux:n} % ��������������������������������������������� % \changes{v0.9a}{2023/05/21}{���������������������������������������������������������} % \begin{macrocode} \cs_new_protected:Npn \@@_cover_id: { \tl_if_eq:NnTF \l_@@_info_secret_level_tl { none } { \@@_cover_id_tabular:n { } } { \@@_cover_id_tabular:n { \@@_cover_secret: \\ } } } \cs_new_protected:Npn \@@_cover_id_tabular:n #1 { \exp_args:Nnx \begin{tabular} { \c_@@_cover_id_align_tl } #1 \@@_cover_id_aux:n { school_id } \\ \@@_cover_id_aux:n { student_id } \end{tabular} } \cs_new:Npn \@@_cover_id_aux:n #1 { \tl_use:c { c_@@_name_ #1 _tl } & \tl_use:c { l_@@_info_ #1 _tl } } % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_cover_id_align_tl} % ��������������������������������������������������������������������������������������������������������� % \begin{macrocode} \tl_const:Nn \c_@@_cover_id_align_tl { l @ { \c_@@_fwid_colon_tl } l @ { } } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_cover_secret:} % ��������������������������������� % \begin{macrocode} \cs_new:Npn \@@_cover_secret: { \multicolumn { 2 } { l } { \sffamily \c_@@_name_secret_level_tl \c_@@_fwid_colon_tl \prop_item:No \c_@@_secret_prop { \l_@@_info_secret_level_tl } \c_@@_name_secret_star_tl \l_@@_info_secret_year_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_logo:} % ��������������������������������� \opt{width} ��� \opt{height} ������������������ % ���������\cs{l_@@_cover_logo_size_clist} ��������������������������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_cover_logo: { \clist_pop:NN \l_@@_cover_logo_size_clist \l_@@_tmpa_tl \clist_pop:NNTF \l_@@_cover_logo_size_clist \l_@@_tmpb_tl { \tl_if_empty:NTF \l_@@_tmpa_tl { \includegraphics [ height = \l_@@_tmpb_tl ] } { \includegraphics [ width = \l_@@_tmpa_tl, height = \l_@@_tmpb_tl ] } } { \includegraphics [ width = \l_@@_tmpa_tl ] } { \l_@@_cover_logo_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_type:} % ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_cover_type: { \prop_get:NVN \c_@@_thesis_type_prop \g_@@_thesis_type_tl \l_@@_tmpa_tl \@@_spread_box:no { 0.45 \textwidth } { \l_@@_tmpa_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_degree:} % \changes{v0.7c}{2019/03/12}{���������������������������������������������} % ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_cover_degree: { \tl_if_eq:NnF \g_@@_thesis_type_tl { bachelor } { \c_@@_fwid_left_paren_tl \prop_item:No \c_@@_degree_type_prop { \l_@@_info_degree_type_tl } \c_@@_fwid_right_paren_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_info:} % \changes{v0.8}{2021/09/21}{���������������������������������������} % \changes{v0.9}{2023/02/05}{������������������������������������} % ������������ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_info: { \group_begin: \zihao { 4 } % \end{macrocode} % ��������������������������������������������������������������������������������� \cs{c_@@_name_major_tl}��� % \begin{macrocode} \tl_if_eq:NnT \l_@@_info_degree_type_tl { professional } { \tl_set_eq:NN \c_@@_name_major_tl \c_@@_name_major_professional_tl } % \end{macrocode} % ������������������������������ |clist| ������������ % \begin{macrocode} \clist_clear:N \l_@@_tmpa_clist \clist_map_inline:nn { department, major, author, supervisor, date } { \clist_gput_right:Nn \l_@@_tmpa_clist { \exp_args:Nx \@@_cover_info_left:n { \tl_use:c { c_@@_name_ ##1 _tl } } & \tl_use:c { l_@@_info_ ##1 _tl } } } % \end{macrocode} % ������ \env{tabular} ��������������� % \changes{v0.9a}{2023/05/07}{��������������������������������� \pkg{array} ���������������������������} % \begin{macrocode} \exp_args:Nnx \begin{tabular} { \c_@@_cover_info_align_tl } \clist_use:Nn \l_@@_tmpa_clist { \\ [ 1 ex ] } \end{tabular} \group_end: } % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_cover_info_align_tl} % ������������������������������������������������������������������������ % \begin{macrocode} \tl_const:Nn \c_@@_cover_info_align_tl { c @ { \c_@@_fwid_colon_tl } c } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_cover_info_left:n} % ������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_info_left:n #1 { \tl_if_eq:NnTF \l_@@_info_degree_type_tl { professional } { \@@_spread_box:nn { 9 em } {#1} } { \@@_spread_box:nn { 6 em } {#1} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_signature:N} % ������������ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_signature:N #1 { \clist_map_inline:Nn #1 { ##1 \c_@@_fwid_colon_tl \@@_blank_underline:n { 6 em } \@@_quad: } } % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \changes{v0.7}{2018/02/27}{������ \pkg{xtemplate} ���������������������} % % ������������������������������������������ % \begin{macrocode} %<@@=fdu_cover> \DeclareObjectType { fdu / cover } { \c_zero_int } % \end{macrocode} % % \begin{macro}{\DeclareCoverTemplate,\fdu_cover_declare_template:nn} % ��������������������� % \begin{arguments} % \item ������������ % \item ������������������������������������ % \end{arguments} % \begin{macrocode} \NewDocumentCommand \DeclareCoverTemplate { m m } { \fdu_cover_declare_template:nn {#1} {#2} } \cs_new_protected:Npn \fdu_cover_declare_template:nn #1#2 { \tl_set:Nn \l_@@_template_tl {#1} % \end{macrocode} % ��������������������� % \begin{macrocode} \@@_declare_template_interface:nx {#1} { format : tokenlist, top-skip : skip, bottom-skip : skip, \clist_map_function:nN {#2} \@@_key_type:n } % \end{macrocode} % ��������������������� % \begin{macrocode} \tl_new:c { l_@@ / #1 / format_tl } \skip_new:c { l_@@ / #1 / top_skip } \skip_new:c { l_@@ / #1 / bottom_skip } \clist_map_inline:nn {#2} { \tl_new:c { l_@@ / #1 / ##1 / content_tl } \tl_new:c { l_@@ / #1 / ##1 / format_tl } \skip_new:c { l_@@ / #1 / ##1 / bottom_skip } } % \end{macrocode} % ���������������������^^A ��������������������� `fdu_cover' ������ `fdu' % \begin{macrocode} \@@_declare_template_code:nxn {#1} { format = \exp_not:c { l_@@ / #1 / format_tl }, top-skip = \use:c { l_@@ / #1 / top_skip }, bottom-skip = \use:c { l_@@ / #1 / bottom_skip }, \clist_map_function:nN {#2} \@@_key_binding:n } { \AssignTemplateKeys \tl_use:c { l_@@ / #1 / format_tl } \__fdu_vspace:c { l_@@ / #1 / top_skip } \clist_map_inline:nn {#2} { \use:c { @@ / #1 / ####1 / align:n } { \tl_use:c { l_@@ / #1 / ####1 / format_tl } \tl_use:c { l_@@ / #1 / ####1 / content_tl } \par } \__fdu_vspace:c { l_@@ / #1 / ####1 / bottom_skip } } \__fdu_vspace:c { l_@@ / #1 / bottom_skip } } } % \end{macrocode} % \end{macro} % % \begin{variable}{\l_@@_template_tl} % ��������������������� % \begin{macrocode} \tl_new:N \l_@@_template_tl % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_declare_template_interface:nn, % \@@_declare_template_code:nnn, % \@@_declare_template_interface:nx, % \@@_declare_template_code:nxn} % ������������������������������������������ \pkg{xtemplate} ������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_declare_template_interface:nn #1#2 { \DeclareTemplateInterface { fdu / cover } {#1} { \c_zero_int } {#2} } \cs_new_protected:Npn \@@_declare_template_code:nnn #1#2#3 { \DeclareTemplateCode { fdu / cover } {#1} { \c_zero_int } {#2} {#3} } \cs_generate_variant:Nn \@@_declare_template_interface:nn { nx } \cs_generate_variant:Nn \@@_declare_template_code:nnn { nxn } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_key_type:n} % \begin{macrocode} \cs_new:Npn \@@_key_type:n #1 { #1 / content : tokenlist, #1 / format : tokenlist, #1 / bottom-skip : skip, #1 / align : choice { left, right, center, normal } = normal, } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_key_binding:n} % \begin{macrocode} \cs_new:Npn \@@_key_binding:n #1 { #1 / content = \exp_not:c { l_@@ / \l_@@_template_tl / #1 / content_tl }, #1 / format = \exp_not:c { l_@@ / \l_@@_template_tl / #1 / format_tl }, #1 / bottom-skip = \exp_not:c { l_@@ / \l_@@_template_tl / #1 / bottom_skip }, #1 / align = { left = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: \flushleft ##1 \endflushleft \group_end: } }, right = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: \flushright ##1 \endflushright \group_end: } }, center = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: \center ##1 \endcenter \group_end: } }, normal = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: ##1 \group_end: } } }, } %<@@=fdu> % \end{macrocode} % \end{macro} % % \subsubsection{������������} % % \changes{v0.9}{2023/02/18}{��������������� PDF ���������} % % \begin{macro}{\makecoveri} % ��������������������������� % \begin{macrocode} \NewDocumentCommand \makecoveri { } { \thispagestyle { empty } \tl_set:Nn \thepage { A } \UseInstance { fdu / cover } { cover-i-default } } % \end{macrocode} % \end{macro} % % \begin{macro}{\makecoverii} % \changes{v0.8}{2021/09/21}{\opt{info/instructors} ��������������������������������� % ���������������} % ��������������������������������������� % \begin{macrocode} \NewDocumentCommand \makecoverii { } { \thispagestyle { empty } \tl_set:Nn \thepage { B } \clist_if_empty:NTF \l_@@_info_instructors_clist { \hbox:n { } } { \UseInstance { fdu / cover } { cover-ii-default } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\makecoveriii} % ������������������������ % \begin{macrocode} \NewDocumentCommand \makecoveriii { } { \cleardoublepage \thispagestyle { empty } \tl_set:Nn \thepage { C } \tl_if_empty:NTF \l_@@_declaration_page_tl { \UseInstance { fdu / cover } { cover-iii-default } } { \includepdf { \l_@@_declaration_page_tl } } } % \end{macrocode} % \end{macro} % % ������������������������������������ % \begin{macrocode} \DeclareCoverTemplate { cover-i } { id, logo, type, degree, title, title-en, info } \DeclareCoverTemplate { cover-ii } { title, name-list } \DeclareCoverTemplate { cover-iii } { originality-decl-name, originality-decl-text, originality-decl-sig, authorization-decl-name, authorization-decl-text, authorization-decl-sig } % \end{macrocode} % % \changes{v0.7d}{2019/03/29}{���������������������������������������������������������������} % % ������������������������������������ % \begin{macrocode} \DeclareInstance { fdu / cover } { cover-i-default } { cover-i } { %<class-en> format = \@@_line_spread:N \c_@@_line_spread_fp, bottom-skip = 0 pt plus 1.5 fill, id / content = \@@_cover_id:, logo / content = \@@_cover_logo:, type / content = \@@_cover_type:, degree / content = \@@_cover_degree:, title / content = \@@_fixed_width_center_box:nn { 0.9 \textwidth } { \l_@@_info_title_tl }, title-en / content = \@@_fixed_width_center_box:nn { 0.9 \textwidth } { \l_@@_info_title_en_tl }, info / content = \@@_cover_info:, id / format = \zihao { -5 }, type / format = \zihao { 2 }, degree / format = \zihao { 4 }, title / format = \zihao { -2 } \bfseries, title-en / format = \@@_line_spread:n { 1.2 } \zihao { 4 } \bfseries, id / bottom-skip = 0 pt plus 1.6 fill, logo / bottom-skip = 0 pt plus 0.3 fill, type / bottom-skip = -18 pt, degree / bottom-skip = 0 pt plus 0.8 fill, title-en / bottom-skip = 0 pt plus 2.5 fill, id / align = right, logo / align = center, type / align = center, degree / align = center, title / align = center, title-en / align = center, info / align = center, } \DeclareInstance { fdu / cover } { cover-ii-default } { cover-ii } { %<class-en> format = \@@_line_spread:N \c_@@_line_spread_fp, title / content = \@@_spread_box:no { 7 em } { \c_@@_name_instructors_tl }, name-list / content = \clist_use:Nn \l_@@_info_instructors_clist { \par }, title / format = \zihao { 2 } \sffamily, name-list / format = \large, title / align = center, name-list / align = center, } \DeclareInstance { fdu / cover } { cover-iii-default } { cover-iii } { format = %<class> \@@_line_spread:n { 1.8 }, %<class-en> \@@_line_spread:n { 1.8 } \dim_set:Nn \parindent { 2 \ccwd }, top-skip = 0 pt plus 0.2 fill, bottom-skip = 0 pt plus 2.5 fill, originality-decl-name / content = \c_@@_name_orig_decl_tl, originality-decl-text / content = \c_@@_orig_decl_text_tl, originality-decl-sig / content = \@@_cover_signature:N \c_@@_orig_decl_sign_clist, authorization-decl-name / content = \c_@@_name_auth_decl_tl, authorization-decl-text / content = \c_@@_auth_decl_text_tl, authorization-decl-sig / content = \@@_cover_signature:N \c_@@_auth_decl_sign_clist, originality-decl-name / format = \@@_line_spread:n { 1.2 } \zihao { -2 } \bfseries, authorization-decl-name / format = \@@_line_spread:n { 1.2 } \zihao { -2 } \bfseries, originality-decl-name / bottom-skip = 0.4 cm, originality-decl-text / bottom-skip = 0.4 cm, originality-decl-sig / bottom-skip = 0 pt plus 2.5 fill, authorization-decl-name / bottom-skip = 0.4 cm, authorization-decl-text / bottom-skip = 0.4 cm, originality-decl-name / align = center, originality-decl-sig / align = right, authorization-decl-name / align = center, authorization-decl-sig / align = right, } % \end{macrocode} % % \begin{variable}{\l_@@_auto_make_cover_bool,\l_@@_declaration_page_tl} % \begin{macrocode} \bool_new:N \l_@@_auto_make_cover_bool \tl_new:N \l_@@_declaration_page_tl % \end{macrocode} % \end{variable} % % \begin{macro}{style/auto-make-cover} % ��������������������������� % \begin{macrocode} \keys_define:nn { fdu / style } { auto-make-cover .bool_set:N = \l_@@_auto_make_cover_bool, auto-make-cover .default:n = true, % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/21}{������ \opt{style/declaration-page} ���������} % % \begin{macro}{style/declaration-page} % ��������������������������� PDF ��������� % \begin{macrocode} declaration-page .code:n = { \tl_set_eq:NN \l_@@_declaration_page_tl \l_keys_value_tl \RequirePackage { pdfpages } }, } % \end{macrocode} % \end{macro} % % ��� \env{document} ��������������������������������������������������������� % \begin{macrocode} \ctex_after_end_preamble:n { \bool_if:NT \l_@@_auto_make_cover_bool { \begin{titlepage} \makecoveri \newpage \makecoverii \end{titlepage} } } % \end{macrocode} % % ��� \env{document} ������������������������������ % \begin{macrocode} \@@_gadd_ltxhook:nn { enddocument } { \bool_if:NT \l_@@_auto_make_cover_bool { \makecoveriii } } % \end{macrocode} % % \subsection{������} % % ��������������������� % \begin{macrocode} \keys_set:nn { ctex } { %<class> contentsname = \c_@@_name_toc_tl, %<class> listfigurename = \c_@@_name_lof_tl, %<class> listtablename = \c_@@_name_lot_tl, % \end{macrocode} % % ��������������������������������������� % \begin{macrocode} chapter / tocline = { %<class> \normalfont \sffamily %<class-en> \bfseries \CTEXnumberline {#1} #2 }, section / tocline = { %<class-en> \bfseries \CTEXnumberline {#1} #2 }, subsection / tocline = { %<class> \fdu@kai \CTEXnumberline {#1} #2 } } % \end{macrocode} % % \changes{v0.7e}{2019/05/12}{������������������������������������������} % % \begin{macro}{\tableofcontents,\listoffigures,\listoftables} % ������ \cs{tableofcontents}���\cs{listoffigures} ��� \cs{listoftables} ������������ % ������������������������������������������������ PDF ��������������������� \LaTeXe{} ��������������� % \file{book.cls}^^A % \footnote{������������������ \cs{tableofcontents} ��� \cs{@mkboth} ��������� % \cs{chapter*} ��������������������������������������������� typo���}��� % \begin{macrocode} \@@_patch_cmd:Nnn \tableofcontents { \chapter*{\contentsname \@mkboth{\MakeUppercase\contentsname} {\MakeUppercase\contentsname}} } { \@@_chapter_no_toc:V \contentsname } \@@_patch_cmd:Nnn \listoffigures { \chapter*{\listfigurename} \@mkboth{\MakeUppercase\listfigurename} {\MakeUppercase\listfigurename} } { \@@_chapter:V \listfigurename } \@@_patch_cmd:Nnn \listoftables { \chapter*{\listtablename} \@mkboth{\MakeUppercase\listtablename} {\MakeUppercase\listtablename} } { \@@_chapter:V \listtablename } % \end{macrocode} % \end{macro} % % \begin{macro}[int]{\@starttoc} % ������ \tn{@starttoc} ��������������������������������������������������� % \begin{macrocode} %<*class-en> \@@_patch_cmd:Nnn \@starttoc { \begingroup } { \begingroup \@@_line_spread:N \c_@@_line_spread_fp } %</class-en> % \end{macrocode} % \end{macro} % % \subsection{������} % % \begin{environment}{abstract} % \begin{environment}{abstract*} % \changes{v0.7}{2018/03/05}{���������������} % ������������������������������������������������������������������������������������������������������������������ % \begin{macrocode} \NewDocumentEnvironment { abstract } { } %<class> { \@@_abstract_begin: } { \@@_abstract_end: } %<class-en> { \@@_abstract_en_begin: } { \@@_abstract_en_end: } %<*class> \NewDocumentEnvironment { abstract* } { } { \@@_abstract_en_begin: } { \@@_abstract_en_end: } %</class> % \end{macrocode} % \end{environment} % \end{environment} % % \begin{macro}{\@@_abstract_begin:,\@@_abstract_en_begin:} % ������������������ % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_abstract_begin: { \@@_chapter:V \c_@@_name_abstract_tl } %</class> \cs_new_protected:Npn \@@_abstract_en_begin: { \@@_chapter:V \c_@@_name_abstract_en_tl } % \end{macrocode} % \end{macro} % % \changes{v0.7d}{2019/03/28}{���������������������������������} % \changes{v0.8}{2021/12/22}{������������ CLC/JEL ���������������������������} % % \begin{macro}{\@@_abstract_end:} % ������������������������������������������������ CLC/JEL ������������ % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_abstract_end: { \@@_keywords:nNn { \sffamily \c_@@_name_keywords_tl \c_@@_fwid_colon_tl } \l_@@_info_keywords_clist { \c_@@_fwid_semicolon_tl } \tl_if_empty:NF \l_@@_info_clc_tl { \@@_clc_jel:nn { \sffamily \c_@@_name_clc_tl \c_@@_fwid_colon_tl } { \l_@@_info_clc_tl } } } %</class> % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_abstract_en_end:} % ��������������������������������� JEL ��������������� CLC ������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_abstract_en_end: { \@@_keywords:nNn { \bfseries \c_@@_name_keywords_en_tl \@@_quad: } \l_@@_info_keywords_en_clist { ; ~ } \tl_if_empty:NTF \l_@@_info_jel_tl { \tl_if_empty:NF \l_@@_info_clc_tl { \@@_clc_jel:nn { \bfseries \c_@@_name_clc_en_tl \@@_quad: } { \l_@@_info_clc_tl } } } { \@@_clc_jel:nn { \bfseries \c_@@_name_jel_en_tl \@@_quad: } { \l_@@_info_jel_tl } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_keywords:nNn,\@@_keywords_prevdepth:,\@@_clc_jel:nn} % ���������������������������������������������������������������������������\tn{parbox} ��������������� % ������������������ \url{https://tex.stackexchange.com/a/34982}��� % \begin{macrocode} \cs_new_protected:Npn \@@_keywords:nNn #1#2#3 { \par \mode_leave_vertical: \par \noindent \@@_get_text_width:Nn \l_@@_tmpa_dim {#1} \group_begin: #1 \group_end: \parbox [t] { \dim_eval:n { \textwidth - \l_@@_tmpa_dim } } { \clist_use:Nn #2 {#3} \par \cs_gset:Npx \@@_keywords_prevdepth: { \dim_use:N \tex_prevdepth:D } } } \cs_new_protected:Npn \@@_clc_jel:nn #1#2 { \par \tex_prevdepth:D \@@_keywords_prevdepth: \noindent \group_begin: #1 \group_end: #2 } % \end{macrocode} % \end{macro} % % \subsection{���������} % % \begin{environment}{notation} % \changes{v0.7}{2018/03/05}{���������������} % ������������������������ \env{longtable} ��������������������������������������������������� % \begin{macrocode} \NewDocumentEnvironment { notation } { O { l p { 7.5 cm } } } { \@@_notation_begin: \group_begin: \@@_notation_long_table_setup: \longtable {#1} } { \endlongtable \group_end: } % \end{macrocode} % \end{environment} % % \begin{macro}{\@@_notation_begin:} % ��������������������� % \begin{macrocode} \cs_new_protected:Npn \@@_notation_begin: { %<class> \@@_chapter:V \c_@@_name_notation_tl %<class-en> \@@_chapter:V \c_@@_name_notation_en_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_notation_long_table_setup:} % ������ \cs{LTpre} ��� \cs{LTpost}������������ \env{longtable} ������������������ % ������������������������������������������������������ \tn{arraystretch} ������������������ % ������������������ \cs{fp_set:Nn}��� % \begin{macrocode} \cs_new_protected:Npn \@@_notation_long_table_setup: { %<class-en> \tl_set:Nn \arraystretch { 1.3 } \dim_set_eq:NN \LTpre \c_zero_dim \dim_set_eq:NN \LTpost \c_zero_dim } % \end{macrocode} % \end{macro} % % \subsection{������} % % \changes{v0.9}{2023/02/06}{���������������������} % % \begin{environment}{acknowledgements} % ��������������� % \begin{macrocode} \NewDocumentEnvironment { acknowledgements } { } { \@@_acknowledgements_begin: } { } % \end{macrocode} % \end{environment} % % \begin{macro}{\@@_acknowledgements_begin:} % ������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_acknowledgements_begin: { %<class> \@@_chapter:V \c_@@_name_acknowledgements_tl %<class-en> \@@_chapter:V \c_@@_name_acknowledgements_en_tl } % \end{macrocode} % \end{macro} % % \subsection{���������������������������} % % \changes{v0.6}{2017/10/27}{������ \BibTeX{}���������������������������������������������} % \changes{v0.7}{2018/01/25}{������ \biber{} ��� \pkg{biblatex}���} % \changes{v0.9a}{2023/05/11}{��������������������� \BibTeX{} ��� \pkg{biblatex}���} % % \begin{variable}{\l_@@_bib_backend_tl} % ������������������������������������������������������������������������������ \BibTeX{} ��� \pkg{biblatex}��� % \pkg{biblatex}/\biber{}��� % \begin{macrocode} \tl_new:N \l_@@_bib_backend_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_bib_style_tl,\l_@@_bib_gb_style_tl,\l_@@_cite_style_tl} % ������������������������������������ % \begin{macrocode} \tl_new:N \l_@@_bib_style_tl \tl_new:N \l_@@_bib_gb_style_tl \tl_new:N \l_@@_cite_style_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_bib_resource_clist} % \changes{v0.8}{2021/03/07}{������ \texttt{clist} ��������������������� \pkg{biblatex} % ���������������������������} % ������������������������������������ % \begin{macrocode} \clist_new:N \l_@@_bib_resource_clist % \end{macrocode} % \end{variable} % % \changes{v0.6}{2017/10/28}{������ \opt{style/bib-style} ���������} % \changes{v0.7}{2018/01/25}{������ \opt{style/bib-backend}��� % \opt{style/cite-style} ��� \opt{style/bib-resource} ���������} % \changes{v0.8}{2021/09/20}{������������ \pkg{gbt7714} ���������} % % \begin{macrocode} \keys_define:nn { fdu / style } { % \end{macrocode} % \begin{macro}{style/bib-backend} % ��������������������� % \begin{macrocode} bib-backend .choice:, bib-backend .value_required:n = true, bib-backend / bibtex .code:n = { \tl_set:Nn \l_@@_bib_backend_tl { bibtex } }, % \end{macrocode} % \changes{v0.8}{2022/01/08}{������������ \tn{addbibresource} ��������������� \pkg{biblatex} ������������} % ������ \pkg{biblatex} ��������������������������������������������������������������������������������������������������� % ������������������������������������������������ % \begin{macrocode} bib-backend / biblatex .code:n = { \tl_set:Nn \l_@@_bib_backend_tl { biblatex } \NewDocumentCommand \addbibresource { m } { \clist_gput_right:Nn \l_@@_bib_resource_clist {#1} } }, % \end{macrocode} % \end{macro} % \begin{macro}{style/bib-style} % ��������������������� % \begin{macrocode} bib-style .choice:, bib-style .value_required:n = true, bib-style / numerical .code:n = { \tl_set:Nn \l_@@_bib_gb_style_tl { numerical } \tl_clear:N \l_@@_bib_style_tl }, bib-style / author-year .code:n = { \tl_set:Nn \l_@@_bib_gb_style_tl { author-year } \tl_clear:N \l_@@_bib_style_tl }, bib-style / unknown .code:n = { \tl_set_eq:NN \l_@@_bib_style_tl \l_keys_value_tl \tl_clear:N \l_@@_bib_gb_style_tl }, % \end{macrocode} % \end{macro} % \begin{macro}{style/cite-style} % \changes{v0.8}{2021/09/17}{��������� \BibTeX{} ������������} % ��������������� % \begin{macrocode} cite-style .tl_set:N = \l_@@_cite_style_tl, % \end{macrocode} % \end{macro} % \begin{macro}{style/bib-resource} % ������������������������ % \begin{macrocode} bib-resource .clist_set:N = \l_@@_bib_resource_clist } % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/03/28}{������������������������������������} % % ������������������������������������������������\pkg{gbt774}���\pkg{natbib} ��� \pkg{biblatex} % ������������������������������������������������ \pkg{hyperref} ��������������������������������� % \begin{macrocode} \ctex_at_end_preamble:n { \tl_if_eq:NnT \l_@@_bib_backend_tl { bibtex } { \tl_if_empty:NTF \l_@@_bib_style_tl { \RequirePackage [ sort & compress ] { gbt7714 } \exp_args:No \bibliographystyle { gbt7714- \l_@@_bib_gb_style_tl } } { \RequirePackage [ sort & compress ] { natbib } \exp_args:No \bibliographystyle { \l_@@_bib_style_tl } } \@@_bibtex_setup: } } % \end{macrocode} % \pkg{biblatex} ��������� |begindocument/before| ������������������������������������ % \texttt{env/doc\-u\-ment/begin} ������������ \pkg{biblatex} ��������������������� % ������������������ |\begin{document}| ������������������ |\document| ��������������������� % \begin{macrocode} \@@_gadd_ltxhook:nn { env/document/begin } { \tl_if_eq:NnT \l_@@_bib_backend_tl { biblatex } { \@@_biblatex_pre_setup: \RequirePackage { biblatex } \@@_biblatex_post_setup: } } % \end{macrocode} % % \changes{v0.7}{2018/01/25}{������������ \cs{printbibliography} ������ % ���������������������������} % \changes{v0.7d}{2019/03/23}{������������������������������������������} % \changes{v0.7e}{2020/08/30}{������ \pkg{gbt7714} v2.0���} % \changes{v0.8}{2021/09/20}{������������������������������������������} % % \begin{macro}{\@@_bibtex_setup:,\parencite,\printbibliography} % \BibTeX{} ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_bibtex_setup: { % \end{macrocode} % ������������������������������������������������������������ \tn{cite} ������������������������ % \begin{macrocode} \tl_if_eq:VnTF \l_@@_bib_gb_style_tl { numerical } { \exp_args:NNx \DeclareRobustCommand \parencite { \exp_args:No \exp_not:o { \cs:w cite ~ \cs_end: } } \exp_args:Nc \ctex_patch_cmd:Nnn { parencite ~ } { \begingroup } { \begingroup \bibstyle@numbers } } { \cs_set_eq:NN \parencite \cite } % \end{macrocode} % ��������������� % \begin{macrocode} \tl_if_empty:NF \l_@@_cite_style_tl { \exp_args:NV \citestyle \l_@@_cite_style_tl } % \end{macrocode} % ������ \tn{textendash} ���\textendash��������������������������������� % \begin{macrocode} \ctex_patch_cmd:Nnn \NAT@citexnum { - \NAT@penalty } { \textendash \NAT@penalty } % \end{macrocode} % ��������������������������� % \begin{macrocode} \cs_set:Npn \bibsection { \@@_chapter:V \bibname } % \end{macrocode} % \BibTeX{} ������������ \pkg{biblatex} ��������������� % \begin{macrocode} \NewDocumentCommand \printbibliography { o } { \exp_args:NV \bibliography \l_@@_bib_resource_clist \IfValueT {##1} { \@@_warning:nn { invalid-option-in-bibtex } {##1} } } } \@@_msg_new:nn { invalid-option-in-bibtex } { Option(s)~ "#1"~ are~ invalid~ in~ BibTeX. } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_biblatex_pre_setup:,\@@_biblatex_post_setup:} % \pkg{biblatex} ��������������� % \begin{macrocode} \cs_new_protected:Npn \@@_biblatex_pre_setup: { \cs_undefine:N \addbibresource \clist_new:N \l_@@_biblatex_options_clist \clist_put_right:Nn \l_@@_biblatex_options_clist { hyperref = manual } % \end{macrocode} % ��������������������� % \begin{macrocode} \clist_put_right:Nx \l_@@_biblatex_options_clist { style = \tl_if_empty:NTF \l_@@_bib_style_tl { \str_if_eq:VnTF \l_@@_bib_gb_style_tl { numerical } { gb7714-2015 } { gb7714-2015ay } } { \l_@@_bib_style_tl } } % \end{macrocode} % ��������������� % \changes{v0.8}{2021/03/09}{���������������������������} % \begin{macrocode} \tl_if_empty:NF \l_@@_cite_style_tl { \clist_put_right:Nx \l_@@_biblatex_options_clist { citestyle = \l_@@_cite_style_tl } } \exp_args:NV \PassOptionsToPackage \l_@@_biblatex_options_clist { biblatex } } \cs_new_protected:Npn \@@_biblatex_post_setup: { \clist_map_function:NN \l_@@_bib_resource_clist \addbibresource \@@_biblatex_allow_url_break: \@@_biblatex_use_en_dash: % \end{macrocode} % ��������������������������� % \begin{macrocode} \defbibheading { bibliography } [ \bibname ] { \@@_chapter:n {##1} } %<*class-en> \exp_args:Nnx \DefineBibliographyStrings { english } { bibliography = { \c_@@_name_bib_en_tl } } %</class-en> } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_biblatex_allow_url_break:} % \pkg{biblatex} ��������� URL ��������������������������������������������������� % \begin{macrocode} \cs_new:Npn \@@_biblatex_allow_url_break: { \int_set_eq:NN \c@biburlucpenalty \c_one_int \int_set_eq:NN \c@biburlnumpenalty \c_one_int \int_set_eq:NN \c@biburllcpenalty \c_one_int } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_biblatex_use_en_dash:} % ������ \tn{textendash} ���\textendash��������������������������������� % \begin{macrocode} \cs_new:Npn \@@_biblatex_use_en_dash: { \DefineBibliographyExtras { english } { \cs_set_nopar:Npn \bibrangedash { \textendash \penalty \hyphenpenalty } } \DefineBibliographyExtras { russian } { \cs_set_nopar:Npn \bibrangedash { \textendash \penalty \hyphenpenalty } } } % \end{macrocode} % \end{macro} % % \changes{v0.7}{2018/01/25}{������ \pkg{gbt7714} v1.0������������������������������������������} % \changes{v0.8}{2021/09/20}{������������������������������������������������������} % % \subsection{\pkg{hyperref} ������������} % % \changes{v0.4}{2017/08/13}{������ \pkg{hyperref} ������������������������������ % ���������\opt{style/hyperlink} ��� \opt{style/hyperlink-color} ��������� % ��� PDF ���������������} % \changes{v0.7}{2018/01/23}{��� \pkg{hyperref} ��������������������������������� % ������������������} % % \begin{macro}{\hypersetup} % \changes{v0.9}{2023/02/08}{������ \cs{DeclareDocumentCommand} ���������} % \begin{macro}{\fdu_hyperref_setup:n} % \pkg{hyperref} ��������������������������������������������������������������������� % \tn{hypersetup} ������������������������������ % \begin{macrocode} \DeclareDocumentCommand \hypersetup { m } { \fdu_hyperref_setup:n {#1} } \cs_new_protected:Npn \fdu_hyperref_setup:n #1 { \clist_gput_right:Nn \g_@@_to_hyperref_clist {#1} } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@@_set_hyperlink_color_key:n} % ��������������������������������������������������������� \pkg{l3keys} ������������������������������������ % \begin{macrocode} \cs_new:Npn \@@_set_hyperlink_color_key:n #1 { hyperlink-color / \clist_item:nn {#1} {1} .code:n = { \@@_define_hyperlink_color:nnn { \clist_item:nn {#1} {2} } { \clist_item:nn {#1} {3} } { \clist_item:nn {#1} {4} } \fdu_hyperref_setup:n { linkcolor = fdu@link, linkbordercolor = fdu@link, urlcolor = fdu@url, urlbordercolor = fdu@url, citecolor = fdu@cite, citebordercolor = fdu@cite } }, } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_hyperlink_color:nnn} % ������������������������ % \begin{macrocode} \cs_new_protected:Npn \@@_define_hyperlink_color:nnn #1#2#3 { \definecolorset { HTML } { fdu@ } { } { link, #1; url, #2; cite, #3 } } % \end{macrocode} % \end{macro} % % \begin{macrocode} \keys_define:nx { fdu / style } { % \end{macrocode} % % \begin{macro}{style/hyperlink} % \changes{v0.8}{2021/12/27}{��������������������������������������������� \opt{hidelinks} ���������������������} % ������������������ % \begin{macrocode} hyperlink .choice:, hyperlink .value_required:n = true, hyperlink / border .code:n = { \fdu_hyperref_setup:n { colorlinks = false } }, hyperlink / color .code:n = { \fdu_hyperref_setup:n { colorlinks = true } }, hyperlink / none .code:n = { \fdu_hyperref_setup:n { hidelinks } }, % \end{macrocode} % \end{macro} % % \begin{macro}{style/hyperlink-color} % \changes{v0.8}{2021/12/27}{������������������������������������} % ������������������ % \begin{macrocode} hyperlink-color .choice:, hyperlink-color .value_required:n = true, \clist_map_function:nN { { classic, FF0000, 0000FF, 00FF00 }, { default, 990000, 0000B2, 007F00 }, { material, E91E63, 009688, 4CAF50 }, { graylevel, 616161, 616161, 616161 }, { prl, 2D3092, 2D3092, 2D3092 } } \@@_set_hyperlink_color_key:n } % \end{macrocode} % \end{macro} % % \changes{v0.6}{2017/10/29}{������ URL ���������������} % % \begin{macro}{\fdu_allow_url_break:,\@@_add_url_break_points:} % ������ URL ������������������������������������������������������ % \url{https://bit.ly/2hhIjLW}��� % \begin{macrocode} \cs_new:Npn \fdu_allow_url_break: { \cs_new:Npn \@@_add_url_break_points: { \tl_map_function:NN \c_@@_url_break_points_tl \do } \@@_appto_cmd:Nn \UrlBreaks { \UrlOrds \@@_add_url_break_points: } } % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_url_break_points_tl} % ������������������������ 26 ������������������������������������ 10 ��������������������� % \pkg{url} ������������ \tn{UrlBreaks} ������������������������ |*|���|-|��� % |~|���|'|���|"|���|-|��������������������������������� % \begin{macrocode} \tl_const:Nn \c_@@_url_break_points_tl { abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 } % \end{macrocode} % \end{variable} % % \changes{v0.7e}{2019/04/23}{������ \pkg{hyperref} ��� \pkg{unicode-math} % ���������������������} % % ������������������������ \pkg{hyperref} ��������� % \begin{macrocode} \ctex_at_end_preamble:n { \RequirePackage { hyperref } % \end{macrocode} % ������ \tn{hypersetup} ��������� \pkg{hyperref} ��������������� % \begin{macrocode} \hypersetup { bookmarksnumbered = true, psdextra = true, unicode = true, % \end{macrocode} % ������ PDF ������������ % \begin{macrocode} %<*class> pdftitle = \l_@@_info_title_sanitized_tl, pdfauthor = \l_@@_info_author_tl, pdfkeywords = \l_@@_info_keywords_clist, %</class> %<*class-en> pdftitle = \l_@@_info_title_en_sanitized_tl, pdfauthor = \l_@@_info_author_en_tl, pdfkeywords = \l_@@_info_keywords_en_clist, %</class-en> % pdfsubject = , pdfcreator = \c_@@_name_pdf_creator_tl } % \end{macrocode} % ��������������������� \cs{fdu_hyperref_setup:n} ��������������������� \tn{hypersetup}��� % \begin{macrocode} \exp_args:NV \hypersetup \g_@@_to_hyperref_clist % \end{macrocode} % URL ��������������� % \begin{macrocode} \fdu_allow_url_break: % \end{macrocode} % ������ \pkg{hyperref} ��� \pkg{biblatex} ������������������������������������������������������ % \begin{macrocode} \tl_if_eq:NnT \l_@@_bib_backend_tl { biblatex } { \BiblatexManualHyperrefOn } } % \end{macrocode} % % ��� PDF ������������������ \tn{fdu@kai} ������������������������ \pkg{hyperref} ������������������ % \begin{macrocode} \ctex_at_end_package:nn { hyperref } { \pdfstringdefDisableCommands { \cs_set_eq:NN \fdu@kai \prg_do_nothing: \cs_set_eq:NN \quad \c_space_tl \cs_set_eq:NN \qquad \c_space_tl } } % \end{macrocode} % % \subsection{������������} % % \begin{macro}{info,style} % ������������meta��������������� % \begin{macrocode} \keys_define:nn { fdu } { info .meta:nn = { fdu / info } {#1}, style .meta:nn = { fdu / style } {#1} } % \end{macrocode} % \end{macro} % % ������������������������ % \begin{macrocode} \keys_set:nn { fdu } { style / font = times, %<class> style / cjk-font = fandol, style / font-size = -4, %<class> style / fullwidth-stop = false, style / auto-make-cover = true, style / logo = { fudan-name.pdf }, style / logo-size = { 0.5 \textwidth }, style / hyperlink = color, style / hyperlink-color = default, style / bib-style = numerical, info / degree = academic, info / secret-level = none, info / school-id = { 10246 }, info / date = { \zhtoday }, %<class> theorem / header-font = { \sffamily }, %<class-en> theorem / header-font = { \bfseries \upshape }, %<class> theorem / body-font = { \fdu@kai }, %<class-en> theorem / body-font = { \itshape }, theorem / counter = { chapter } } % \end{macrocode} % % \begin{macro}{\fdusetup} % ��������������������� % \begin{macrocode} \NewDocumentCommand \fdusetup { m } { \keys_set:nn { fdu } {#1} } % \end{macrocode} % \end{macro} % % \begin{environment}{proof} % \begin{environment}{axiom} % \begin{environment}{corollary} % \begin{environment}{definition} % \begin{environment}{example} % \begin{environment}{lemma} % \begin{environment}{theorem} % ��������������������������������������� % ������������������������������������������������������������������������������ % \begin{macrocode} %<*class> \newtheorem* { proof } { \c_@@_name_proof_tl } \newtheorem { axiom } { \c_@@_name_axiom_tl } \newtheorem { corollary } { \c_@@_name_corollary_tl } \newtheorem { definition } { \c_@@_name_definition_tl } \newtheorem { example } { \c_@@_name_example_tl } \newtheorem { lemma } { \c_@@_name_lemma_tl } \newtheorem { theorem } { \c_@@_name_theorem_tl } %</class> %<*class-en> \newtheorem* { proof } { \c_@@_name_proof_en_tl } \newtheorem { axiom } { \c_@@_name_axiom_en_tl } \newtheorem { corollary } { \c_@@_name_corollary_en_tl } \newtheorem { definition } { \c_@@_name_definition_en_tl } \newtheorem { example } { \c_@@_name_example_en_tl } \newtheorem { lemma } { \c_@@_name_lemma_en_tl } \newtheorem { theorem } { \c_@@_name_theorem_en_tl } %</class-en> %</class|class-en> % \end{macrocode} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % % \subsection{������������������������} % % \changes{v0.3}{2017/06/27}{���������������������������������������} % % \begin{macrocode} %<*definition> % \end{macrocode} % % \subsubsection{������������} % % \begin{variable}{\c_@@_name_simp_tl,\c_@@_name_trad_tl,\c_@@_name_en_tl} % ��������������� % \begin{macrocode} \tl_const:Nn \c_@@_name_simp_tl { ������������ } \tl_const:Nn \c_@@_name_trad_tl { ������������ } \tl_const:Nn \c_@@_name_en_tl { Fudan~ University } % \end{macrocode} % \end{variable} % % ���������������������������~\ref{tab:punctuations}��� % \begin{macrocode} \clist_map_inline:nn { { ideo_comma } { ^^^^3001 }, { ideo_full_stop } { ^^^^3002 }, { fwid_comma } { ^^^^ff0c }, { fwid_full_stop } { ^^^^ff0e }, { fwid_colon } { ^^^^ff1a }, { fwid_semicolon } { ^^^^ff1b }, { fwid_left_paren } { ^^^^ff08 }, { fwid_right_paren } { ^^^^ff09 } } { \@@_define_punct:nn #1 } % \end{macrocode} % % \begin{table}[ht] % \caption{������������������} % \label{tab:punctuations} % \centering % \begin{tabular}{cccc} % \toprule % \textbf{������������} & % \textbf{������������} & % \textbf{������} & % \textbf{Unicode ������} \\ % \midrule % ������������ & Ideographic comma & ^^^^3001 & U+3001 \\ % ������������ & Ideographic full stop & ^^^^3002 & U+3002 \\ % ������������ & Fullwidth comma & ^^^^ff0c & U+FF0C \\ % ������������������ & Fullwidth full stop & ^^^^ff0e & U+FF0E \\ % ������������ & Fullwidth colon & ^^^^ff1a & U+FF1A \\ % ������������ & Fullwidth semicolon & ^^^^ff1b & U+FF1B \\ % ������������������ & Fullwidth left parenthesis & ^^^^ff08 & U+FF08 \\ % ������������������ & Fullwidth right parenthesis & ^^^^ff09 & U+FF09 \\ % \bottomrule % \end{tabular} % \end{table} % % \begin{variable}{\c_@@_line_spread_fp} % ��������������������������� $k$ ������������������ % \begin{equation*} % 1.2 \times k \times \qty{12}{bp} = \qty{20}{pt}. % \end{equation*} % ���������1.2 ���������������������������������������\qty{12}{bp} ��������������������������� % \qty{20}{pt} ��������������������� % \begin{macrocode} \fp_const:Nn \c_@@_line_spread_fp { \dim_ratio:nn { 20 pt } { 12 bp } / 1.2 } % \end{macrocode} % \end{variable} % % \subsubsection{���������} % % \begin{variable}{\c_@@_orig_decl_text_tl} % ������������������������ % \begin{macrocode} \tl_const:Nn \c_@@_orig_decl_text_tl { ��������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������� } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_auth_decl_text_tl} % ��������������������������� % \begin{macrocode} \tl_const:Nn \c_@@_auth_decl_text_tl { ��������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������������ } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_orig_decl_sign_clist, % \c_@@_auth_decl_sign_clist} % ������������������������ % \begin{macrocode} \clist_const:Nn \c_@@_orig_decl_sign_clist { ������������, ������ } \clist_const:Nn \c_@@_auth_decl_sign_clist { ������������, ������������, ������ } % \end{macrocode} % \end{variable} % % \subsubsection{������} % % \begin{variable}{\c_@@_thesis_type_prop,\c_@@_degree_type_prop} % ������������������������������ % \begin{macrocode} \prop_const_from_keyval:Nn \c_@@_thesis_type_prop { doctor = ������������������, master = ������������������, bachelor = ������������������, } \prop_const_from_keyval:Nn \c_@@_degree_type_prop { academic = ������������, professional = ������������, } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_secret_prop} % ��������������� % \begin{macrocode} \prop_const_from_keyval:Nn \c_@@_secret_prop { i = ������, ii = ������, iii = ������, } % \end{macrocode} % \end{variable} % % \changes{v0.9a}{2023/03/23}{������������������������������������������} % % ��������������������������������������������� % \begin{macrocode} \clist_map_inline:nn { { secret_level } { ��� \qquad ��� }, { secret_star } { \textrm { \bigstar } }, { school_id } { ������������ }, { student_id } { ��� \qquad ��� }, { department } { ������ }, { major } { ������ }, { major_professional } { ������������������������������ }, { author } { ������ }, { supervisor } { ������������ }, { date } { ������������ }, { instructors } { ������������������ }, { author_sign } { ������������ }, { supervisor_sign } { ������������ }, { sign_date } { ������ }, { toc } { ��� \quad ��� }, { lof } { ������������ }, { lot } { ������������ }, { bib_en } { Bibliography }, { pdf_creator } { LaTeX~ with~ fduthesis~ class }, { orig_decl } { \c_@@_name_simp_tl \\ ��������������������������� }, { auth_decl } { \c_@@_name_simp_tl \\ ������������������������������ }, } { \@@_define_name:nn #1 } \clist_map_inline:nn { { abstract } { ��� \quad ��� } { Abstract }, { keywords } { ��������� } { Keywords: }, { clc } { ��������������� } { CLC~ code: }, { jel } { JEL ��������� } { JEL~ code: }, { notation } { ��������� } { List~ of~ Symbols }, { acknowledgements } { ��� \quad ��� } { Acknowledgements } } { \@@_define_name:nnn #1 } % \end{macrocode} % % ������������������������ % \begin{macrocode} \clist_map_inline:nn { { proof } { ������ } { Proof }, { axiom } { ������ } { Axiom }, { corollary } { ������ } { Corollary }, { definition } { ������ } { Definition }, { example } { ��� } { Example }, { lemma } { ������ } { Lemma }, { theorem } { ������ } { Theorem } } { \@@_define_name:nnn #1 } % \end{macrocode} % % \begin{variable}{\c_@@_name_major_professional_tl} % \changes{v0.9}{2023/02/05}{���������������������������������} % ��������������������������������� % \begin{macrocode} \tl_put_right:Nn \c_@@_name_major_professional_tl { { \skip_horizontal:n { -0.5 em } } } %</definition> %<@@=> % \end{macrocode} % \end{variable} % % \clearpage % % \end{implementation} %