summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/easybook/easybook.cls
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/easybook/easybook.cls')
-rw-r--r--macros/latex/contrib/easybook/easybook.cls268
1 files changed, 171 insertions, 97 deletions
diff --git a/macros/latex/contrib/easybook/easybook.cls b/macros/latex/contrib/easybook/easybook.cls
index f413155cba..48f079ad66 100644
--- a/macros/latex/contrib/easybook/easybook.cls
+++ b/macros/latex/contrib/easybook/easybook.cls
@@ -9,10 +9,12 @@
%% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/01/09}{v1.2}{}
+\ProvidesExplClass{easybook}{2021/01/11}{v1.21}{}
\cs_generate_variant:Nn \keys_define:nn {nx}
\cs_generate_variant:Nn \int_to_arabic:n {v}
+\cs_new_protected:Npn \__put_ctexbook:n #1
+ {\PassOptionsToClass{#1}{ctexbook}}
\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
@@ -27,13 +29,6 @@
\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
-\bool_new:N \l__foot_perpage_bool
-\clist_new:N \g__hyperref_clist
\clist_new:N \g__options_clist
\keys_define:nn {easybook}
@@ -47,36 +42,36 @@
font .choice:,
font/adobe .code:n =
{
- \PassOptionsToClass{fontset = #1}{ctexbook}
+ \__put_ctexbook:n {fontset = #1}
\bool_set_false:N \l__myfont_bool
},
font/founder .code:n =
{
- \PassOptionsToClass{fontset = #1}{ctexbook}
+ \__put_ctexbook:n {fontset = #1}
\bool_set_false:N \l__myfont_bool
},
font/mac .code:n =
{
- \PassOptionsToClass{fontset = #1}{ctexbook}
+ \__put_ctexbook:n {fontset = #1}
\bool_set_false:N \l__myfont_bool
},
font/windows .code:n =
{
- \PassOptionsToClass{fontset = #1}{ctexbook}
+ \__put_ctexbook:n {fontset = #1}
\bool_set_false:N \l__myfont_bool
},
font/linux .code:n =
{
- \PassOptionsToClass{fontset = ubuntu}{ctexbook}
+ \__put_ctexbook:n {fontset = ubuntu}
\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}
+ \__put_ctexbook:n {fontset = #1}
\bool_set_false:N \l__myfont_bool
- },
+ },
font .default:n = windows,
paper .choice:,
@@ -95,7 +90,7 @@
\ProcessKeysOptions{easybook}
-\bool_if:NT \l__myfont_bool{\PassOptionsToClass{fontset = none}{ctexbook}}
+\bool_if:NT \l__myfont_bool{\__put_ctexbook:n {fontset = none}}
\bool_if:NT \l__enstyle_bool
{
\bool_set_false:N \l__lang_chinese_bool
@@ -103,25 +98,35 @@
\bool_set_true:N \l__newline_bool
}
\bool_if:NTF \l__lang_chinese_bool
- {\PassOptionsToClass{scheme = chinese}{ctexbook}}
- {\PassOptionsToClass{scheme = plain}{ctexbook}}
+ {\__put_ctexbook:n {scheme = chinese}}
+ {\__put_ctexbook:n {scheme = plain}}
-\PassOptionsToClass{\g__options_clist}{ctexbook}
+\__put_ctexbook:n {\g__options_clist}
\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
-\tl_new:N \g__tab_font_tl
-\tl_new:N \g__fig_font_tl
-\tl_new:N \g__lst_font_tl
-\tl_new:N \g__foot_font_tl
-\tl_new:N \g__margin_font_tl
+\bool_set_true:N \l__backend_bibtex_bool
+\clist_new:N \l__hyperref_clist
+\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
+\bool_new:N \l__foot_perpage_bool
+\fp_new:N \l__line_spread_fp
+\fp_new:N \l__tab_spread_fp
+\tl_new:N \l__math_spread_tl
+\tl_new:N \l__cap_spread_tl
+\tl_new:N \l__foot_spread_tl
+\tl_new:N \l__tab_font_tl
+\tl_new:N \l__fig_font_tl
+\tl_new:N \l__lst_font_tl
+\tl_new:N \l__foot_font_tl
+\tl_new:N \l__margin_font_tl
+\tl_new:N \l__bib_mysty_tl
+\tl_new:N \l__bib_style_tl
+\tl_new:N \l__bib_citesty_tl
+\tl_new:N \l__bib_file_tl
\tl_new:N \g__config_tl
\ctex_define:n
@@ -130,13 +135,9 @@
link .meta:nn = {ctex/link}{#1},
spread .meta:nn = {ctex/spread}{#1},
elfont .meta:nn = {ctex/elfont}{#1},
+ bibset .meta:nn = {ctex/bibset}{#1},
config .tl_set:N = \g__config_tl,
- 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,
@@ -156,30 +157,54 @@
style/perpage .default:n = true,
style/perpage .initial:n = false,
- spread/linespread .fp_set:N = \g__line_spread_fp,
+ spread/linespread .fp_set:N = \l__line_spread_fp,
spread/linespread .initial:n = 1.3,
- spread/tabspread .fp_set:N = \g__tab_spread_fp,
+ spread/tabspread .fp_set:N = \l__tab_spread_fp,
spread/tabspread .initial:n = 1,
- spread/mathspread .tl_set:N = \g__math_spread_tl,
+ spread/mathspread .tl_set:N = \l__math_spread_tl,
spread/mathspread .initial:n = 1,
- spread/capspread .tl_set:N = \g__cap_spread_tl,
+ spread/capspread .tl_set:N = \l__cap_spread_tl,
spread/capspread .initial:n = 1,
- spread/fnspread .tl_set:N = \g__foot_spread_tl,
+ spread/fnspread .tl_set:N = \l__foot_spread_tl,
spread/fnspread .initial:n = 1,
- elfont/tabfont .tl_set:N = \g__tab_font_tl,
+ elfont/tabfont .tl_set:N = \l__tab_font_tl,
elfont/tabfont .initial:n = \sffamily\small,
- elfont/figfont .tl_set:N = \g__fig_font_tl,
+ elfont/figfont .tl_set:N = \l__fig_font_tl,
elfont/figfont .initial:n = \sffamily\small,
- elfont/lstfont .tl_set:N = \g__lst_font_tl,
+ elfont/lstfont .tl_set:N = \l__lst_font_tl,
elfont/lstfont .initial:n = \sffamily\small,
- elfont/fnfont .tl_set:N = \g__foot_font_tl,
+ elfont/fnfont .tl_set:N = \l__foot_font_tl,
elfont/fnfont .initial:n = \rmfamily,
- elfont/marfont .tl_set:N = \g__margin_font_tl,
+ elfont/marfont .tl_set:N = \l__margin_font_tl,
elfont/marfont .initial:n = \rmfamily\footnotesize,
- lstlistlistingname .tl_set:N = \lstlistlistingname,
- lstlistingname .tl_set:N = \lstlistingname
+ bibset/backend .choice:,
+ bibset/backend/bibtex .code:n = {},
+ bibset/backend/biblatex .code:n =
+ {\bool_set_false:N \l__backend_bibtex_bool},
+ bibset/bibstyle .choice:,
+ bibset/bibstyle .value_required:n = true,
+ bibset/bibstyle/number .code:n =
+ {
+ \tl_set:Nn \l__bib_style_tl{number}
+ \tl_clear:N \l__bib_mysty_tl
+ },
+ bibset/bibstyle/authoryear .code:n =
+ {
+ \tl_set:Nn \l__bib_style_tl{authoryear}
+ \tl_clear:N \l__bib_mysty_tl
+ },
+ bibset/bibstyle/unknown .code:n =
+ {\tl_set_eq:NN \l__bib_mysty_tl\l_keys_value_tl},
+ bibset/bibstyle .initial:n = number,
+ bibset/citestyle .code:n =
+ {\tl_set:Nn \l__bib_citesty_tl{#1}},
+ bibset/bibfile .tl_set:N = \l__bib_file_tl,
+ bibset/bibfile .initial:n = ref/refs.bib,
+
+ lstlistlistingname .tl_set:N = \lstlistlistingname,
+ lstlistingname .tl_set:N = \lstlistingname
}
\RequirePackage[svgnames]{xcolor}
@@ -197,8 +222,9 @@
\RequirePackage{hologo}
\hologoSetup{discretionarybreak = true}
\RequirePackage{rotfloat}
-\RequirePackage{geometry,marginnote,nccfoots,tablefootnote}
-\RequirePackage{fancyhdr,titletoc}
+\RequirePackage{geometry,marginnote,changepage}
+\RequirePackage{nccfoots,tablefootnote}
+\RequirePackage{fancyhdr,fancybox,titletoc}
\RequirePackage{caption,bicaption,subcaption}
\RequirePackage{graphicx,wrapfig}
\RequirePackage{zhlipsum,fontawesome,pifont}
@@ -206,7 +232,6 @@
\RequirePackage{paralist,tasks}
\RequirePackage[shortlabels,inline]{enumitem}
\RequirePackage[most]{tcolorbox}
-\RequirePackage[sort&compress]{gbt7714}
\RequirePackage[xindy]{imakeidx}
\RequirePackage[
lang = {chinese-utf8},
@@ -412,7 +437,7 @@
\fancyfoot[C]{\color{ctex@frame}\thepage}
\fancypagestyle{plain}
{
- \fancyhf{}\cs_gset:Npn \headrule{}
+ \fancyhf{}\cs_set:Npn \headrule{}
\fancyfoot[C]{\color{ctex@frame}\thepage}
}
}
@@ -488,12 +513,22 @@
{\thelstlisting\hspace{\ccwd}\lst@@caption}
}
-\cs_new_protected:Npn \__header_mark:n #1
+\cs_new_protected:Npn \__markboth:n #1
{
- \chapter*{\phantomsection#1}
\bool_if:NTF \l__page_twoside_bool
- {\markboth{\MakeUppercase#1}{\MakeUppercase#1}}
- {\markboth{\MakeUppercase#1}{}}
+ {\markboth{\MakeUppercase#1}{\MakeUppercase#1}}
+ {\markboth{\MakeUppercase#1}{}}
+ }
+\cs_new_protected:Npn \__title_mark_intoc:n #1
+ {
+ \chapter*{\phantomsection#1}
+ \CTEX@addtocline{chapter}{#1}
+ \__markboth:n #1
+ }
+\cs_new_protected:Npn \__title_mark:n #1
+ {
+ \chapter*{\phantomsection#1}
+ \__markboth:n #1
}
\cs_gset:Npn \tableofcontents
{
@@ -504,7 +539,7 @@
\@restonecolfalse
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
- \__header_mark:n {\contentsname}
+ \__title_mark:n {\contentsname}
\vspace*{-1pc}
\@starttoc{toc}
\if@restonecol
@@ -522,8 +557,7 @@
\@restonecolfalse
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
- \__header_mark:n {\listfigurename}
- \CTEX@addtocline{chapter}{\listfigurename}
+ \__title_mark_intoc:n {\listfigurename}
\vspace*{-1pc}
\@starttoc{lof}
\if@restonecol
@@ -541,8 +575,7 @@
\@restonecolfalse
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
- \__header_mark:n {\listtablename}
- \CTEX@addtocline{chapter}{\listtablename}
+ \__title_mark_intoc:n {\listtablename}
\vspace*{-1pc}
\@starttoc{lot}
\if@restonecol
@@ -564,8 +597,7 @@
\bool_if:NT \l__multoc_bool{\twocolumn}
\fi
}
- \__header_mark:n {\lstlistlistingname}
- \CTEX@addtocline{chapter}{\lstlistlistingname}
+ \__title_mark_intoc:n {\lstlistlistingname}
\vspace*{-0.2pc}
\@starttoc{lol}
\@ifundefined{@restonecoltrue}{}
@@ -579,18 +611,6 @@
\group_end:
}
-\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,
@@ -606,17 +626,13 @@
}
\__patch_cmd:Nnn \imki@indexheaders
{\@mkboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}}
- {
- \bool_if:NTF \l__page_twoside_bool
- {\markboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}}
- {\markboth{\MakeUppercase\indexname}{}}
- }
+ {\__markboth:n \indexname}
\DeclareCaptionLabelSeparator{ccwd}{\hspace{\ccwd}}
\DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)}
-\DeclareCaptionFont{tabfont}{\g__tab_font_tl}
-\DeclareCaptionFont{figfont}{\g__fig_font_tl}
-\DeclareCaptionFont{lstfont}{\g__lst_font_tl}
+\DeclareCaptionFont{tabfont}{\l__tab_font_tl}
+\DeclareCaptionFont{figfont}{\l__fig_font_tl}
+\DeclareCaptionFont{lstfont}{\l__lst_font_tl}
\captionsetup
{
format = hang,
@@ -628,12 +644,12 @@
\captionsetup[table]
{
labelfont = {tabfont,color = ctex@frame},
- textfont = {tabfont,stretch = \g__cap_spread_tl}
+ textfont = {tabfont,stretch = \l__cap_spread_tl}
}
\captionsetup[figure]
{
labelfont = {figfont,color = ctex@frame},
- textfont = {figfont,stretch = \g__cap_spread_tl}
+ textfont = {figfont,stretch = \l__cap_spread_tl}
}
\captionsetup[subfigure]
{
@@ -644,7 +660,7 @@
{
singlelinecheck = false,
labelfont = {lstfont,color = ctex@frame},
- textfont = {lstfont,stretch = \g__cap_spread_tl}
+ textfont = {lstfont,stretch = \l__cap_spread_tl}
}
\captionsetup[figure][bi-second]{name = Figure}
\captionsetup[table][bi-second]{name = Table}
@@ -659,9 +675,9 @@
}
}
\AtBeginEnvironment{tabularx}
- {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces}
+ {\exp_args:Nx \linespread{\fp_use:N \l__tab_spread_fp}\selectfont\ignorespaces}
\AtBeginEnvironment{tabular}
- {\exp_args:Nx \linespread{\fp_use:N \g__tab_spread_fp}\selectfont\ignorespaces}
+ {\exp_args:Nx \linespread{\fp_use:N \l__tab_spread_fp}\selectfont\ignorespaces}
\skip_set:Nn \parskip{0pt plus 2pt minus 1pt}
\skip_set:Nn \floatsep{12pt plus 2pt minus 2pt}
@@ -677,7 +693,7 @@
\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}
+ {\exp_args:Nx \linespread{\fp_use:N \l__line_spread_fp}\selectfont}
\newcolumntype{L}{X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
@@ -803,7 +819,7 @@
}
\allowdisplaybreaks[4]
\cs_gset:Npn \ULthickness{.75pt}
-\SetMathEnvironmentSinglespace{\g__math_spread_tl}
+\SetMathEnvironmentSinglespace{\l__math_spread_tl}
\skip_set:Nn \jot{4pt plus 1pt minus 1pt}
\ctex_after_end_preamble:n
{
@@ -924,6 +940,64 @@
colback = #1!15!white,#2
}{#3}
+\cs_new_protected:Npn \__bibtex_set:
+ {
+ \tl_if_empty:NTF \l__bib_mysty_tl
+ {
+ \tl_if_eq:VnTF \l__bib_style_tl{numerber}
+ {
+ \bibliographystyle{gbt7714-numerical}
+ }{
+ \tl_if_eq:VnT \l__bib_style_tl{authoryear}
+ {\bibliographystyle{gbt7714-author-year}}
+ \cs_set_eq:NN \cite\citep
+ }
+ }{
+ \exp_args:NV \bibliographystyle\l__bib_mysty_tl
+ }
+ \cs_set:Npn \bibsection{\__title_mark_intoc:n \bibname}
+ \skip_set:Nn \bibsep{0ex}
+ \NewDocumentCommand\printbibliography{o}
+ {\exp_args:NV \bibliography\l__bib_file_tl}
+ }
+\cs_new_protected:Npn \__put_biblatex:n #1
+ {\PassOptionsToPackage{#1}{biblatex}}
+\cs_new_protected:Npn \__biblatex_pre_set:
+ {
+ \tl_if_empty:NTF \l__bib_mysty_tl
+ {
+ \tl_if_eq:VnTF \l__bib_style_tl{number}
+ {
+ \__put_biblatex:n {style = gb7714-2015}
+ }{
+ \tl_if_eq:VnT \l__bib_style_tl{authoryear}
+ {\__put_biblatex:n {style = gb7714-2015ay}}
+ }
+ }{
+ \__put_biblatex:n {style = \l__bib_mysty_tl}
+ }
+ \tl_if_empty:NF \l__bib_citesty_tl
+ {\__put_biblatex:n {citestyle = \l__bib_mysty_tl}}
+ \__put_biblatex:n {backend = biber}
+ }
+\cs_new_protected:Npn \__biblatex_after_set:
+ {
+ \exp_args:NV \addbibresource\l__bib_file_tl
+ \defbibheading{bibliography}[\bibname]{\__title_mark_intoc:n {##1}}
+ }
+\ctex_at_end_preamble:n
+ {
+ \bool_if:NTF \l__backend_bibtex_bool
+ {
+ \RequirePackage[sort&compress]{gbt7714}
+ \__bibtex_set:
+ }{
+ \__biblatex_pre_set:
+ \RequirePackage{biblatex}
+ \__biblatex_after_set:
+ }
+ }
+
\skip_set:Nn \footnotemargin{0.5\ccwd}
\skip_set:Nn \footnotesep{0ex}
\cs_gset:Npn \hangfootparskip{0ex}
@@ -951,13 +1025,13 @@
}
\__patch_cmd:Nnn \@footnotetext
{\def\baselinestretch{\ZhLS@footlinespread}\reset@font}
- {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl}
+ {\def\baselinestretch{\l__foot_spread_tl}\l__foot_font_tl}
\__patch_cmd:Nnn \@mpfootnotetext
{\def\baselinestretch{\ZhLS@footlinespread}\reset@font}
- {\def\baselinestretch{\g__foot_spread_tl}\g__foot_font_tl}
+ {\def\baselinestretch{\l__foot_spread_tl}\l__foot_font_tl}
\__patch_cmd:Nnn \@makefnmark
- {\normalfont}{\g__foot_font_tl}
-\cs_gset:Npn \marginfont{\g__margin_font_tl}
+ {\normalfont}{\l__foot_font_tl}
+\cs_gset:Npn \marginfont{\l__margin_font_tl}
\lstdefinestyle{mystyle}
{
@@ -975,7 +1049,7 @@
emphstyle = \color{ctex@emph},
emph =
{
- caption,config,easybook,elfont,linktopage,subcaption,tabularx,thmtools
+ bibset,bibtex,biber,caption,config,easybook,elfont,linktopage,subcaption,tabularx,thmtools
},
keywordstyle = \lst@ifdisplaystyle\bfseries\color{ctex@emph}\else\color{ctex@verb}\fi,
morekeywords =
@@ -1002,7 +1076,7 @@
\AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}}
\cs_new_protected:Npn \__clist_put_hyperref:n #1
- {\clist_gput_right:Nn \g__hyperref_clist{#1}}
+ {\clist_put_right:Nn \l__hyperref_clist{#1}}
\cs_new_protected:Npn \__define_linkcolor:nnn #1#2#3
{\definecolorset{HTML}{ctex@}{}{link,#1;url,#2;cite,#3}}
\cs_new_protected:Npn \__define_themecolor:nnn #1#2#3
@@ -1091,7 +1165,7 @@
\RequirePackage[pdfstartview = FitH,bookmarksnumbered]{hyperref}
\RequirePackage{cleveref}
\urlstyle{same}
- \exp_args:NV \hypersetup\g__hyperref_clist
+ \exp_args:NV \hypersetup\l__hyperref_clist
\__allow_urlbreak:
\bool_if:NTF \l__lang_chinese_bool