From 84aa58500b092a3cdfe24c869194e2de892da943 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Sun, 3 Jan 2021 22:31:14 +0000
Subject: easybook (3jan21)

git-svn-id: svn://tug.org/texlive/trunk@57313 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/latex/easybook/easybook.cls | 1176 +++++++++++++++++++++
 1 file changed, 1176 insertions(+)
 create mode 100644 Master/texmf-dist/tex/latex/easybook/easybook.cls

(limited to 'Master/texmf-dist/tex/latex/easybook/easybook.cls')

diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls
new file mode 100644
index 00000000000..71b1d47f47e
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/easybook/easybook.cls
@@ -0,0 +1,1176 @@
+%%
+%% This is file `easybook.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% easybook.dtx  (with options: `class')
+%% Copyright (C) 2021 by Qu Yi <texeasybook@foxmail.com>
+%% This work may be distributed and/or modified under the
+%% conditions of the CC-BY-NC 4.0 License.
+%% Gitee: https://gitee.com/TeX-doc/easybook
+%% Github: https://github.com/TeX-doc/easybook
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{l3keys2e}
+\ProvidesExplClass{easybook}{2021/01/03}{v1.0}{}
+
+\cs_generate_variant:Nn \keys_define:nn {nx}
+\cs_generate_variant:Nn \int_to_arabic:n {v}
+\cs_new_protected:Npn \__appto_cmd:Nn #1#2
+  {\ctex_appto_cmd:NnnTF #1{}{#2}{}{\ctex_patch_failure:N #1}}
+
+\bool_set_false:N \l__draft_bool
+\bool_set_false:N \l__newline_bool
+\bool_set_false:N \l__enstyle_bool
+\bool_set_true:N  \l__zhtitle_bool
+\bool_set_true:N  \l__myfont_bool
+\bool_set_true:N  \l__lang_chinese_bool
+\bool_set_false:N \l__paper_bfive_bool
+\bool_set_true:N  \l__paper_afour_bool
+\bool_set_true:N  \l__page_twoside_bool
+\bool_new:N       \l__thmbox_bool
+\bool_new:N       \l__capdash_bool
+\bool_new:N       \l__multoc_bool
+\bool_new:N       \l__chap_withpart_bool
+\bool_new:N       \l__foot_perpart_bool
+\clist_new:N      \g__hyperref_clist
+\clist_new:N      \g__options_clist
+
+\keys_define:nn {easybook}
+  {
+    draft         .code:n = {\bool_set_true:N  \l__draft_bool},
+    newline       .code:n = {\bool_set_true:N  \l__newline_bool},
+    enstyle       .code:n = {\bool_set_true:N  \l__enstyle_bool},
+    entitle       .code:n = {\bool_set_false:N \l__zhtitle_bool},
+    english       .code:n = {\bool_set_false:N \l__lang_chinese_bool},
+
+    font          .choice:,
+    font/adobe    .code:n =
+      {
+        \PassOptionsToClass{fontset = #1}{ctexbook}
+        \bool_set_false:N \l__myfont_bool
+      },
+    font/founder  .code:n =
+      {
+        \PassOptionsToClass{fontset = #1}{ctexbook}
+        \bool_set_false:N \l__myfont_bool
+      },
+    font/mac      .code:n =
+      {
+        \PassOptionsToClass{fontset = #1}{ctexbook}
+        \bool_set_false:N \l__myfont_bool
+      },
+    font/windows  .code:n =
+      {
+        \PassOptionsToClass{fontset = #1}{ctexbook}
+        \bool_set_false:N \l__myfont_bool
+      },
+    font/linux    .code:n =
+      {
+        \PassOptionsToClass{fontset = ubuntu}{ctexbook}
+        \bool_set_false:N \l__myfont_bool
+      },
+    font/overleaf .code:n =
+      {\bool_set_false:N \l__myfont_bool},
+    font/none     .code:n =
+      {
+        \PassOptionsToClass{fontset = #1}{ctexbook}
+        \bool_set_false:N \l__myfont_bool
+      }, 
+    font          .default:n = windows,
+
+    paper         .choice:,
+    paper/a4      .code:n = {},
+    paper/b5      .code:n = {\bool_set_true:N \l__paper_bfive_bool},
+    paper         .initial:n = a4,
+
+    oneside       .value_forbidden:n = true,
+    twoside       .value_forbidden:n = true,
+    oneside       .code:n =
+      {\bool_set_false:N \l__page_twoside_bool},
+
+    unknown       .code:n =
+      {\clist_gput_right:No \g__options_clist{\CurrentOption}}
+  }
+
+\ProcessKeysOptions{easybook}
+
+\bool_if:NT \l__myfont_bool{\PassOptionsToClass{fontset = none}{ctexbook}}
+\bool_if:NT \l__enstyle_bool
+  {
+    \bool_set_false:N \l__lang_chinese_bool
+    \bool_set_false:N \l__zhtitle_bool
+    \bool_set_true:N  \l__newline_bool
+  }
+\bool_if:NTF \l__lang_chinese_bool
+  {\PassOptionsToClass{scheme = chinese}{ctexbook}}
+  {\PassOptionsToClass{scheme = plain}{ctexbook}}
+
+\PassOptionsToClass{\g__options_clist}{ctexbook}
+\PassOptionsToPackage{CJKmath = true}{xeCJK}
+\LoadClass[UTF8]{ctexbook}
+
+\tl_new:N \g__keys_color_tl
+\tl_new:N \g__keys_cite_tl
+\fp_new:N \g__line_spread_fp
+\fp_new:N \g__tab_spread_fp
+\tl_new:N \g__math_spread_tl
+\tl_new:N \g__cap_spread_tl
+\tl_new:N \g__foot_spread_tl
+
+\ctex_define:n
+  {
+    style               .meta:nn = {ctex/style}{#1},
+    link                .meta:nn = {ctex/link}{#1},
+    spread              .meta:nn = {ctex/spread}{#1},
+    style/color         .choices:nn =
+      {black,navygreen,navyblue}
+      {\tl_set_eq:NN \g__keys_color_tl\l_keys_choice_tl},
+    style/color         .initial:n = black,
+    style/cite          .choices:nn =
+      {number,authoryear}
+      {\tl_set_eq:NN \g__keys_cite_tl\l_keys_choice_tl},
+    style/cite          .initial:n = number,
+
+    style/thmbox        .bool_set:N = \l__thmbox_bool,
+    style/thmbox        .default:n = true,
+    style/thmbox        .initial:n = false,
+    style/capdash       .bool_set:N = \l__capdash_bool,
+    style/capdash       .default:n = true,
+    style/capdash       .initial:n = false,
+    style/multoc        .bool_set:N = \l__multoc_bool,
+    style/multoc        .default:n = true,
+    style/multoc        .initial:n = false,
+    style/withpart      .bool_set:N = \l__chap_withpart_bool,
+    style/withpart      .default:n = true,
+    style/withpart      .initial:n = false,
+    style/perpart       .bool_set:N = \l__foot_perpart_bool,
+    style/perpart       .default:n = true,
+    style/perpart       .initial:n = false,
+    style/perpage       .bool_set:N = \l__foot_perpage_bool,
+    style/perpage       .default:n = true,
+    style/perpage       .initial:n = false,
+
+    spread/linespread   .fp_set:N = \g__line_spread_fp,
+    spread/linespread   .initial:n = 1.3,
+    spread/tabspread    .fp_set:N = \g__tab_spread_fp,
+    spread/tabspread    .initial:n = 1,
+    spread/mathspread   .tl_set:N = \g__math_spread_tl,
+    spread/mathspread   .initial:n = 1,
+    spread/capspread    .tl_set:N = \g__cap_spread_tl,
+    spread/capspread    .initial:n = 1,
+    spread/fnspread     .tl_set:N = \g__foot_spread_tl,
+    spread/fnspread     .initial:n = 1,
+
+    lstlistlistingname  .tl_set:N = \lstlistlistingname,
+    lstlistingname      .tl_set:N = \lstlistingname
+  }
+
+\RequirePackage[svgnames]{xcolor}
+\cs_new_protected:Nn \__load_color_black:
+  {\definecolorset{HTML}{ctex@}{}{frame,000000;emph,000000;verb,000000}}
+\cs_new_protected:Nn \__load_color_navygreen:
+  {\definecolorset{HTML}{ctex@}{}{frame,005752;emph,004986;verb,a40000}}
+\cs_new_protected:Nn \__load_color_navyblue:
+  {\definecolorset{HTML}{ctex@}{}{frame,005982;emph,eb6877;verb,a4005b}}
+\cs_new_protected:Nn \__load_color:
+  {\use:c {__load_color_ \g__keys_color_tl :}}
+\ctex_at_end_preamble:n {\__load_color:}
+
+\RequirePackage{pdfpages,subfiles}
+\includepdfset{fitpaper = true}
+\RequirePackage[hang,stable]{footmisc}
+\RequirePackage{setspace,zhlineskip}
+\RequirePackage{amsthm,thmtools,cases}
+\RequirePackage[noto,upint]{newtxmath}
+\RequirePackage{chemformula}
+\RequirePackage{chemfig}
+\RequirePackage{siunitx,physics,bm}
+\RequirePackage[normalem]{ulem}
+\RequirePackage[protrusion = false]{microtype}
+\RequirePackage{hologo}
+\hologoSetup{discretionarybreak = true}
+\RequirePackage{rotfloat}
+\RequirePackage{geometry,marginnote,nccfoots,tablefootnote}
+\RequirePackage{fancyhdr,titletoc}
+\RequirePackage{caption,bicaption,subcaption}
+\RequirePackage{graphicx,wrapfig}
+\RequirePackage{zhlipsum,fontawesome,pifont}
+\RequirePackage{tabularx,multirow,makecell,tabu,booktabs}
+\RequirePackage{paralist,tasks}
+\RequirePackage[shortlabels,inline]{enumitem}
+\RequirePackage[most]{tcolorbox}
+\RequirePackage[sort&compress]{gbt7714}
+\RequirePackage[xindy]{imakeidx}
+
+\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_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 \__setCJKmainfont:nn #1#2
+  {\__set_family:nnn {\CJKrmdefault}{#2}{#1}}
+\cs_new_protected:Npn \__setCJKsansfont:nn #1#2
+  {\__set_family:nnn {\CJKsfdefault}{#2}{#1}}
+\cs_new_protected:Npn \__setCJKmonofont:nn #1#2
+  {\__set_family:nnn {\CJKttdefault}{#2}{#1}}
+\cs_new_protected:Npn \__set_zhfont_songti:nn #1#2
+  {\__set_family:nnn {songti}{#2}{#1}}
+\cs_new_protected:Npn \__set_zhfont_heiti:nn #1#2
+  {\__set_family:nnn {heiti}{#2}{#1}}
+\cs_new_protected:Npn \__set_zhfont_kaishu:nn #1#2
+  {\__set_family:nnn {kaishu}{#2}{#1}}
+\cs_new_protected:Npn \__set_zhfont_fangsong:nn #1#2
+  {\__set_family:nnn {fangsong}{#2}{#1}}
+
+\tl_const:Nn \__option_zhfont:
+  {UprightFont = *,AutoFakeBold = 1.5,ItalicFont = *}
+\cs_new_protected:Npx \__setCJKmainfont:n #1
+  {\__setCJKmainfont:nn {#1}{\__option_zhfont:}}
+\cs_new_protected:Npx \__setCJKsansfont:n #1
+  {\__setCJKsansfont:nn {#1}{\__option_zhfont:}}
+\cs_new_protected:Npx \__setCJKmonofont:n #1
+  {\__setCJKmonofont:nn {#1}{\__option_zhfont:}}
+\cs_new_protected:Npx \__set_zhfont_songti:n #1
+  {\__set_zhfont_songti:nn {#1}{\__option_zhfont:}}
+\cs_new_protected:Npx \__set_zhfont_heiti:n #1
+  {\__set_zhfont_heiti:nn {#1}{\__option_zhfont:}}
+\cs_new_protected:Npx \__set_zhfont_kaishu:n #1
+  {\__set_zhfont_kaishu:nn {#1}{\__option_zhfont:}}
+\cs_new_protected:Npx \__set_zhfont_fangsong:n #1
+  {\__set_zhfont_fangsong:nn {#1}{\__option_zhfont:}}
+  
+\bool_if:NT \l__myfont_bool
+  {
+    \__setmainfont:nn {NotoSerif}
+      {
+        Extension = .ttf,
+        UprightFont = *-Regular,
+        BoldFont = *-Bold,
+        ItalicFont = *-Italic
+      }
+    \__setsansfont:nn {NotoSans}
+      {
+        Extension = .ttf,
+        UprightFont = *-Regular,
+        BoldFont = *-Bold,
+        ItalicFont = *-Italic
+      }
+    \__setmonofont:nn {NotoSansMono}
+      {
+        Extension = .ttf,
+        UprightFont = *-Regular,
+        BoldFont = *-Bold
+      }
+    \__setCJKmainfont:nn {FZShuSong-Z01S}
+      {
+        UprightFont = *,
+        BoldFont = FZHei-B01S,
+        ItalicFont = FZKai-Z03S
+      }
+    \__setCJKsansfont:n {FZHei-B01S}
+    \__setCJKmonofont:n {FZFangSong-Z02S}
+    \__set_zhfont_songti:n {FZShuSong-Z01S}
+    \__set_zhfont_heiti:n {FZHei-B01S}
+    \__set_zhfont_kaishu:n {FZKai-Z03S}
+    \__set_zhfont_fangsong:n {FZFangSong-Z02S}
+    \cs_new_protected:Npn \songti{\__switch_family:n {songti}}
+    \cs_new_protected:Npn \heiti{\__switch_family:n {heiti}}
+    \cs_new_protected:Npn \kaishu{\__switch_family:n {kaishu}}
+    \cs_new_protected:Npn \fangsong{\__switch_family:n {fangsong}}
+  }
+\cs_if_exist:NF \kaishu{\cs_gset_eq:NN \kaishu\normalfont}
+
+\bool_if:NT \l__paper_afour_bool
+  {
+    \geometry
+      {
+        a4paper,
+        columnsep = 2\ccwd,
+        vmargin = 2.54cm,
+        hmargin = 3.17cm,
+        headheight = 2.04cm,
+        headsep = 0.5cm,
+        footskip = 0.79cm,
+        footnotesep = 0.5cm,
+        marginparsep = 8pt,
+        marginparwidth = 2.54cm
+      }
+  }
+\bool_if:NT \l__paper_bfive_bool
+  {
+    \geometry
+      {
+        b5paper,
+        columnsep = 2\ccwd,
+        margin = 2.54cm,
+        headheight = 2.09cm,
+        headsep = 0.45cm,
+        footskip = 0.7cm,
+        footnotesep = 0.45cm,
+        marginparsep = 0.25cm,
+        marginparwidth = 2.25cm
+      }
+  }
+
+\cs_gset:Npn \cleardoublepage
+  {
+    \clearpage
+    \bool_if:NT \l__page_twoside_bool
+      {
+        \int_if_odd:nF \c@page
+          {\hbox:n {}\thispagestyle{empty}\clearpage}
+      }
+  }
+\cs_gset:Npn \frontmatter
+  {
+    \cleardoublepage
+    \@mainmatterfalse
+    \pagenumbering{Roman}
+  }
+\pagestyle{fancy}
+\fancyhf{}
+\bool_if:NTF \l__page_twoside_bool
+  {
+    \cs_gset:Npn \chaptermark#1
+      {
+        \markboth
+          {
+            \MakeUppercase
+              {
+                \ifnum\c@secnumdepth>\m@ne
+                  \if@mainmatter
+                    \ifodd\CTEX@chapter@numbering
+                      \CTEXthechapter\hspace{\ccwd}
+                    \fi
+                  \fi
+                \fi#1
+              }
+          }{
+            \MakeUppercase
+              {
+                \ifnum\c@secnumdepth>\m@ne
+                  \if@mainmatter
+                    \ifodd\CTEX@chapter@numbering
+                      \CTEXthechapter\hspace{\ccwd}
+                    \fi
+                  \fi
+                \fi#1
+              }
+          }
+      }
+    \fancyhead[EC]{\color{ctex@frame}\kaishu\leftmark}
+    \fancyhead[OC]{\color{ctex@frame}\kaishu\rightmark}
+    \fancyhead[EL,OR]{\color{ctex@frame}\thepage}
+    \cs_gset_eq:NN \ps@plain\ps@empty
+  }{
+    \cs_gset:Npn \chaptermark#1
+      {
+        \markboth
+          {
+            \MakeUppercase
+              {
+                \ifnum\c@secnumdepth>\m@ne
+                  \if@mainmatter
+                    \ifodd\CTEX@chapter@numbering
+                      \CTEXthechapter\hspace{\ccwd}
+                    \fi
+                  \fi
+                \fi#1
+              }
+          }{}
+      }
+    \fancyhead[L]{\color{ctex@frame}\kaishu\leftmark}
+    \fancyhead[R]{\color{ctex@frame}\kaishu\rightmark}
+    \fancyfoot[C]{\color{ctex@frame}\thepage}
+    \fancypagestyle{plain}
+      {
+        \fancyhf{}\cs_gset:Npn\headrule{}
+        \fancyfoot[C]{\color{ctex@frame}\thepage}
+      }
+  }
+\cs_gset:Npn \sectionmark#1
+  {
+    \markright
+      {
+        \ifnum\c@secnumdepth>\z@
+          \ifodd\CTEX@section@numbering
+            \CTEXthesection\hspace{0.5\ccwd}
+          \fi
+        \fi#1
+      }
+  }
+\cs_gset:Npn \headrule
+  {
+    \color{ctex@frame}\vspace{2.5pt}
+    \hrule width\textwidth height 0.75pt
+  }
+\bool_if:NT \l__draft_bool
+  {
+    \bool_if:NTF \l__page_twoside_bool
+      {\fancyfoot[C]{\color{gray!60}\sffamily\today}}
+      {\fancyhead[C]{\color{gray!60}\sffamily\today}}
+    \geometry{showframe}
+  }
+
+\titlecontents{part}
+  [0\ccwd]
+  {\addvspace{1pc}\sffamily\large}
+  {}
+  {}
+  {\normalsize\titlerule*{}\bf\contentspage}
+\titlecontents{chapter}
+  [0\ccwd]
+  {\addvspace{1pc}\sffamily\large}
+  {\thecontentslabel\hspace{\ccwd}}
+  {}
+  {\normalsize\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\bf\contentspage}
+\titlecontents{section}
+  [1.5\ccwd]
+  {\addvspace{0.35pc}}
+  {\thecontentslabel\hspace{\ccwd}}
+  {}
+  {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage}
+\titlecontents{subsection}
+  [3.8\ccwd]
+  {\addvspace{0.35pc}}
+  {\thecontentslabel\hspace{\ccwd}}
+  {}
+  {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage}
+\titlecontents{figure}
+  [0\ccwd]
+  {\addvspace{0.2pc}}
+  {\thecontentslabel\hspace{\ccwd}}
+  {}
+  {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage}
+\titlecontents{table}
+  [0\ccwd]
+  {\addvspace{0.2pc}}
+  {\thecontentslabel\hspace{\ccwd}}
+  {}
+  {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage}
+\contentsuse{lstlisting}{lol}
+\titlecontents{lstlisting}
+  [0\ccwd]
+  {\addvspace{0.2pc}}
+  {\thecontentslabel\hspace{\ccwd}}
+  {}
+  {\titlerule*[0.55pc]{\scalebox{1.2}{$\cdot$}}\contentspage}
+
+\cs_gset:Npn \tableofcontents
+  {
+    \if@twocolumn
+      \@restonecoltrue\onecolumn
+      \bool_if:NT \l__multoc_bool{\twocolumn}
+    \else
+      \@restonecolfalse
+      \bool_if:NT \l__multoc_bool{\twocolumn}
+    \fi
+    \chapter*{\contentsname}
+    \bool_if:NTF \l__page_twoside_bool
+      {\markboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}
+      {\markboth{\MakeUppercase\contentsname}{}}
+    \vspace*{-1pc}
+    \@starttoc{toc}
+    \if@restonecol
+      \twocolumn
+    \else
+      \onecolumn
+    \fi
+  }
+\cs_gset:Npn \listoffigures
+  {
+    \if@twocolumn
+      \@restonecoltrue\onecolumn
+      \bool_if:NT \l__multoc_bool{\twocolumn}
+    \else
+      \@restonecolfalse
+      \bool_if:NT \l__multoc_bool{\twocolumn}
+    \fi
+    \chapter*{\phantomsection\listfigurename}
+    \addcontentsline{toc}{chapter}{\listfigurename}
+    \bool_if:NTF \l__page_twoside_bool
+      {\markboth{\MakeUppercase\listfigurename}{\MakeUppercase\listfigurename}}
+      {\markboth{\MakeUppercase\listfigurename}{}}
+    \vspace*{-1pc}
+    \@starttoc{lof}
+    \if@restonecol
+      \twocolumn
+    \else
+      \onecolumn
+    \fi
+  }
+\cs_gset:Npn \listoftables
+  {
+    \if@twocolumn
+      \@restonecoltrue\onecolumn
+      \bool_if:NT \l__multoc_bool{\twocolumn}
+    \else
+      \@restonecolfalse
+      \bool_if:NT \l__multoc_bool{\twocolumn}
+    \fi
+    \chapter*{\phantomsection\listtablename}
+    \addcontentsline{toc}{chapter}{\listtablename}
+    \bool_if:NTF \l__page_twoside_bool
+      {\markboth{\MakeUppercase\listtablename}{\MakeUppercase\listtablename}}
+      {\markboth{\MakeUppercase\listtablename}{}}
+    \vspace*{-1pc}
+    \@starttoc{lot}
+    \if@restonecol
+      \twocolumn
+    \else
+      \onecolumn
+    \fi
+  }
+\cs_new:Npn \listoflistings
+  {
+    \begingroup
+    \@ifundefined{@restonecoltrue}{}
+      {
+        \if@twocolumn
+          \@restonecoltrue\onecolumn
+          \bool_if:NT \l__multoc_bool{\twocolumn}
+        \else
+          \@restonecolfalse
+          \bool_if:NT \l__multoc_bool{\twocolumn}
+        \fi
+      }
+    \chapter*{\phantomsection\lstlistlistingname}
+    \addcontentsline{toc}{chapter}{\lstlistlistingname}
+    \bool_if:NTF \l__page_twoside_bool
+      {\markboth{\MakeUppercase\lstlistlistingname}{\MakeUppercase\lstlistlistingname}}
+      {\markboth{\MakeUppercase\lstlistlistingname}{}}
+    \vspace*{-0.2pc}
+    \@starttoc{lol}
+    \@ifundefined{@restonecoltrue}{}
+      {
+        \if@restonecol
+          \twocolumn
+        \else
+          \onecolumn
+        \fi
+      }
+    \endgroup
+  }
+
+\cs_gset:Npn \bibsection{\chapter{\bibname}}
+\skip_set:Nn \bibsep{0ex}
+\cs_new_protected:Npn \__load_cite_number:
+  {
+    \setcitestyle{square,comma,super}
+    \bibliographystyle{gbt7714-numerical}
+  }
+\cs_new_protected:Nn \__load_cite_authoryear:
+  {\bibliographystyle{gbt7714-author-year}}
+\cs_new_protected:Nn \__load_cite:
+  {\use:c {__load_cite_ \g__keys_cite_tl :}}
+\ctex_at_end_preamble:n {\__load_cite:}
+\makeindex[
+  intoc,
+  options = -M~texindy~-C~utf8,
+  program = truexindy,
+  columns = 2,
+  columnsep = 2\ccwd
+  ]
+\indexsetup
+  {
+    level = \chapter*,
+    toclevel = chapter,
+    firstpagestyle = plain
+  }
+\patchcmd\imki@indexheaders
+  {\@mkboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}}
+  {
+    \bool_if:NTF \l__page_twoside_bool
+      {\markboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}}
+      {\markboth{\MakeUppercase\indexname}{}}
+  }
+  {}{}
+
+\DeclareCaptionLabelSeparator{ccwd}{\hspace{\ccwd}}
+\DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)}
+\captionsetup
+  {
+    format = hang,
+    % figurewithin = section,
+    % tablewithin = section,
+    labelfont = {sf,small,color = ctex@frame},
+    labelsep = ccwd,
+    textfont = {sf,small,stretch = \g__cap_spread_tl},
+    belowskip = 0pt,aboveskip = 10pt
+  }
+\captionsetup[subfigure]
+  {
+    labelfont = {sf,small,color = ctex@frame},
+    labelformat = parens,
+    belowskip = 2pt,aboveskip = 6pt
+  }
+\captionsetup[lstlisting]{singlelinecheck = false}
+\captionsetup[figure][bi-second]{name = Figure}
+\captionsetup[table][bi-second]{name = Table}
+\cs_new:Npn \__arabic:n #1{\int_to_arabic:v {c@#1}}
+\AtBeginDocument
+  {
+    \bool_if:NT \l__capdash_bool
+      {
+        \cs_gset:Npn \thefigure{\thechapter\textendash\__arabic:n {figure}}
+        \cs_gset:Npn \thetable{\thechapter\textendash\__arabic:n {table}}
+        \cs_gset:Npn \thelstlisting{\thechapter\textendash\__arabic:n {lstlisting}}
+      }
+  }
+\AtBeginEnvironment{tabularx}
+  {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces}
+\AtBeginEnvironment{tabular}
+  {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces}
+
+\skip_set:Nn \parskip{0pt plus 2pt minus 1pt}
+\skip_set:Nn \floatsep{12pt plus 2pt minus 2pt}
+\skip_set:Nn \intextsep{14pt plus 2pt minus 2pt}
+\skip_set:Nn \textfloatsep{16pt plus 2pt minus 4pt}
+\skip_set:Nn \dbltextfloatsep{16pt plus 2pt minus 4pt}
+\skip_set:Nn \@fpsep{8pt plus 2.0fil}
+\setcounter{topnumber}{4}
+\setcounter{bottomnumber}{4}
+\setcounter{totalnumber}{8}
+\cs_gset:Npn \textfraction{0.18}
+\cs_gset:Npn \topfraction{0.85}
+\cs_gset:Npn \bottomfraction{0.65}
+\cs_gset:Npn \floatpagefraction{0.60}
+\ctex_after_end_preamble:n
+  {\exp_args:Nx \linespread{\fp_use:N \g__line_spread_fp}\selectfont}
+
+\newcolumntype{L}{X}
+\newcolumntype{C}{>{\centering\arraybackslash}X}
+\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
+\graphicspath{{figures/}}
+\DeclareGraphicsExtensions{.pdf,.png,.jpg,.eps,.tif}
+
+\setlist
+  {
+    labelsep = .75\ccwd,listparindent = 2\ccwd,
+    itemsep = .75ex plus .1ex,parsep = 0ex,topsep = .75ex plus .1ex,partopsep = 0ex
+  }
+\setlist[itemize,1]
+  {label = \color{ctex@emph}\ensuremath{\bullet},leftmargin = *}
+\setlist[itemize,2]
+  {label = \color{ctex@emph}\ensuremath{\circ},leftmargin = *}
+\setlist[enumerate,1]
+  {label = \color{ctex@emph}\arabic*.,ref = \arabic*,leftmargin = *}
+\setlist[enumerate,2]
+  {label = \color{ctex@emph}(\alph*),ref = \theenumi(\alph*),leftmargin = *}
+\setlist[description]
+  {font = \color{ctex@emph}\sf,labelwidth = *,leftmargin = 2\ccwd}
+\newlist{outlinelist}{itemize}{1}
+\setlist[outlinelist]
+  {label = \color{ctex@emph}\upshape\ding{112},itemsep = .5ex plus .1ex,leftmargin = *}
+\skip_set:Nn \pltopsep{.75ex plus .1ex}
+\skip_set:Nn \plpartopsep{0ex}
+\skip_set:Nn \plitemsep{.75ex plus .1ex}
+\skip_set:Nn \plparsep{0ex}
+\cs_new:Npn \circled#1
+  {
+    \lower .7ex
+    \hbox{\tikz\draw(0pt,0pt)circle(.5\ccwd)node{\makebox[\ccwd][c]{\small#1}};}
+  }
+
+\tl_new:N \theoremname
+\tl_new:N \definitioname
+\tl_new:N \lemmaname
+\tl_new:N \corollaryname
+\tl_new:N \propositioname
+\tl_new:N \examplename
+\tl_new:N \remarkname
+\tl_new:N \exercisename
+
+\bool_if:NTF \l__lang_chinese_bool
+  {
+    \tl_set:Nn \theoremname{定理}
+    \tl_set:Nn \definitioname{定义}
+    \tl_set:Nn \lemmaname{引理}
+    \tl_set:Nn \corollaryname{推论}
+    \tl_set:Nn \propositioname{性质}
+    \tl_set:Nn \examplename{例}
+    \tl_set:Nn \remarkname{注}
+    \tl_set:Nn \exercisename{练习}
+  }{        
+    \tl_set:Nn \theoremname{Theorem}
+    \tl_set:Nn \definitioname{Definition}
+    \tl_set:Nn \lemmaname{Lemma}
+    \tl_set:Nn \corollaryname{Corollary}
+    \tl_set:Nn \propositioname{Proposition}
+    \tl_set:Nn \examplename{Example}
+    \tl_set:Nn \remarkname{Remark}
+    \tl_set:Nn \exercisename{Exercise}
+  }
+
+\declaretheoremstyle[
+  spaceabove = .75ex plus .1ex,
+  spacebelow = .75ex plus .1ex,
+  headindent = 0\ccwd,
+  headfont = \color{ctex@emph}\sffamily,
+  notefont = {},
+  notebraces = {}{},
+  bodyfont = \normalfont,
+  headpunct = {.},
+  postheadspace = \ccwd,
+  numberwithin = chapter,
+  headformat = \NAME\space\NUMBER\NOTE
+  ]{mythm}
+\declaretheorem[style = mythm,name = \theoremname]{theorem}
+\declaretheorem[style = mythm,name = \definitioname]{definition}
+\declaretheorem[style = mythm,name = \lemmaname]{lemma}
+\declaretheorem[style = mythm,name = \corollaryname]{corollary}
+\declaretheorem[style = mythm,name = \propositioname]{proposition}
+\declaretheorem[style = mythm,name = \examplename]{example}
+\cs_gset_eq:NN \proof\relax
+\declaretheorem{remark}[
+  style = mythm,
+  name = \faCommentingO\space\remarkname,
+  numbered = no
+  ]
+\declaretheorem{proof}[
+  style = mythm,
+  name = \faPencilSquareO\space\proofname,
+  numbered = no,
+  qed = \qedsymbol
+  ]
+
+\settasks
+  {
+    label = (\Alph*),
+    after-item-skip = 0ex plus .1ex,
+    column-sep = .5\ccwd,
+    item-indent = 2\ccwd,
+    label-width = 1.5\ccwd
+  }
+\setchemformula
+  {
+    math-scripts = false,
+    charge-hshift = 0.25\ccwd,
+    subscript-vshift = -0.2ex
+  }
+\sisetup
+  {
+    detect-family,
+    detect-weight,
+    detect-shape,
+    detect-inline-family = math,
+    detect-inline-weight = math,
+    detect-display-math,
+    unit-math-rm = \mathrm,
+    number-math-rm = \mathrm,
+    table-parse-only,
+    group-digits = false
+  }
+\allowdisplaybreaks[4]
+\cs_gset:Npn \ULthickness{.75pt}
+\SetMathEnvironmentSinglespace{\g__math_spread_tl}
+\skip_set:Nn \jot{4pt plus 1pt minus 1pt}
+\ctex_after_end_preamble:n
+  {
+    \skip_set:Nn \abovedisplayskip{5pt plus 1pt minus 1pt}
+    \skip_set:Nn \belowdisplayskip{5pt plus 1pt minus 1pt}
+    \skip_set:Nn \abovedisplayshortskip{0pt}
+    \skip_set:Nn \belowdisplayshortskip{5pt plus 1pt minus 1pt}
+  }
+\cs_gset:Npn \tagform@#1
+  {\maketag@@@{\color{ctex@emph}(\ignorespaces#1\unskip\@@italiccorr)}}
+
+\tcbset
+  {
+    thmsty/.style =
+      {
+        enhanced~jigsaw,pad~at~break* = 3pt,
+        opacityback = 0,
+        colframe = ctex@emph,
+        left = .2pc,right = .2pc,top = .5pc,bottom = .5pc,middle= .5pc,
+        arc = 0pt
+      },
+    outlinesty/.style =
+      {
+        enhanced,nofloat,
+        tikznode~boxed~title,
+        interior~style = white,colframe = ctex@emph,
+        colbacktitle = white,coltitle = ctex@emph,
+        fonttitle = \large\sffamily,fontupper = \itshape,
+        boxed~title~style = {size = normal,opacityframe = 0,boxrule = 0pt},
+        attach~boxed~title~to~top~center = {yshift = -\tcboxedtitleheight/2},
+        arc = 3pt,
+        after~skip = 3ex,
+        left = 1.5pc,right = 1.5pc,top = 1pc,bottom = 0.5pc,
+        boxsep = 5pt
+      },
+    exsty/.style =
+      {
+        enhanced,on~line,
+        arc = 5pt,
+        fontupper = \sffamily\Large,
+        boxrule = 1pt,boxsep = 0pt,
+        left = 6pt,right = 6pt,top = 3.5pt,bottom = 3.5pt,
+        before~skip = 4ex,after~skip = 2.25ex
+      },
+    breakable,
+    boxrule = .75pt
+  }
+\ctex_at_end_preamble:n
+  {
+    \bool_if:NT \l__thmbox_bool
+      {
+        \tcolorboxenvironment{theorem}{thmsty}
+        \tcolorboxenvironment{definition}{thmsty}
+        \tcolorboxenvironment{lemma}{thmsty}
+        \tcolorboxenvironment{corollary}{thmsty}
+        \tcolorboxenvironment{proposition}{thmsty}
+        \tcolorboxenvironment{example}{thmsty}
+      }
+  }
+\NewDocumentEnvironment{outline}{O{\abstractname}}
+  {
+    \begin{tcolorbox}[outlinesty,title = #1]
+      \begin{outlinelist}
+  }{
+      \end{outlinelist}
+    \end{tcolorbox}
+  }
+\NewDocumentEnvironment{exercise}{sO{black}O{1.}O{\exercisename}}
+  {
+    \IfBooleanF{#1}
+      {
+        \refstepcounter{section}
+        \addcontentsline{toc}{section}{\CTEXthesection\hspace{\ccwd}#4}
+        \markright
+          {
+            \ifnum\c@secnumdepth>\z@
+              \CTEXthesection\hspace{0.5\ccwd}
+            \fi#4
+          }
+      }
+    \begin{center}
+      \bool_if:NTF \l__thmbox_bool
+        {
+          \tcbox[
+            exsty,
+            colback = #2!8!white,colframe = #2!50!black,
+            drop~fuzzy~shadow = #2!50!white,
+            ]{\IfBooleanF{#1}{\CTEXthesection\hspace{0.5\ccwd}}#4}
+        }{
+          \sffamily\Large\IfBooleanF{#1}{\CTEXthesection\hspace{0.5\ccwd}}#4
+        }
+    \end{center}
+    \begin{compactenum}[#3]
+  }{
+    \end{compactenum}
+  }
+\DeclareTColorBox{mybox}{so}
+  {
+    enhanced~jigsaw,pad~at~break* = 3pt,
+    IfBooleanF = {#1}{opacityback = 0,colframe = ctex@emph},
+    coltitle = black,opacitybacktitle = 0,
+    fonttitle = \sffamily,
+    left = .2pc,right = .2pc,top = .5pc,bottom = .5pc,middle= .5pc,
+    arc = 0pt,
+    toptitle = 2pt,bottomtitle = 2pt,
+    beforeafter~skip=2ex,
+    halign~upper = left,halign~lower = left,
+    center~title,
+    IfValueT = {#2}{title = #2}
+  }
+\NewTCBox{\fuzzy}{O{yellow}O{}}
+  {nobeforeafter,tcbox~raise~base,blank,fuzzy~halo = 2pt~with~#1,#2}
+\DeclareTotalTCBox{\concise}{O{Aqua}O{}v}
+  {
+    nobeforeafter,tcbox~raise~base,
+    top = 2pt,bottom = 2.5pt,left = 2pt,right = 2pt,
+    boxsep = 0pt,arc = 1pt,
+    colback = #1!15!white,#2
+  }{#3}
+
+\skip_set:Nn \footnotemargin{0.5\ccwd}
+\skip_set:Nn \footnotesep{0ex}
+\cs_gset:Npn \hangfootparskip{0ex}
+\cs_gset:Npn \footnoterule
+  {
+    \color{ctex@frame}\hrule width 0.35\columnwidth height 0.75pt
+    \vspace*{2.6pt}\color{black}
+  }
+\bool_if:NT \l__lang_chinese_bool
+  {\cs_gset:Npn \hangfootparindent{2\ccwd}}
+\ctex_at_end_preamble:n
+  {
+    \bool_if:NT \l__chap_withpart_bool
+      {\counterwithin*{chapter}{part}}
+    \bool_if:NT \l__foot_perpart_bool
+      {
+        \counterwithout*{footnote}{chapter}
+        \counterwithin*{footnote}{part}
+      }
+    \bool_if:NT \l__foot_perpage_bool
+      {
+        \counterwithout*{footnote}{chapter}
+        \counterwithin*{footnote}{page}
+      }
+  }
+\patchcmd\@footnotetext
+  {\def\baselinestretch{\ZhLS@footlinespread}}
+  {\def\baselinestretch{\g__foot_spread_tl}}
+  {}{}
+\patchcmd\@mpfootnotetext
+  {\def\baselinestretch{\ZhLS@footlinespread}}
+  {\def\baselinestretch{\g__foot_spread_tl}}
+  {}{}
+\patchcmd\@makefnmark
+  {\normalfont}
+  {\normalfont\rmfamily}
+  {}{}
+\cs_gset:Npn \marginfont{\sffamily\footnotesize}
+
+\lstdefinestyle{mystyle}
+  {
+    language = [LaTeX]TeX,
+    texcsstyle = *\lst@ifdisplaystyle\bfseries\color{ctex@emph}\else\color{ctex@verb}\fi,
+    basicstyle = \ttfamily\lst@ifdisplaystyle\small\else\color{ctex@verb}\fi,
+    framexleftmargin = 0pt,
+    framexrightmargin = 0pt,
+    xleftmargin = 0pt,
+    xrightmargin = 0pt,
+    framesep = 3pt,
+    frame = lines,
+    rulecolor = \color{ctex@frame},
+    commentstyle = \color{gray},
+    emphstyle = \color{ctex@emph},
+    emph =
+      {
+        amsmath,align,aligned,chemfig,cleveref,cases,caption,chemformula,compactenum,description,enumitem,enumerate,exercise,easybook,footmisc,hang,itemize,imakeidx,listings,LaTeX,multline,mybox,paralist,Python,siunitx,split,subnumcases,subcaption,tabularx,thmtools,xcolor
+      },
+    keywordstyle = \lst@ifdisplaystyle\bfseries\color{ctex@emph}\else\color{ctex@verb}\fi,
+    morekeywords =
+      {
+        includegraphics,setmainfont,setsansfont,setmonofont,setCJKmainfont,setCJKsansfont,setCJKmonofont,setCJKfamilyfont,RequirePackage
+      }
+  }
+\lstset
+  {
+    style = mystyle,
+    breaklines = true,
+    resetmargins = true,
+    numbers = left,
+    numberstyle = \small,
+    abovecaptionskip = -1ex,
+    belowcaptionskip = 1ex,
+    aboveskip = 1.5ex plus .2ex minus .1ex,
+    belowskip = 0.55ex plus .2ex minus .1ex,
+    keepspaces = true,
+    framerule = 0.75pt,
+    columns = flexible
+  }
+\lstloadlanguages{C,C++,Java,Python,Matlab}
+\AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}}
+
+\cs_new_protected:Npn \__clist_put_hyperref:n #1
+  {\clist_gput_right:Nn \g__hyperref_clist{#1}}
+\cs_new_protected:Npn \__define_linkcolor:nnn #1#2#3
+  {\definecolorset{HTML}{ctex@}{}{link,#1;url,#2;cite,#3}}
+\cs_new:Npn \__set_linkcolor:n #1
+  {
+    linkcolor/\clist_item:nn {#1}{1} .code:n =
+      {
+        \__define_linkcolor:nnn
+          {\clist_item:nn {#1}{2}}
+          {\clist_item:nn {#1}{3}}
+          {\clist_item:nn {#1}{4}}
+        \__clist_put_hyperref:n
+          {
+            linkcolor = ctex@link,linkbordercolor = ctex@link,
+            urlcolor = ctex@url,urlbordercolor = ctex@url,
+            citecolor = ctex@cite,citebordercolor = ctex@cite
+          }
+      },
+  }
+\cs_new:Npn \__allow_urlbreak:
+  {
+    \cs_new:Npn \__add_urlbreak_points:
+      {\tl_map_function:NN \c__urlbreak_points_tl\do}
+    \__appto_cmd:Nn
+      \UrlBreaks{\UrlOrds\__add_urlbreak_points:}
+  }
+\tl_const:Nn \c__urlbreak_points_tl
+  {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789}
+
+\keys_define:nx {ctex/link}
+  {
+    hyperlink         .choice:,
+    hyperlink         .value_required:n = true,
+    hyperlink/edge    .code:n = {},
+    hyperlink/various .code:n = {\__clist_put_hyperref:n {colorlinks}},
+    hyperlink/none    .code:n = {\__clist_put_hyperref:n {hidelinks}},
+    hyperlink         .default:n = edge,
+    hyperlink         .initial:n = edge,
+
+    linkcolor         .choice:,
+    linkcolor         .value_required:n = true,
+    \clist_map_function:nN
+      {
+        {darkgray,  626262,0000B2,005752},
+        {lightblue, 0000ff,004986,eb6877},
+        {crimson,   dc143c,00c1c9,afcd20},
+        {hotpink,   ff69b4,9d5196,57b5e5}
+      }
+      \__set_linkcolor:n,
+    linkcolor         .default:n = darkgray,
+    linkcolor         .initial:n = darkgray,
+
+    linktopage        .choice:,
+    linktopage        .value_required:n = true,
+    linktopage/true   .code:n = {\__clist_put_hyperref:n {linktocpage}},
+    linktopage/false  .code:n = {\__clist_put_hyperref:n {linktocpage = false}},
+    linktopage        .default:n = true,
+    linktopage        .initial:n = false
+  }
+
+\RequirePackage[
+  lang = {chinese-utf8},
+  type = {CC},
+  modifier = {by-nc},
+  version = {4.0}
+  ]{doclicense}
+
+\ctex_at_end_preamble:n
+  {
+    \RequirePackage[pdfstartview = FitH,bookmarksnumbered]{hyperref}
+    \RequirePackage{cleveref}
+    \urlstyle{same}
+    \exp_args:NV \hypersetup\g__hyperref_clist
+    \__allow_urlbreak:
+
+    \bool_if:NTF \l__lang_chinese_bool
+      {
+        \keys_set_known:nn {ctex}
+          {
+            contentsname = {目\hspace{\ccwd}录},
+            indexname = {索\hspace{\ccwd}引},
+            listfigurename = {图片索引},
+            listtablename = {表格索引},
+            abstractname = {摘\hspace{\ccwd}要},
+            lstlistlistingname = {代码索引},
+            lstlistingname = {\faCode 代码}
+          }
+        \crefformat{equation}{#2式（#1）#3}
+        \crefformat{align}{#2式（#1）#3}
+        \crefformat{multline}{#2式（#1）#3}
+        \crefformat{gather}{#2式（#1）#3}
+        \crefformat{figure}{#2图#1#3}
+        \crefformat{table}{#2表#1#3}
+        \crefformat{chapter}{#2第#1章#3}
+        \crefformat{section}{#2节#1#3}
+        \crefformat{subsection}{#2小节#1#3}
+        \crefformat{theorem}{#2定理#1#3}
+        \crefformat{definition}{#2定义#1#3}
+        \crefformat{lemma}{#2引理#1#3}
+        \crefformat{corollary}{#2推论#1#3}
+        \crefformat{proposition}{#2性质#1#3}
+        \crefformat{example}{#2例#1#3}
+      }{
+        \keys_set_known:nn {ctex}
+          {
+            abstractname = {Abstract},
+            lstlistlistingname = {List~of~Listings},
+            lstlistingname = {\faCode\space Code}
+          }
+        \crefformat{equation}{#2Equation~(#1)#3}
+        \crefformat{align}{#2Equation~(#1)#3}
+        \crefformat{multline}{#2Equation~(#1)#3}
+        \crefformat{gather}{#2Equation~(#1)#3}
+        \crefformat{figure}{#2Figure~#1#3}
+        \crefformat{table}{#2Table~#1#3}
+        \crefformat{chapter}{#2Chapter~#1#3}
+        \crefformat{section}{#2Section~#1#3}
+        \crefformat{subsection}{#2Subsection~#1#3}
+        \crefformat{theorem}{#2Theorem~#1#3}
+        \crefformat{definition}{#2Definition~#1#3}
+        \crefformat{lemma}{#2Lemma~#1#3}
+        \crefformat{corollary}{#2Corollary~#1#3}
+        \crefformat{proposition}{#2Proposition~#1#3}
+        \crefformat{example}{#2Example~#1#3}
+      }
+  }
+
+\ctex_set:n
+  {
+    secnumdepth = 3,
+    tocdepth = 1,
+    part =
+      {
+        pagestyle = empty,
+        number =
+          {\bool_if:NTF \l__zhtitle_bool{\chinese{part}}{\thepart}},
+        format = {\color{ctex@frame}\sffamily\Huge},
+        aftername =
+          {\bool_if:NTF \l__newline_bool{\par\nobreak}{\hspace{\ccwd}}},
+        tocline = {\CTEXifname{\CTEXthepart\hspace{\ccwd}}{}#2}
+      },
+    chapter =
+      {
+        % pagestyle = fancy,
+        number =
+          {\bool_if:NTF \l__zhtitle_bool{\chinese{chapter}}{\thechapter}},
+        format =
+          {
+            \color{ctex@frame}\sffamily\LARGE
+            \bool_if:NF \l__newline_bool{\centering}
+          },
+        aftername =
+          {\bool_if:NTF \l__newline_bool{\par\nobreak\vskip 1.5pc}{\hspace{\ccwd}}},
+        beforeskip = -1.5ex,
+        afterskip = 3ex,
+        lotskip = 0.8pc,
+        lofskip = 0.8pc,
+        tocline = {\CTEXifname{\protect\numberline{\CTEXthechapter}}{}#2}
+      },
+    section =
+      {
+        hang = true,
+        format = {\color{ctex@frame}\sffamily\Large},
+        aftername = {\hspace{0.5\ccwd}},
+        beforeskip = 1.5ex plus .2ex minus .1ex,
+        afterskip = 1.5ex plus .2ex minus .1ex,
+        tocline = {\CTEXifname{\protect\numberline{\CTEXthesection}}{}#2}
+      },
+    subsection =
+      {
+        hang = true,
+        format = {\color{ctex@frame}\sffamily\large},
+        aftername = {\hspace{0.5\ccwd}},
+        beforeskip = 1.3ex plus .2ex minus .1ex,
+        afterskip = 1.3ex plus .2ex minus .1ex,
+        tocline = {\CTEXifname{\protect\numberline{\CTEXthesubsection}}{}#2}
+      },
+    subsubsection =
+      {
+        hang = true,
+        format = {\color{ctex@frame}\sffamily},
+        aftername = {\hspace{0.5\ccwd}},
+        beforeskip = \parskip,
+        afterskip = \parskip
+      }
+  }
+
+\bool_if:NF \l__newline_bool
+  {
+    \ctex_set:n
+      {
+        part/hang = true,
+        chapter/hang = true
+      }
+  }
+%%
+%% End of file `easybook.cls'.
\ No newline at end of file
-- 
cgit v1.2.3

