%%
%% This is file `fduthesis-en.tex',
%% generated with Lua script `get-doc-en.lua'.
%%
%% The original source files were:
%%
%% fduthesis.dtx
%% 
%%     Copyright (C) 2017--2020 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,
%%                                     fduthesis-template.tex,
%%               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.
%% 
\PassOptionsToPackage{scheme=plain, linespread=1.1}{ctex}
\documentclass{fdudoc}
\hypersetup{
  pdftitle  = {fduthesis: LaTeX Thesis Template for Fudan University},
  pdfauthor = {Xiangdong Zeng}}
\ctexset{
  section = {name = {}, format+ = \raggedright},
  subsubsection/tocline = {\CTEXnumberline{#1}#2}}
\pagestyle{headings}
\def\FSID{{\xeCJKsetup{PunctStyle=banjiao}。}}
\def\FSFW{{\xeCJKsetup{PunctStyle=banjiao}．}}

\title{\textcolor{MaterialIndigo800}{%
  \textbf{The \textsf{fduthesis} Class \\
    \LaTeX{} Thesis Template for Fudan University}}}
\author{Xiangdong Zeng}
\date{2020/08/30\quad v0.7e%
  \thanks{\url{https://github.com/stone-zeng/fduthesis}.}}

\begin{document}

\DeleteShortVerb\"

\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

\newgeometry{
  left   = 1.65 in,
  right  = 0.80 in,
  top    = 1.25 in,
  bottom = 1.00 in
}

\section{Introduction}

\cls{fduthesis} is a thesis template for Fudan University.
This template is mostly written in \LaTeX3 syntax, and
provides a simple interface for users.

\subsection*{Getting started with \LaTeX{}}

This documentation is \emph{not} a \LaTeX{} tutorial at
starter's level. If you are totally a newbie, please read some
introductions like the famous \pkg{lshort}. Of course, there
are countless \LaTeX{} tutorials on the Internet. You can
choose whatever you like.

\subsection*{About this documentation}

In this documentation, different typefaces are used to
represent different contents. Packages and classes are shown
in sans-serif font, e.g.\ \pkg{xeCJK} package and
\cls{fduthesis} class. Commands and file names are shown in
monospaced font, e.g.\ command \cs{fdusetup}, environment
\env{abstract} and \TeX{} document \file{thesis.tex}.
Italic-shaped font with angle brackets outside means arguments,
e.g.\ \meta{English title}. However, you do not need to type
the brackets when using these commands. The example code has
proper syntax highlighting so it will be much easier to read.

\LaTeX{} code lines will have a blue line on their left, while
for command lines there will be a pink line. The options,
commands and environments in \cls{fduthesis} will be surrounded
by two horizontal lines. Their usages and descriptions are
provided at the same time.

The options, commands and environments in \cls{fduthesis} can be
divided into the following three types:
\begin{itemize}
  \item Those can be only used in \emph{Chinese templates} are
    indicated by \rexptarget\rexpstar{}.
  \item Those can be only used in \emph{English templates} are
    indicated by \rexptarget\expstar{}.
  \item If they do not have special characters afterwards, then
    you can use them in both Chinese and English templates.
\end{itemize}

If you want to read the implementation part, please turn to the
Chinese version. Any issues or feature requests can be submitted
in the \href{https://github.com/stone-zeng/fduthesis/issues}%
{GitHub repository}.

\section{Installation}

\subsection{Obtaining \cls{fduthesis}}

\subsubsection{Standard installation}

If there are no special reasons, it is always recommended to
install \cls{fduthesis} with a package manager. For example,
the following command will install the package in \TeXLive{}
(administrator permission may be required):
\begin{shellexample}[gobble=1,morekeywords={tlmgr,install}]
  tlmgr install fduthesis
\end{shellexample}

In \TeXLive{} and \MiKTeX{}, you can also install \cls{fduthesis}
through a graphical interface. It's rather simple and will not be
described here.

\subsubsection{Install manually}

If you want to download the template from CTAN and install it
manually, the recommended way is to use the TDS ZIP file:
\begin{itemize}
  \item Download the \href{http://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip}%
    {TDS ZIP file} for \cls{fduthesis};
  \item Copy all the files in \file{fduthesis.tds.zip} into the
    local TDS directory of \TeX{} distribution.
  \item Run \bashcmd{mktexlsr} to update the ls-R database.
\end{itemize}
Although not recommended, you may generate the whole template
from source code as well:
\begin{itemize}
  \item Open the project's \href{https://github.com/stone-zeng/fduthesis}%
    {homepage}, click ``Clone or download'' and choose
    ``Download ZIP'' to download \file{fduthesis-master.zip}.
    If you have git program on your computer, you can also
    clone the repository directly:
    \begin{shellexample}[gobble=5,alsoletter={.},%
        morekeywords={git,clone}]
      git clone https://github.com/stone-zeng/fduthesis.git
    \end{shellexample}
  \item Extract files, and get into the \file{source} directory.
    Run the following command to generate all the components:
    \begin{shellexample}[gobble=5,morekeywords={xetex}]
      xetex fduthesis.dtx
    \end{shellexample}
  \item Copy the generated document classes (\file{.cls}),
    packages (\file{.sty}) and configuration files (\file{.def})
    into \path{texmf-local/tex/latex/fduthesis/} under the local
    TDS tree of \TeX{} distribution. Then run \bashcmd{mktexlsr}
    to update the ls-R database.
  \item When writing your thesis with \cls{fduthesis}, you need
    to copy the file \file{fudan-name.pdf} (can be found in the
    \file{testfiles/support} directory of the Git repository) to
    your working directory, to make sure that the logo in the
    cover can be displayed correctly.
\end{itemize}

\subsubsection{\cls{fduthesis} on the fly}

If you don't want to install \cls{fduthesis} but need to use it
at once, you can try the installation scripts. Download the
repository from GitHub, run \file{install-win.bat} (on Windows)
or \file{install-linux.sh} (on Linux), then all the necessary
files will be found in the \file{thesis} folder.

\subsection{Composition of the template}

There are several parts in \cls{fduthesis}, including kernel
template classes, configuration files, affiliated packages and
user's guides. More details are listed in table~%
\ref{tab:fduthesis-components}.

\begin{table}[ht]
  \caption{The main components of \cls{fduthesis}}
  \label{tab:fduthesis-components}
  \centering
  \begin{tabular}{lp{24em}}
    \toprule
    \textbf{Files} & \textbf{Descriptions} \\
    \midrule
    \file{fduthesis.cls}          & Document class for Chinese thesis. \\
    \file{fduthesis-en.cls}       & Document class for English thesis.\\
    \file{fduthesis.def}          & Configuration parameters file
      for \cls{fduthesis}. Please do \emph{not} modify it. \\
    \file{fdudoc.cls}             & Document class for user guides. \\
    \file{fdulogo.sty}            & Fudan University's visual identity. \\
    \file{fudan-emblem.pdf}       & University emblem. \\
    \file{fudan-emblem-new.pdf}   & University emblem (revised version). \\
    \file{fudan-name.pdf}         & Figure of university name. \\
    \file{README.md}              & The brief introduction. \\
    \file{fduthesis.pdf}          & User's guide in Chinese. \\
    \file{fduthesis-en.pdf}       & User's guide in English (this
      document). \\
    \file{fduthesis-code.pdf}     & Code implementation. \\
    \file{fduthesis-template.tex} & An empty thesis template, and you can
      write your thesis based on it. \\
    \bottomrule
  \end{tabular}
\end{table}

\section{User's guide}

\subsection{Getting started}

Here is a minimal \TeX{} file for \cls{fduthesis}:
\begin{latexexample}[gobble=1,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}

Compile this file under the instructions in subsection~%
\ref{subsec:compilation}, you will get a 5-page article.
Of course, most of it will be blank, as you may predicate.

The English version can be used in the same way:
\begin{latexexample}[gobble=1,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}
The differences between English and Chinese version only
live in the main body. Thesis cover, instructors list and
declaration page are still printed in Chinese.

\subsection{Compilation} \label{subsec:compilation}

\cls{fduthesis} does NOT support \pdfTeX{}. Please use
\XeLaTeX{} or \LuaLaTeX{} to compile, and \XeLaTeX{} is
recommended. To get the correct table of contents, footnotes
and cross-references, you need to compile the source file at
least twice.

In the following example, suppose your \TeX{} source file is
\file{thesis.tex}. Please execute the following commands if
you want to use \XeLaTeX{}:
\begin{shellexample}[gobble=1,morekeywords={xelatex}]
  xelatex thesis
  xelatex thesis
\end{shellexample}
You can use \pkg{latexmk} as well:
\begin{shellexample}[gobble=1,morekeywords={latexmk},emph={-xelatex}]
  latexmk -xelatex thesis
\end{shellexample}

\LuaLaTeX{} can be used in a similar way:
\begin{shellexample}[gobble=1,morekeywords={lualatex}]
  lualatex thesis
  lualatex thesis
\end{shellexample}
or
\begin{shellexample}[gobble=1,morekeywords={latexmk},emph={-lualatex}]
  latexmk -lualatex thesis
\end{shellexample}

\subsection{Options of the template}

You can specify some \emph{template options} when loading
\cls{fduthesis}:
\begin{latexexample}[gobble=1,deletetexcs={\documentclass},%
    morekeywords={\documentclass}]
  \documentclass(*\oarg{options}*){fduthesis}
  \documentclass(*\oarg{options}*){fduthesis-en}
\end{latexexample}

Some options are \emph{boolean} --- they only take the value
\opt{true} or \opt{false}. For these options, you can
abbreviate ``\kvopt{\meta{option}}{true}'' simply to
``\opt{\meta{option}}''.

\begin{function}[added=2018-02-01]{type}
  \begin{fdusyntax}[gobble=4,emph={[1]type}]
    type = (*<doctor|master|(bachelor)>*)
  \end{fdusyntax}
  Choose the type of your thesis. The three options represent
  doctoral dissertation, master degree thesis and undergraduate
  thesis, respectively.
\end{function}

\begin{function}{oneside,twoside}
  Specify whether single or double sided output should be
  generated. \opt{twoside} will be chosen by default. These
  option will determine where the new chapters begin and how
  the headers display. The option \opt{twoside} does
  \emph{not} tell the printer to actually make a two-sided
  printout.
\end{function}

If choosing \opt{twoside}, chapters will begin at the odd pages
(right hand). However, they will begin at arbitrary pages
available when choosing \opt{oneside}. Table of contents,
abstract and the list of symbols are considered as chapters and
processed in the same way.

At two-sided mode, left headers on the even pages (left hand)
in \emph{main body} will show the title of chapters, while the
right headers on the odd pages (right hand) will show the
title of sections. Headers in \emph{front matter} have the
same style, but they will only show the title as ``Contents'',
``Abstract'', etc.

At one-sided mode, both left and right headers on \emph{all}
pages in main body will be shown. The text is the title of
chapters and sections, respectively. In front matter, there
are only middle headers, which show the corresponding titles.

\begin{function}{draft}
  \begin{fdusyntax}[gobble=4,emph={[1]draft}]
    draft = (*<\TFF>*)
  \end{fdusyntax}
  Enable draft mode. Default off.
\end{function}

\opt{draft} is a global option and will affect many packages.
You may notice the following changes when using \opt{draft}:
\begin{itemize}
  \item Lines with overfull \tn{hbox}'s will be marked with
    a thick black square on the right margin.
  \item Will not include graphics files actually, but instead
    print a box of the size the graphic would take up, as well
    as the file name.
  \item Will not make hyperlinks and PDF bookmarks.
  \item Show the page frames.
\end{itemize}

\begin{function}[added=2018-01-31]{config}
  \begin{fdusyntax}[gobble=4,emph={[1]config}]
    config = (*\marg{file}*)
  \end{fdusyntax}
  File name of user profile. Default value is empty, so no
  profile is loaded automatically.
\end{function}

\subsection{More options}

\begin{function}{\fdusetup}
  \begin{fdusyntax}[gobble=4,morekeywords={\fdusetup}]
    \fdusetup(*\marg{key-value list}*)
  \end{fdusyntax}
  \cls{fduthesis} has provided a number of options, which
  can be given via the general command \cs{fdusetup}.
\end{function}

The argument of \cs{fdusetup} is a set of comma-separated option
list. The options usually have the form of \kvopt{\meta{key}}%
{\meta{value}} and in some cases \meta{value} can be omitted.
For the same option, the values given later will override the
the previous ones. Default values are indicated in
\textbf{boldface} in the following descriptions.

\cs{fdusetup} follows \LaTeX3 key-value style, and different
types as well as various levels options are supported. In the
key-value list, spaces around ``|=|'' will be trimmed; however,
blank lines should never appear in the argument.

Similar with template options, ``\kvopt{\meta{option}}{true}''
can be abbreviated to \opt{\meta{option}} for boolean type.

Some options, such as \opt{style} and \opt{info}, may have
sub-options. They can be set by the following two equivalent
methods:
\begin{latexexample}[gobble=1,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}
or
\begin{latexexample}[gobble=1,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}

Note that you may \emph{not} put spaces around ``|/|''.

\subsubsection{Style and format} \label{subsubsec:style-and-format}

\begin{function}{style}
  \begin{fdusyntax}[gobble=4,emph={[1]style}]
    style = (*\marg{key-value list}*)
    style/(*\meta{key}*) = (*\meta{value}*)
  \end{fdusyntax}
  This general option is for setting the thesis style and format.
  See the following details.
\end{function}

\begin{function}[updated=2019-03-05]{style/font}
  \begin{fdusyntax}[gobble=4,emph={[1]font}]
    font = (*<garamond|libertinus|lm|palatino|(times)|times*|none>*)
  \end{fdusyntax}
  Set fonts (including math fonts). The details can be found in table~\ref{tab:font}.
\end{function}

\begin{table}[ht]
\begin{threeparttable}
  \caption{Font configuration}
  \label{tab:font}
  \centering
  \begin{tabular}{ccccc}
    \toprule
      & \strong{Roman} & \strong{Sans-serif} & \strong{Monospaced} & \strong{Math} \\
    \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'' is the abbreviation of Latin Modern.
    \item[b] ``TG'' is the abbreviation of TeX Gyre.
    \item[c] Here, Times New Roman, Arial and Courier New are commercial fonts. They are
      installed on Windows and macOS by default.
  \end{tablenotes}
\end{threeparttable}
\end{table}
\begin{function}[rEXP,updated=2019-03-05]{style/cjk-font}
  \begin{fdusyntax}[gobble=4,emph={[1]cjk-font}]
    cjk-font = (*<adobe|(fandol)|founder|mac|sinotype|sourcehan|windows|none>*)
  \end{fdusyntax}
  Set CJK (Chinese, Japanese and Korean) fonts. The details can be found in
  table~\ref{tab:cjk-font}.
\end{function}

\begin{table}[ht]
  \caption{CJK font configuration}
  \label{tab:cjk-font}
  \centering
  \begin{tabular}{cccc}
    \toprule
      & \strong{Roman (song)} & \strong{Sans-serif (hei)} & \strong{Monospaced (fang)} \\
    \midrule
      |adobe|     & Adobe Song Std      & Adobe Heiti Std    & Adobe Fangsong Std \\
      |fandol|    & FandolSong          & FandolHei          & FandolFang         \\
      |founder|   & FZShuSong-Z01       & FZHei-B01          & FZFangSong-Z02     \\
      |mac|       & Songti SC           & Heiti SC           & STFangsong         \\
      |sinotype|  & STSong              & STHeiti            & STFangsong         \\
      |sourcehan| & Source Han Serif SC & Source Han Sans SC & ---                \\
      |windows|   & SimSun              & SimHei             & FangSong           \\
    \bottomrule
  \end{tabular}
\end{table}

When you choose \kvopt{font}{none} or \kvopt{cjk-font}{none},
\cls{fduthesis} will disable the default western/CJK font
settings. You may use \cs{setmainfont}, \cs{setCJKmainfont}
and \cs{set\-math\-font}, etc.\ to configure the fonts manually.

\begin{function}{style/font-size}
  \begin{fdusyntax}[gobble=4,emph={[1]font-size}]
    font-size = (*<(-4)|5>*)
  \end{fdusyntax}
  Specify the basic font size in your thesis.
\end{function}

\begin{function}[rEXP,updated=2017-10-14]{style/fullwidth-stop}
  \begin{fdusyntax}[gobble=4,emph={[1]fullwidth-stop}]
    fullwidth-stop = (*<catcode|mapping|(false)>*)
  \end{fdusyntax}
  Let full-width full stop ``\FSFW'' as the default full stop.
  Generally, this punctuation is used for scientific articles,
  where ``\FSID'' is easily to be confused with subscript
  ``$_o$'' or ``$_0$''.
\end{function}

If you choose \kvopt{fullwidth-stop}{catcode}, only
\emph{explicit} ``\FSID'' will be replaced by ``\FSFW''; when
choosing \kvopt{fullwidth-stop}{mapping}, however, \emph{all}
the ``\FSID'' will be replaced.

\opt{mapping} is valid only under \XeTeX{}. When compiling
with \LuaTeX{}, it is equivalent to \opt{catcode}.

If you want to display ``\FSID'' temporarily after setting
\kvopt{fullwidth-stop}{mapping}, the following code snippet
will be helpful:
\begin{latexexample}[gobble=1,moretexcs={\CJKfontspec},emph={[1]Mapping}]
  % Compiled with XeTeX
  % The outside braces is used for group
  这是一个句号{\CJKfontspec{(*\meta{font name}*)}[Mapping=full-stop]。}
\end{latexexample}

\begin{function}{style/footnote-style}
  \begin{fdusyntax}[gobble=4,emph={[1]footnote-style}]
    footnote-style = (*<plain|\\
      XXXX\mbox{}~~~~~~~~~~~~~~~~~libertinus|libertinus*|libertinus-sans|\\
      XXXX\mbox{}~~~~~~~~~~~~~~~~~pifont|pifont*|pifont-sans|pifont-sans*|\\
      XXXX\mbox{}~~~~~~~~~~~~~~~~~xits|xits-sans|xits-sans*>*)
  \end{fdusyntax}
  Set the style of footnote numbers. Note that western fonts
  will affect its default value (see table~\ref{tab:footnote-font}),
  so you may put it after |font| option. The one with |sans|
  is for the corresponding sans-serif version, while |*|
  for white on black version.
\end{function}

\begin{table}[ht]
  \caption{Relationship between option \opt{font} and the
    default value of \opt{footnote-style}}
  \label{tab:footnote-font}
  \centering
  \begin{tabular}{ccccc}
    \toprule
    \textbf{Western fonts settings} &
      |libertinus| & |lm|     & |palatino| & |times| \\
    \midrule
    \textbf{Default value of footnote number style} &
      |libertinus| & |pifont| & |pifont|   & |xits|  \\
    \bottomrule
  \end{tabular}
\end{table}

\begin{function}[added=2017-08-13]{style/hyperlink}
  \begin{fdusyntax}[gobble=4,emph={[1]hyperlink}]
    hyperlink = (*<border|(color)|none>*)
  \end{fdusyntax}
  Set the style of hyperlinks. \opt{border} draws borders around
  hyperlinks; \opt{color} displays hyperlinks in colorful text;
  \opt{none} leads to plain text, which is useful when printing
  the final document.
\end{function}

\begin{function}[added=2017-08-13,updated=2017-12-08]{style/hyperlink-color}
  \begin{fdusyntax}[gobble=4,emph={[1]hyperlink-color}]
    hyperlink-color = (*<(default)|classic|elegant|fantasy|material|\\
      XXXX\mbox{}~~~~~~~~~~~~~~~~~~business|science|summer|autumn|graylevel|prl>*)
  \end{fdusyntax}
  Set the color of hyperlinks. It is invalid if
  \kvopt{hyperlink}{none}. The related colors can be found
  in table~\ref{tab:hyperlink-color}.
\end{function}

\begin{table}[ht]
\centering
\newcommand\linkcolorexam[3]{%
  {\small Fig.~\textcolor[HTML]{#1}{1-2}，
    Eq.~(\textcolor[HTML]{#1}{3.4})} &
  {\small \textcolor[HTML]{#2}{\texttt{http://g.cn}}} &
  {\small Ref.~[\textcolor[HTML]{#3}{1}]，
    (\textcolor[HTML]{#3}{Knuth~1986})}}
\begin{threeparttable}
\caption{Pre-defined hyperlink color schemes}
\label{tab:hyperlink-color}
\begin{tabular}{c*{3}{>{\hspace{0.2cm}}c<{\hspace{0.2cm}}}}
  \toprule
  \textsf{Options} & \textsf{Cross references} & \textsf{URL} & \textsf{Citation} \\
  \midrule
  \opt{default}            & \linkcolorexam{990000}{0000B2}{007F00} \\
  \opt{classic}            & \linkcolorexam{FF0000}{0000FF}{00FF00} \\
  \opt{elegant}\tnote{a}   & \linkcolorexam{961212}{C31818}{9B764F} \\
  \opt{fantasy}\tnote{b}   & \linkcolorexam{FF4A19}{FF3F94}{934BA1} \\
  \opt{material}\tnote{c}  & \linkcolorexam{E91E63}{009688}{4CAF50} \\
  \opt{business}\tnote{d}  & \linkcolorexam{D14542}{295497}{1F6E43} \\
  \opt{science}\tnote{e}   & \linkcolorexam{CA0619}{389F9D}{FF8920} \\
  \opt{summer}\tnote{f}    & \linkcolorexam{00AFAF}{5F5FAF}{5F8700} \\
  \opt{autumn}\tnote{f}    & \linkcolorexam{D70000}{D75F00}{AF8700} \\
  \opt{graylevel}\tnote{c} & \linkcolorexam{616161}{616161}{616161} \\
  \opt{prl}\tnote{g}       & \linkcolorexam{2D3092}{2D3092}{2D3092} \\
  \bottomrule
\end{tabular}
\begin{tablenotes}
  \item[a] From \href{https://tex.stackexchange.com/}%
    {\TeX{} - \LaTeX{} Stack Exchange}.
  \item[b] Adobe CC.
  \item[c] Material Design color palette
    (See \url{https://material.io/guidelines/style/color.html}).
  \item[d] Microsoft Office 2016.
  \item[e] From \href{https://www.wolfram.com/}{Wolfram Research website}.
  \item[f] Solarized color palette
    (See \url{http://ethanschoonover.com/solarized}).
  \item[g] \textit{Physical Review Letter} magazine.
\end{tablenotes}
\end{threeparttable}
\end{table}

\begin{function}[added=2018-01-25]{style/bib-backend}
  \begin{fdusyntax}[gobble=4,emph={[1]bib-backend}]
    bib-backend = (*<bibtex|biblatex>*)
  \end{fdusyntax}
  Specify the backend or driver of bibliography processing.
  \BibTeX{} and \pkg{natbib} package will be used if you choose
  \opt{bibtex}, while \biber{} and \pkg{biblatex} will be used
  if you choose \opt{biblatex}.
\end{function}

\begin{function}[added=2017-10-28,updated=2018-01-25]%
    {style/bib-style}
  \begin{fdusyntax}[gobble=4,emph={[1]bib-style}]
    bib-style = (*<author-year|(numerical)|\meta{other style}>*)
  \end{fdusyntax}
  Set the style of bibliography. \opt{author-year} and
  \opt{numerical} will follow the standard GB/T 7714--2015.
  By setting \kvopt{bib-style}{\meta{other style}}, you can use
  other bibliography style (\file{.bst} file for
  \kvopt{bib-backend}{bibtex} and \file{.bbx} file for
  \kvopt{bib-backend}{biblatex}). Suffix is not needed.
\end{function}

\begin{function}[added=2018-01-25]{style/cite-style}
  \begin{fdusyntax}[gobble=4,emph={[1]cite-style}]
    cite-style = (*\marg{style}*)
  \end{fdusyntax}
  Select citation style. Default value is empty, which means
  the citation style will follow your bibliography style
  (author-year or numeric). If you want change the citation
  style, the corresponding \file{.cbx} file must be available.
  This option is invalid when \kvopt{bib-backend}{bibtex}.
\end{function}

\begin{function}[added=2018-01-25]{style/bib-resource}
  \begin{fdusyntax}[gobble=4,emph={[1]bib-resource}]
    bib-resource = (*\marg{bib file\symbol{"28}s\symbol{"29}}*)
  \end{fdusyntax}
  Specify the bibliography database (usually in \file{.bib}
  format). If using more than one files, the file names should
  be separated with comma. When \kvopt{bib-backend}{biblatex},
  you must type in the ``\file{.bib}'' suffix.
\end{function}

\begin{function}[added=2017-08-10]{style/logo}
  \begin{fdusyntax}[gobble=4,emph={[1]logo}]
    logo = (*\marg{file}*)
  \end{fdusyntax}
  File name of the logo in thesis cover. Default value is
  \file{fudan-name.pdf}.
\end{function}

\begin{function}[added=2017-08-10]{style/logo-size}
  \begin{fdusyntax}[gobble=4,emph={[1]logo-size}]
    logo-size = (*\marg{width}*)
    logo-size = {(*\meta{width}*), (*\meta{height}*)}
  \end{fdusyntax}
  Size of the logo. By default, only width is set to
  |0.5\textwidth|. To set height only, you can put an
  empty group ``|{}|'' at \meta{width}.
\end{function}

\begin{function}[added=2017-07-06]{style/auto-make-cover}
  \begin{fdusyntax}[gobble=4,emph={[1]auto-make-cover}]
    auto-make-cover = (*<\TTF>*)
  \end{fdusyntax}
  Whether generate thesis cover, list of instructors (inside
  front cover) and declaration page (inside back cover)
  automatically. Entries in the cover can be specified also
  via \cs{fdusetup}, and you can find more details in
  subsubsection~\ref{subsubsec:information}.
\end{function}

\begin{function}{\makecoveri,\makecoverii,\makecoveriii}
  For generating thesis cover, list of instructors and
  declaration page manually. These commands cannot ensure
  the correct page numbers, hence you should always use the
  auto-generated thesis cover unless necessary.
\end{function}

\subsubsection{Personal information} \label{subsubsec:information}

\begin{function}{info}
  \begin{fdusyntax}[gobble=4,emph={[1]info}]
    info = (*\marg{key-value list}*)
    info/(*\meta{key}*) = (*\meta{value}*)
  \end{fdusyntax}
  This general option is for entering your personal information.
  See the following details. Note that options with ``|*|'' are
  the corresponding English items.
\end{function}

\begin{function}[added=2018-02-01,updated=2019-03-12]{info/degree}
  \begin{fdusyntax}[gobble=4,emph={[1]degree}]
    degree = (*<(academic)|professional>*)
  \end{fdusyntax}
  Degree type. This option can only be used in master degree
  thesis.
\end{function}

\begin{function}{info/title,info/title*}
  \begin{fdusyntax}[gobble=4,emph={[1]title,title*}]
    title  = (*\marg{title in Chinese}*)
    title* = (*\marg{title in English}*)
  \end{fdusyntax}
  Title of your thesis. The line width is about \SI{30}{em} by
  default, but you may break it with |\\| manually.
\end{function}

\begin{function}{info/author,info/author*}
  \begin{fdusyntax}[gobble=4,emph={[1]author,author*}]
    author  = (*\marg{name in Chinese}*)
    author* = (*\marg{name in English \lparen or Pinyin\rparen}*)
  \end{fdusyntax}
  Author's name.
\end{function}

\begin{function}{info/supervisor}
  \begin{fdusyntax}[gobble=4,emph={[1]supervisor}]
    supervisor = (*\marg{name}*)
  \end{fdusyntax}
  Supervisor's name.
\end{function}

\begin{function}{info/department}
  \begin{fdusyntax}[gobble=4,emph={[1]department}]
    department = (*\marg{name}*)
  \end{fdusyntax}
  Name of the department.
\end{function}

\begin{function}{info/major}
  \begin{fdusyntax}[gobble=4,emph={[1]major}]
    major = (*\marg{name}*)
  \end{fdusyntax}
  Name of the major.
\end{function}

\begin{function}{info/student-id}
  \begin{fdusyntax}[gobble=4,emph={[1]student-id}]
    student-id = (*\marg{number}*)
  \end{fdusyntax}
  Author's student ID.
\end{function}

In Fudan University, student ID has 11 digits. The first two
are the year of attendance; next one represents the student's
type (1 for doctor, 2 for master and 3 for bachelor); the
following five digits are major ID while the last three are
serial number.

\begin{function}{info/school-id}
  \begin{fdusyntax}[gobble=4,emph={[1]school-id}]
    school-id = (*\marg{number}*)
  \end{fdusyntax}
  School ID. Default value is 10246 (school ID of Fudan University).
\end{function}

\begin{function}{info/date}
  \begin{fdusyntax}[gobble=4,emph={[1]date}]
    date = (*\marg{date}*)
  \end{fdusyntax}
  Finish date of your thesis. Default value is the compilation
  date (\tn{today}).
\end{function}

\begin{function}[added=2017-07-04]{info/secret-level}
  \begin{fdusyntax}[gobble=4,emph={[1]secret-level}]
    secret-level = (*<(none)|i|ii|iii>*)
  \end{fdusyntax}
  Secret level. \opt{i}, \opt{ii} and \opt{iii} means
  ``秘密'' (secret), ``机密'' (confidential) and ``绝密''
  (top secret) respectively. \opt{none} means your thesis is
  not secret-related and secret level and year will not be
  shown.
\end{function}

\begin{function}[added=2017-07-04]{info/secret-year}
  \begin{fdusyntax}[gobble=4,emph={[1]secret-year}]
    secret-year = (*\marg{year}*)
  \end{fdusyntax}
  Secret year. It's recommended to use Chinese word as ``五年''
  (5 years) here. This option is invalid if you have set
  \kvopt{secret-level}{none}.
\end{function}

\begin{function}{info/instructors}
  \begin{fdusyntax}[gobble=4,emph={[1]instructors}]
    instructors = (*\marg{member 1, member 2, ...}*)
  \end{fdusyntax}
  Instructors' name. Each name should be separated with
  comma. To disambiguate, you may put text containing comma
  into a group ``|{...}|''.
\end{function}

\begin{function}{info/keywords,info/keywords*}
  \begin{fdusyntax}[gobble=4,emph={[1]keywords,keywords*}]
    keywords  = (*\marg{keywords in Chinese}*)
    keywords* = (*\marg{keywords in English}*)
  \end{fdusyntax}
  Keywords list. Each keyword should be separated with comma.
  To disambiguate, you may put text containing comma into a
  group ``|{...}|''.
\end{function}

\begin{function}{info/clc}
  \begin{fdusyntax}[gobble=4,emph={[1]clc}]
    clc = (*\marg{classification codes}*)
  \end{fdusyntax}
  Chinese Library Classification (CLC).
\end{function}

\subsection{Writing your thesis}

\subsubsection{Front matter}

\begin{function}{\frontmatter}
  Declare the beginning of front matter.
\end{function}

Front matter contains table of contents, abstracts and notation
list. The page numbers in front matter will be shown in
lowercase Roman numerals, and will be counted separately with
main matter.

\begin{function}{\tableofcontents}
  Generate the table of contents (TOC). You need to compile
  the source file at least \emph{twice} to get the correct TOC.
  If your thesis contains many figures or tables, you may also
  use \cs{listoffigures} or \cs{listoftables} to generate a list
  of them.
\end{function}

\begin{function}{abstract}
  \begin{fdusyntax}[gobble=4,emph={[2]abstract}]
    % fduthesis (Chinese thesis)    % fduthesis-en (English thesis)
    \begin{abstract}                \begin{abstract}
      (*\meta{Chinese abstract} \hspace{3cm} \meta{English abstract}*)
    \end{abstract}                  \end{abstract}
  \end{fdusyntax}
\end{function}
\begin{function}[rEXP]{abstract*}
  \begin{fdusyntax}[gobble=4,emph={[2]abstract*}]
    % Only for fduthesis
    \begin{abstract*}
      (*\meta{English abstract}*)
    \end{abstract*}
  \end{fdusyntax}
  Abstract environment. In \cls{fduthesis}, \env{abstract} and
  \env{abstract*} are used for Chinese and English abstract,
  respectively; while in \cls{fduthesis-en}, there is no
  \env{abstract*} environment and you need to write the English
  abstract merely.
\end{function}

At the end of abstract (both Chinese and English, if available),
keywords list and CLC number will be shown. They can be
specified via command \cs{fdusetup} and you may refer to
subsubsection~\ref{subsubsec:information} for more details.

\begin{function}{notation}
  \begin{fdusyntax}[gobble=4,emph={[2]notation}]
    \begin{notation}(*\oarg{column format}*)
      (*\meta{symbol 1}*)  &  (*\meta{description}*)  \\
      (*\meta{symbol 2}*)  &  (*\meta{description}*)  \\
      (*\phantom{\meta{symbol $n$}}*)  (*$\vdots$*)
      (*\meta{symbol \kern-0.1em$n$}*)  &  (*\meta{description}*)
    \end{notation}
  \end{fdusyntax}
  Notation list (or symbol list, nomenclature) environment.
  The optional argument \meta{column format} is the same as
  in a standard \LaTeX{} table. The default value is
  ``|lp{7.5cm}|'', which means auto-width for the first column
  and fix-width (\SI{7.5}{cm}) for the second; both columns will
  be left-aligned.
\end{function}

\subsubsection{Main matter}

\begin{function}{\mainmatter}
  Declare the beginning of main matter.
\end{function}

As the name suggests, ``main matter'' is the main body of your
thesis. When working on a big projects, it's usually a good
idea to split the source file into several parts. The page
numbers in main matter are shown in arabic numerals.

\begin{function}[updated=2018-01-15]{\footnote}
  \begin{fdusyntax}[gobble=4,deletetexcs={\footnote},%
      morekeywords={\footnote}]
    \footnote(*\marg{text}*)
  \end{fdusyntax}
  Insert a footnote. The style of footnote numbers can be set
  with option \opt{style/foot\-note\-style}. See subsubsection~%
  \ref{subsubsec:style-and-format} for more details.
\end{function}

\begin{function}{axiom,corollary,definition,example,lemma,
  proof,theorem}
  \begin{fdusyntax}[gobble=4,emph={[2]proof}]
    \begin{proof}(*\oarg{subheading}*)
      (*\meta{procedure of proof}*)
    \end{proof}
  \end{fdusyntax}
  A series of pre-defined math environments.
\end{function}

A QED\footnote{Abbreviation of Latin phrase \emph{quod erat
  demonstrandum}, means ``what was to be demonstrated''.}
symbol ``$\QED$'' will be added at the end of \env{proof}
environment. You need to compile the source file \emph{twice}
as in subsection~\ref{subsec:compilation} in order to make
the position of QED symbol correct.

\begin{function}[updated=2017-12-12]{\newtheorem}
  \begin{fdusyntax}[gobble=4,deletetexcs={\newtheorem},
      morekeywords={\newtheorem,\newtheorem*}]
    \newtheorem(*\oarg{options}\marg{environment}\marg{title}*)
    \newtheorem*(*\oarg{options}\marg{environment}\marg{title}*)
    \begin(*\marg{environment}\oarg{subheading}*)
      (*\meta{contents}*)
    \end(*\marg{environment}*)
  \end{fdusyntax}
  Declare new math environments (theorems). If you use
  \cs{newtheorem*}, then the theorem will not be numbered, and
  a QED symbol ``$\QED$'' will be added at the end of the
  environment. All the theorem environments defined by yourself
  can be used as the pre-defined ones.
\end{function}

Actually, the pre-defined math environments are just defined
with \cs{new\-the\-o\-rem} and \cs{new\-the\-o\-rem*}:
\begin{latexexample}[gobble=1,deletetexcs={\newtheorem},
    morekeywords={\newtheorem,\newtheorem*}]
  \newtheorem*{proof}{proof}
  \newtheorem{axiom}{axiom}
  \newtheorem{corollary}{corollary}
  ...
\end{latexexample}

Similar with \cs{fdusetup}, the optional argument \meta{options}
of \cs{newtheorem} is a key-value list as well. The available
are described below. Note that you don't need to type in the
``|theorem/|'' prefix.

\begin{function}{theorem/style}
  \begin{fdusyntax}[gobble=4,emph={[1]style}]
    style = (*<(plain)|margin|change|\\
      XXXX\mbox{}~~~~~~~~break|marginbreak|changebreak>*)
  \end{fdusyntax}
  The overall style of the theorem environment.
\end{function}

\begin{function}{theorem/header-font}
  \begin{fdusyntax}[gobble=4,emph={[1]header-font}]
    header-font = (*\marg{font}*)
  \end{fdusyntax}
  Font of the theorem header. Default value is \tn{sffamily}
  and |\bfseries\upshape| for Chinese and English template,
  respectively.
\end{function}

\begin{function}{theorem/body-font}
  \begin{fdusyntax}[gobble=4,emph={[1]body-font}]
    body-font = (*\marg{font}*)
  \end{fdusyntax}
  Font of the theorem body. Default value is \tn{fdu@kai}
  (\textit{楷体}) and \tn{itshape} for Chinese and English
  template, respectively.
\end{function}

\begin{function}{theorem/qed}
  \begin{fdusyntax}[gobble=4,emph={[1]qed}]
    qed = (*\marg{symbol}*)
  \end{fdusyntax}
  Theorem end mark. For \cs{newtheorem}, default value is
  empty; for \cs{newtheorem*}, default value is
  |\ensuremath{\QED}| (i.e.\ ``$\QED$'').
\end{function}

\begin{function}{theorem/counter}
  \begin{fdusyntax}[gobble=4,emph={[1]counter}]
    counter = (*\marg{counter}*)
  \end{fdusyntax}
  The theorem will be enumerated within \meta{counter}. For
  example, the default value is |chapter|, which means with
  each new \tn{chapter}, the enumeration begins again with 1.
  This option is invalid for \cs{newtheorem*}.
\end{function}

\begin{function}{\caption}
  \begin{fdusyntax}[gobble=4,deletetexcs={\caption},morekeywords={\caption}]
    \caption(*\marg{caption}*)
    \caption(*\oarg{short caption}\marg{long caption}*)
  \end{fdusyntax}
  Insert the caption of figure or table. The optional argument
  \meta{short caption} will be shown in the list of figures/tables.
  In \meta{long caption}, you can write descriptions for several
  paragraphs, but \meta{short caption} and the single
  \meta{caption} will not allow multi-paragraph text (i.e.\
  text containing \tn{par}) inside.
\end{function}

By convention, caption of a table is usually put \emph{before}
the table itself, while for figure it's the opposite.
In addition, command \tn{caption} must be put inside float
environments (e.g.\ \env{table} and \env{figure}).

\subsubsection{Back matter}

\begin{function}{\backmatter}
  Declare the beginning of back matter.
\end{function}

Back matter contains bibliography, declaration page, etc.

\begin{function}[updated=2018-01-25]{\printbibliography}
  \begin{fdusyntax}[gobble=4,morekeywords={\printbibliography}]
    \printbibliography(*\oarg{options}*)
  \end{fdusyntax}
  Print the bibliography. When \kvopt{bib-backend}{bibtex}, then
  \meta{options} is invalid and this command is equivalent to
  \tn{bibliography} \texttt{\marg{bib files}}, where
  \meta{bib files} should be specified with option
  \opt{style/bib-resource} (see subsubsection~%
  \ref{subsubsec:style-and-format}). When \kvopt{bib-backend}%
  {bibtex}, then \tn{printbibliography} is provided by
  \pkg{biblatex} and the available options can be found in its
  documentation.
\end{function}

\section{Packages dependencies}

Different compilation methods and options will result in a
different packages dependency. Details are as follows:
\begin{itemize}
  \item In any case, \cls{fduthesis} will load the following
    packages \emph{explicitly}:
    \begin{itemize}
      \item \pkg{expl3}, \pkg{xparse}, \pkg{xtemplate} and
        \pkg{l3keys2e}, belong to \pkg{l3kernel} and
        \pkg{l3packages} bundles
      \item \cls{ctexbook}, belongs to \CTeX{} bundle
      \item \pkg{amsmath}, belongs to \AmSLaTeX{} bundle
      \item \pkg{unicode-math}
      \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 When chosen \kvopt{style/footnote-style}{pifont},
    package \pkg{pifont} will be loaded. It belongs to
    \pkg{psnfss} bundle.
  \item When chosen \kvopt{style/bib-backend}{bibtex},
    package \pkg{natbib} will be loaded. Meanwhile, program
    \BibTeX{} will be required for compilation. The
    bibliography style is provided by \pkg{gbt7714}.
  \item When chosen \kvopt{style/bib-backend}{biblatex},
    package \pkg{biblatex} will be loaded. Program \biber{}
    will be required then. The bibliography style is provided
    by \pkg{biblatex-gb7714-2015}.
\end{itemize}

Only the packages loaded directly by \cls{fduthesis} are listed
here. If you need to know the dependencies of the packages
themselves, please refer to the corresponding manuals.

\end{document}
