From 1516b5dcbb347d2c41c1322b43b0e2ad35284431 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 11 Jan 2021 22:43:51 +0000 Subject: easybook (11jan21) git-svn-id: svn://tug.org/texlive/trunk@57389 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/easybook/easybook.cls | 268 ++++++++++++++-------- 1 file changed, 171 insertions(+), 97 deletions(-) (limited to 'Master/texmf-dist/tex/latex/easybook') diff --git a/Master/texmf-dist/tex/latex/easybook/easybook.cls b/Master/texmf-dist/tex/latex/easybook/easybook.cls index f413155cbaf..48f079ad663 100644 --- a/Master/texmf-dist/tex/latex/easybook/easybook.cls +++ b/Master/texmf-dist/tex/latex/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 -- cgit v1.2.3