% \iffalse meta-comment
%
% Copyright (C) 2021 by Jinwen XU
% -------------------------------
%
% This file may be distributed and/or modified under the conditions of the LaTeX
% Project Public License, either version 1.3 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.
%
% \fi
%
%<*driver>
\ProvidesFile{colorist.dtx}
%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
%<*lebhart>
\ProvidesClass{lebhart}
[2021/03/11 A colorful article style]
%
%<*lebhartfast>
\ProvidesClass{lebhartfast}
[2021/03/11 A faster but rougher version of lebhart]
%
%<*beaulivre>
\ProvidesClass{beaulivre}
[2021/03/11 A colorful book style]
%
%<*beaulivrefast>
\ProvidesClass{beaulivrefast}
[2021/03/11 A faster but rougher version of beaulivre]
%
%<*lebhart|lebhartfast>
\DeclareOption*{%
\PassOptionsToClass{\CurrentOption}{article}}
\ProcessOptions\relax
\LoadClass{article}
%
%<*beaulivre|beaulivrefast>
\DeclareOption*{%
\PassOptionsToClass{\CurrentOption}{book}}
\ProcessOptions\relax
\LoadClass{book}
%
\RequirePackage{etoolbox}
%%================================
%% Fonts
%%================================
\RequirePackage{anyfontsize}
%% Title fonts
\newcommand{\partfont}{\sffamily}
%\newcommand{\chapfont}{\sffamily}
\newcommand{\secfont}{\sffamily}
\newcommand{\subsecfont}{}
%<*lebhartfast|beaulivrefast>
%% Math fonts
\RequirePackage{mathpazo}
%
%% English fonts
\PassOptionsToPackage{no-math}{fontspec}
\RequirePackage{fontspec}
\IfFontExistsTF{Palatino Linotype}{%
\setmainfont{Palatino Linotype}
}{
\setmainfont{texgyrepagella-regular.otf}[
BoldFont = texgyrepagella-bold.otf ,
ItalicFont = texgyrepagella-italic.otf ,
BoldItalicFont = texgyrepagella-bolditalic.otf ]
}
\setsansfont{SourceSansPro-Regular.otf}[
Scale = MatchLowercase,
BoldFont = SourceSansPro-Bold.otf ,
ItalicFont = SourceSansPro-RegularIt.otf ,
BoldItalicFont = SourceSansPro-BoldIt.otf ]
%% Chinese fonts
\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
\RequirePackage{ctex}
\IfFontExistsTF{FZYouSongS 507R}{%
\setCJKmainfont{FZYouSongS 507R}[
BoldFont = FZYouSongS 509R ,
BoldFeatures = {FakeBold=2} ,
ItalicFont = * ,
BoldItalicFont = FZYouSongS 509R ,
BoldItalicFeatures = {FakeBold=2} ,
SmallCapsFont = * ]
}{
\setCJKmainfont{FandolSong-Regular.otf}[
BoldFont = FandolSong-Bold.otf ,
ItalicFont = FandolKai-Regular.otf ,
BoldItalicFont = FandolKai-Regular.otf ,
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
\IfFontExistsTF{FZFSJW--GB1-0}{%
\setCJKmonofont{FZFSJW--GB1-0}[
BoldFont = * ,
BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
BoldItalicFont = * ,
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmonofont{FandolFang-Regular.otf}[
BoldFont = * ,
BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
BoldItalicFont = * ,
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
\IfFontExistsTF{FZYouHeiS 506L}{%
\setCJKsansfont{FZYouHeiS 506L}[
BoldFont = FZYouHeiS 509R,
ItalicFont = * ,
BoldItalicFont = FZYouHeiS 509R ,
SmallCapsFont = * ]
}{
\setCJKsansfont{FandolHei-Regular.otf}[
BoldFont = FandolHei-Bold.otf ,
ItalicFont = * ,
BoldItalicFont = FandolHei-Bold.otf ,
SmallCapsFont = * ]
}
%<*lebhart|beaulivre>
%% Math fonts
\PassOptionsToPackage
{warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
\RequirePackage{unicode-math}
\unimathsetup{math-style=ISO}
\setmathfont{Asana-Math.otf}
\IfFontExistsTF{Neo Euler}{%
\setmathfont{Neo Euler} % From https://tex.stackexchange.com/a/425887
[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
"0131,
"0237,"02C6-"02C7,"02D8-"02DA,"02DC,
"0300-"030C,"030F,"0311,"0323-"0325,"032E-"0332,"0338,
"0391-"0393,"0395-"03A1,"03A3-"03A8,"03B1-"03BB,
"03BD-"03C1,"03C3-"03C9,"03D1,"03D5-"03D6,"03F5,
"2016,"2018-"2019,"2021,"2026-"202C,"2032-"2037,"2044,
"2057,"20D6-"20D7,"20DB-"20DD,"20E1,"20EE-"20EF,
"210B-"210C,"210E-"2113,"2118,"211B-"211C,"2126-"2128,
"212C-"212D,"2130-"2131,"2133,"2135,"2190-"2199,
"21A4,"21A6,"21A9-"21AA,"21BC-"21CC,"21D0-"21D5,
"2200,"2202-"2209,"220B-"220C,"220F-"2213,"2215-"221E,
"2223,"2225,"2227-"222E,"2234-"2235,"2237-"223D,
"2240-"224C,"2260-"2269,"226E-"2279,"2282-"228B,"228E,
"2291-"2292,"2295-"2299,"22A2-"22A5,"22C0-"22C5,
"22DC-"22DD,"22EF,"22F0-"22F1,
"2308-"230B,"2320-"2321,"2329-"232A,"239B-"23AE,
"23DC-"23DF,
"27E8-"27E9,"27F5-"27FE,"2A0C,"2B1A,
"1D400-"1D433,"1D49C,"1D49E-"1D49F,"1D4A2,"1D4A5-"1D4A6,
"1D4A9-"1D4AC,"1D4AE-"1D4B5,"1D4D0-"1D4E9,"1D504-"1D505,
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7 }]
}{}
%
\RequirePackage{mathtools}
\RequirePackage[verbose=silent]{microtype}
%%================================
%% Page layout
%%================================
\RequirePackage[heightrounded]{geometry}
\geometry{
papersize={7in,10in},
total={40em,60em},
hmarginratio=1:1,
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
\RequirePackage{indentfirst}
\RequirePackage{xcolor}
\definecolor{paper}{RGB}{255,255,255}
\definecolor{skyblue}{RGB}{60,120,234}
\definecolor{steelblue}{RGB}{70,130,180}
\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightorange}{RGB}{255,185,88}
\definecolor{lightskyblue}{RGB}{35,198,255}
\RequirePackage{fancyhdr}
\RequirePackage{extramarks}
\fancypagestyle{fancy}{
\fancyhf{}
\if@twoside
\fancyfoot[RO]{\small\textcolor{black!30!paper}{\lastrightmark}%
~~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
\fancyfoot[LE]{\small\leavevmode\llap{\thepage%
~~\textcolor{gray!55!paper}{$|$}}%
~~\textcolor{black!30!paper}{\lastleftmark}}
\else
\fancyfoot[R]{\small\textcolor{black!30!paper}{\lastrightmark}%
~~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
\fi
\renewcommand{\headrulewidth}{0pt}
}
\pagestyle{fancy}
\fancypagestyle{plain}{
\fancyhf{}
\if@twoside
\fancyfoot[RO]{\small%
~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
\fancyfoot[LE]{\small\leavevmode\llap{\thepage%
~~\textcolor{gray!55!paper}{$|$}}}
\else
\fancyfoot[R]{\small%
~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
\fi
\renewcommand{\headrulewidth}{0pt}
}
%<*lebhart|lebhartfast>
\if@twoside
\renewcommand*{\sectionmark}[1]{\markboth{\uppercase{#1}}{}}
\else
\renewcommand*{\sectionmark}[1]{\markboth{\uppercase{#1}}{\uppercase{#1}}}
\fi
%
%<*beaulivre|beaulivrefast>
\if@twoside
\renewcommand{\chaptermark}[1]{\markboth{\uppercase{#1}}{}}
\else
\renewcommand{\chaptermark}[1]{\markboth{\uppercase{#1}}{\uppercase{#1}}}
\fi
\renewcommand*{\sectionmark}[1]{%
\markright{\raisebox{.03em}{\footnotesize/}%
~\thesection~\raisebox{.03em}{\footnotesize/}~~~#1}}
%
%%================================
%% Line spacing
%%================================
\RequirePackage{setspace}
\linespread{1.07}
% To avoid `Underfull \vbox (badness 10000)`
\raggedbottom
%%================================
%% Title format
%%================================
\RequirePackage[explicit,newparttoc]{titlesec}
\PassOptionsToPackage{normalem}{ulem}
\RequirePackage{ulem}
%<*lebhart|lebhartfast>
%% Part
\titleformat{\part}[display]
{%
\partfont\filleft}
{\MakeUppercase{\partname~\protect\thepart}}
{.3em}
{\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
\titleformat{name=\part,numberless}[display]
{% \phantomsection\addcontentsline{toc}{part}{#1}%
\partfont\filleft}
{\phantom{\MakeUppercase{\partname}}}
{.3em}
{\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
%% Text after part
\newcommand{\parttext}[1]{%
\begin{flushright}%
\begin{minipage}{0.833\textwidth}%
\color{black!80!paper}\raggedleft#1%
\end{minipage}%
\end{flushright}%
}
%
%<*beaulivre|beaulivrefast>
%% Part
\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}[display]
{\partfont\filleft}
{\MakeUppercase{\partname~\protect\thepart}}
{1em}
{\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
\titleformat{name=\part,numberless}[display]
{% \phantomsection\addcontentsline{toc}{part}{#1}%
\partfont\filleft}
{\phantom{\MakeUppercase{\partname}}}
{1em}
{\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
\titlespacing*{\part}{0pt}{5em}{6em}
%% Text after part
\newcommand{\parttext}[1]{%
\vfill%
%
\begin{flushright}%
\begin{minipage}{0.833\textwidth}%
\color{black!80!paper}\raggedleft#1%
\end{minipage}%
\end{flushright}%
%
\vfill\vfill%
\cleardoublepage%
}
%% Chapter
\titleformat{\chapter}
{\thispagestyle{fancy}%
\color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
{\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
\fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
\titleformat{name=\chapter,numberless}
{\thispagestyle{fancy}% \phantomsection\addcontentsline{toc}{chapter}{#1}%
\color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
{\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
\fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
%
%% Section
\titleformat{\section}
{\secfont\color{steelblue}}
{\thesection}{1em}{#1}
[{\titlerule[.75pt]}]
%% Subsection
\titleformat{\subsection}
{\subsecfont}{}{0em}
{\textsf{\thesubsection}~~\textcolor{gray!55!paper}{$|$}~~#1}
\titleformat{name=\subsection,numberless}
{\subsecfont}{}{0em}
{#1}
%%================================
%% TOC format
%%================================
\RequirePackage{titletoc}
\titlecontents{part}
[0em]
{\addvspace{1.5pc}\filcenter\partfont}
{\thecontentslabel\\\uppercase}
{}
{} % without page number
[\addvspace{.5pc}]
%<*lebhart|lebhartfast>
\titlecontents{section}
[2em] % i.e., 0em (part) + 2em
{\secfont}
{\contentslabel{1.75em}}
{\hspace*{-1.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
\titlecontents{subsection}
[5em] % i.e., 2em (section) + 3em
{\subsecfont}
{\contentslabel{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
%
%<*beaulivre|beaulivrefast>
\titlecontents{chapter}
[2em] % i.e., 0em (part) + 2em
{\addvspace{.5pc}\chapfont}
{\contentslabel{2em}}
{\hspace*{-2em}}
{\normalfont\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
\titlecontents{section}
[4em] % i.e., 2em (chapter) + 2em
{\secfont}
{\contentslabel{1.75em}}
{\hspace*{-1.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
\titlecontents{subsection}
[7em] % i.e., 4em (section) + 3em
{\subsecfont}
{\contentslabel{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
%
%%================================
%% Graphics
%%================================
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
\RequirePackage{caption}
%%================================
%% Lists
%%================================
\RequirePackage{enumitem}
\setlist{noitemsep,leftmargin=2em}
\renewcommand\labelitemi{\color{gray!50}$\bullet$}
%%================================
%% Blank page
%%================================
\newcommand{\blinkpagetext}{This page is intentionally left blank}
\renewcommand{\cleardoublepage}{\relax
\clearpage
\if@twoside\ifodd\c@page\relax\else
\thispagestyle{empty}
\newgeometry{centering}
\null\vfill
\centerline{\large\color{gray!20!paper}\blinkpagetext}
\vfill\restoregeometry\newpage\fi\fi}
%%================================
%% Index
%%================================
\RequirePackage{imakeidx}
% switch off the line numbers of index
\pretocmd{\printindex}{}{}{\FAIL}
\apptocmd{\printindex}{}{}{\FAIL}
%%================================
%% Icons
%%================================
\RequirePackage{tikz}
\newcommand{\ideabulb}[2][0.15]{%
\scalebox{#1}{%
\begin{tikzpicture}
\filldraw[draw=#2,fill=#2] (0,0) circle [radius=1cm];
\filldraw[draw=paper,fill=paper,rounded corners=0.8pt]
[rotate=20] (-0.26,-0.66) rectangle (-0.06,-0.6)
[xshift=-0.4mm,yshift=1mm] (-0.26,-0.66) rectangle (0.02,-0.6)
[xshift=0.4mm,yshift=1mm] (-0.26,-0.66) rectangle (-0.06,-0.6);
\draw[draw=paper,line width=0.7mm] (-0.18,-0.46)
.. controls (-0.18,-0.28) and (-0.28,-0.12) ..(-0.4,0.1)
.. controls (-0.55,0.4) and (-0.3,0.64) ..(0,0.64)
.. controls (0.3,0.64) and (0.55,0.4) ..(0.4,0.1)
.. controls (0.28,-0.12) and (0.18,-0.28) ..(0.18,-0.46);
\end{tikzpicture}}}
\newcommand{\questionmark}[2][0.15]{%
\scalebox{#1}{%
\begin{tikzpicture}
\filldraw[draw=#2,fill=#2] (0,0) circle [radius=1cm];
\filldraw[paper,yshift=0.5mm,scale=0.9] (-0.4,0.1) circle [radius=0.77mm];
\draw[draw=paper,line width=1.5mm,yshift=0.5mm,scale=0.9] (-0.4,0.1)
.. controls (-0.55,0.4) and (-0.3,0.64) ..(0,0.64)
.. controls (0.3,0.64) and (0.55,0.4) ..(0.4,0.1)
.. controls (0.28,-0.12) and (0.05,-0.28) ..(0.05,-0.3)
.. controls (0,-0.36) and (0.0,-0.45) ..(0.0,-0.5);
\fill[fill=paper,rounded corners=0.6mm]
(-0.09,-0.75) rectangle (0.09,-0.53);
\end{tikzpicture}}}
%%================================
%% Theorems
%%================================
\RequirePackage{amsthm}
\newtheoremstyle{simple}%
{}{}%
{\normalfont}{}%
{\normalfont}{}%
{0pt}%
{\thmname{\textsc{#1}}\thmnumber{ #2}\hspace{.4em}%
\textcolor{gray!55!paper}{$|$}\hspace{.4em}%
\color{gray}\thmnote{\ensuremath{(\text{#3})}~~}\pushQED{\qed}}
\def\@endtheorem{\popQED\endtrivlist\@endpefalse }
\renewcommand{\qedsymbol}{%
\makebox[1em]{\color{gray!55!paper}\rule[-0.1em]{.95em}{.95em}}}
\newtheoremstyle{basic}
{0pt}{0pt}{\normalfont}{0pt}
{}{\;}{0.25em}
{\thmname{#1}~\thmnumber{\textup{#2}}
\thmnote{\normalfont\sffamily\color{black}~(#3)}}
\newtheoremstyle{emphasis}
{0pt}{0pt}{\itshape}{0pt}{}{}{0pt}
{\thmnote{\normalfont\sffamily\color{black}#3\hspace*{0.25em}}}
%\PassOptionsToPackage{hidelinks,linktoc=all}{hyperref}
\RequirePackage{aliascnt}
% To solve `Difference between bookmark levels is greater than one`
%\RequirePackage{bookmark}
%\RequirePackage{hyperref}
\PassOptionsToPackage{nameinlink}{cleveref}
\RequirePackage{cleveref}
\crefdefaultlabelformat{#2#1#3~\aftergroup\ignorespaces}
\newcommand\englishABBR{EN}
\newcommand\frenchABBR{FR}
\newcommand\chineseABBR{CN}
%% Macro for creating theorems
\RequirePackage{xstring}
\newcommand\PassFirstToSecond[2]{#2{#1}}%
\NewDocumentCommand{\CreateTheorem}{sm}{%
\begingroup
\protected@edef\temp{#2}%
\expandafter\IfEndWith\expandafter{\temp}{*}{%
\expandafter\StrGobbleRight\expandafter{\temp}{1}[\temp]%
\PassFirstToSecond{*}%
}{%
\PassFirstToSecond{}%
}%
{\expandafter\PassFirstToSecond%
\expandafter{\temp}{\endgroup\InnerCreateTheorem{#1}}}%
}%
\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>}{% #1 = star or no star #2 = name of environment #3 = emptiness or star to append to name of environment #4 = numbered like #5 = numbered within
\IfBooleanTF{#1}{%
\IfValueTF{#4}
{\@firstoftwo}
{\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
}{%
\IfValueTF{#4}
{\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
\@secondoftwo}
}%
{%
\GenericError{}%
{\string\CreateTheorem\space syntax error\on@line}{%
You cannot call the starred variant with optional argument,\MessageBreak
nor call the unstarred variant with several optional arguments.}%
{}%
}{%
\IfBooleanTF{#1}{%
\newtheorem*{#2EN#3}{\csname#2nameEN\endcsname}
\newtheorem*{#2FR#3}{\csname#2nameFR\endcsname}
\newtheorem*{#2CN#3}{\csname#2nameCN\endcsname}
}{%
\IfValueTF{#5}{%
\newcounter{#2#3}[{#5}]%
\expandafter\renewcommand\expandafter*%
\csname the#2#3\expandafter\endcsname%
\expandafter{\csname the#5\endcsname.\arabic{#2#3}}%
}{%
\IfValueTF{#4}
{\newaliascnt{#2#3}{#4}}
{\newcounter{#2#3}}%
}%
%-------------------------------------------------------------------
\CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
\CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
\CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
%-------------------------------------------------------------------
}%
\NewDocumentEnvironment{#2#3}{}
{\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
{\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
}%
}%
\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
\newaliascnt{#1#2#3}{#1#3}%
\newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}%
\aliascntresetthe{#1#2#3}%
\crefname{#1#2#3}%
{\csname#1name#2\endcsname}%
{\csname#1name#2\endcsname}%
}%
%% English theorems names
\def\theoremnameEN{\unskip~\sffamily\color{orange}\textsc{Theorem}}
\def\lemmanameEN{\unskip~\sffamily\color{orange}\textsc{Lemma}}
\def\propositionnameEN{\unskip~\sffamily\color{orange}\textsc{Proposition}}
\def\corollarynameEN{\unskip~\sffamily\color{orange}\textsc{Corollary}}
\def\factnameEN{\unskip~\sffamily\color{black}\textsc{Fact}}
\def\conjecturenameEN{\unskip~\sffamily\color{purple}\textsc{Conjecture}}
\def\definitionnameEN{\unskip~\sffamily\color{forestgreen}\textsc{Definition}}
\def\examplenameEN{\unskip~\sffamily\color{black}\textsc{Example}}
\def\problemnameEN{\unskip~\sffamily\color{black}\textsc{Problem}}
\def\remarknameEN{\unskip~\sffamily\color{black}\textsc{Remark}}
%% French theorems names
\def\theoremnameFR{\unskip~\sffamily\color{orange}\textsc{Théorème}}
\def\lemmanameFR{\unskip~\sffamily\color{orange}\textsc{Lemme}}
\def\propositionnameFR{\unskip~\sffamily\color{orange}\textsc{Proposition}}
\def\corollarynameFR{\unskip~\sffamily\color{orange}\textsc{Corollaire}}
\def\factnameFR{\unskip~\sffamily\color{black}\textsc{Fait}}
\def\conjecturenameFR{\unskip~\sffamily\color{purple}\textsc{Conjecture}}
\def\definitionnameFR{\unskip~\sffamily\color{forestgreen}\textsc{Définition}}
\def\examplenameFR{\unskip~\sffamily\color{black}\textsc{Exemple}}
\def\problemnameFR{\unskip~\sffamily\color{black}\textsc{Problème}}
\def\remarknameFR{\unskip~\sffamily\color{black}\textsc{Remarque}}
%% Chinese theorems names
\def\theoremnameCN{\sffamily\color{orange}定理}
\def\lemmanameCN{\sffamily\color{orange}引理}
\def\propositionnameCN{\sffamily\color{orange}命题}
\def\corollarynameCN{\sffamily\color{orange}推论}
\def\factnameCN{\sffamily\color{black}事实}
\def\conjecturenameCN{\sffamily\color{purple}猜想}
\def\definitionnameCN{\sffamily\color{forestgreen}定义}
\def\examplenameCN{\sffamily\color{black}例}
\def\problemnameCN{\sffamily\color{black}问题}
\def\remarknameCN{\sffamily\color{black}备注}
%% Theorem environments
\theoremstyle{basic}
%\CreateTheorem{theorem}
%\CreateTheorem{theorem}
\CreateTheorem{lemma}[theorem]
\CreateTheorem{proposition}[theorem]
\CreateTheorem{corollary}[theorem]
\CreateTheorem{fact}[theorem]
%\CreateTheorem{conjecture}
%\CreateTheorem{conjecture}
\CreateTheorem*{theorem*}
\CreateTheorem*{lemma*}
\CreateTheorem*{proposition*}
\CreateTheorem*{corollary*}
\CreateTheorem*{fact*}
\CreateTheorem*{conjecture*}
\CreateTheorem{definition}[theorem]
%\CreateTheorem{example}
%\CreateTheorem{example}
%\CreateTheorem{problem}
%\CreateTheorem{problem}
\CreateTheorem*{definition*}
\CreateTheorem*{example*}
\CreateTheorem*{problem*}
\theoremstyle{emphasis}
%\CreateTheorem{remark}
%\CreateTheorem{remark}
\CreateTheorem*{remark*}
\RequirePackage{marginnote}
\newcommand{\mparadjust}[1]{\renewcommand*{\marginnotevadjust}{#1}}
\apptocmd{\remark}{\reversemarginpar\mparadjust{-.3em}\marginnote{\ideabulb[0.3]{orange}}\normalmarginpar}{}{\FAIL}
\apptocmd{\conjecture}{\reversemarginpar\mparadjust{-.3em}\marginnote{\questionmark[0.3]{purple}}\normalmarginpar}{}{\FAIL}
\RequirePackage{iftex}
\ifXeTeX
\def\pgfsys@hboxsynced#1{%
{%
\pgfsys@beginscope%
\setbox\pgf@hbox=\hbox{%
\hskip\pgf@pt@x%
\raise\pgf@pt@y\hbox{%
\pgf@pt@x=0pt%
\pgf@pt@y=0pt%
\special{pdf: content q}%
\pgflowlevelsynccm%
\pgfsys@invoke{q -1 0 0 -1 0 0 cm}%
\special{pdf: content -1 0 0 -1 0 0 cm q}
% translate to original coordinate system
\pgfsys@invoke{0 J [] 0 d}% reset line cap and dash
\wd#1=0pt%
\ht#1=0pt%
\dp#1=0pt%
\box#1%
\pgfsys@invoke{n Q Q Q}%
}%
\hss%
}%
\wd\pgf@hbox=0pt%
\ht\pgf@hbox=0pt%
\dp\pgf@hbox=0pt%
\pgfsys@hbox\pgf@hbox%
\pgfsys@endscope%
}}
\fi
\theoremstyle{simple}% as the default style for user-defined environments
\RequirePackage[many]{tcolorbox}
%\tcbstartdraftmode
\tcolorboxenvironment{theorem}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{theorem*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{lemma}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{lemma*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{proposition}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{proposition*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{corollary}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{corollary*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=orange}
\tcolorboxenvironment{fact}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
boxrule=0pt,frame hidden}
\tcolorboxenvironment{fact*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
boxrule=0pt,frame hidden}
\tcolorboxenvironment{conjecture}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=purple}
\tcolorboxenvironment{conjecture*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
colframe=purple}
\tcolorboxenvironment{definition}
{enhanced jigsaw,pad at break*=1mm,breakable,
colback=lightorange!10!paper,boxrule=0pt,frame hidden,
borderline west={1.5mm}{-1mm}{forestgreen}}
\tcolorboxenvironment{definition*}
{enhanced jigsaw,pad at break*=1mm,breakable,
colback=lightorange!10!paper,boxrule=0pt,frame hidden,
borderline west={1.5mm}{-1mm}{forestgreen}}
\tcolorboxenvironment{example}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
boxrule=0pt,frame hidden}
\tcolorboxenvironment{example*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
boxrule=0pt,frame hidden}
\tcolorboxenvironment{problem}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,
boxrule=0pt,frame hidden}
\tcolorboxenvironment{problem*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,
boxrule=0pt,frame hidden}
%%================================
%% Language configuration
%%================================
%<*lebhart|beaulivre>
\PassOptionsToPackage{french,english}{babel}
\RequirePackage{babel}
\frenchsetup{PartNameFull=false}
%
%<*lebhartfast|beaulivrefast>
\RequirePackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage[frenchpart=false]{french}
%
\newcommand{\colorist@langconfig@chinese}{%
\def\abstractname{摘要}%
\def\proofname{证明}%
\def\contentsname{目录}%
\def\listfigurename{插图}%
\def\listtablename{表格}%
\def\figurename{图}%
\def\tablename{表}%
\def\indexname{索引}%
\def\appendixname{附录}%
\def\bibname{参考文献}%
\renewcommand{\languagename}{chinese}%
}
\newcommand{\colorist@langconfig@english}{%
\selectlanguage{english}%
}
\newcommand{\colorist@langconfig@french}{%
\selectlanguage{french}%
% The line below is only needed for 'babel'
% \def\frenchpartname{Partie}%
}
\newcommand{\UseLanguageCORE}[1]{%
\ifstrequal{#1}{chinese}{\colorist@langconfig@chinese}{}%
\ifstrequal{#1}{Chinese}{\colorist@langconfig@chinese}{}%
\ifstrequal{#1}{english}{\colorist@langconfig@english}{}%
\ifstrequal{#1}{English}{\colorist@langconfig@english}{}%
\ifstrequal{#1}{french}{\colorist@langconfig@french}{}
\ifstrequal{#1}{French}{\colorist@langconfig@french}{}
}
\newcommand{\UseLanguage}[1]{%
\ifx\@onlypreamble\@notprerr%
\UseLanguageCORE{#1}%
\else%
\AfterEndPreamble{\UseLanguageCORE{#1}}%
\fi%
}
%%================================
%% Draft mark
%%================================
\def\dnfFont{\ttfamily}
\def\needgraphFont{\ttfamily}
\def\dnfTextEN{To be finished here}
\def\needgraphTextEN{A graph is needed here}
\def\dnfTextFR{À terminer ici}
\def\needgraphTextFR{Il manque encore un graphique ici}
\def\dnfTextCN{这里的内容尚未完成}
\def\needgraphTextCN{这里需要一张图片}
\definecolor{dnfColor}{RGB}{21,122,20}
\definecolor{needgraphColor}{RGB}{70,130,180}
%<*lebhart|beaulivre>
\PassOptionsToPackage{many}{tcolorbox}
\RequirePackage{tcolorbox}
\newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
on line, arc = 1.2pt, outer arc = 1pt,breakable,%
colframe = #1,colupper=#1,opacityback=0,%
boxsep = 1pt,boxrule = 1.2pt,%
left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
}
%
%<*lebhartfast|beaulivrefast>
\newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
\setlength{\fboxsep}{1.5pt}%
\setlength{\fboxrule}{1.2pt}%
\fbox{#2}}}
%
\NewDocumentCommand{\dnf}{d<>}{%
\noindent\plainBox[dnfColor]%
{\normalfont\dnfFont\small%
\csname dnfText\csname\languagename ABBR\endcsname\endcsname%
\IfNoValueF{#1}{ : #1}}%
}
\NewDocumentCommand{\needgraph}{d<>}{%
\par%
\centerline{\plainBox[needgraphColor]%
{\normalfont\needgraphFont\small%
\csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
\IfNoValueF{#1}{ : #1}}}%
\par%
}
%<*lebhart|lebhartfast>
%%================================
%% Title block style
%%================================
\renewcommand{\@maketitle}{%
\noindent%
{\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}}%
\vspace{-\parskip}%
\begin{center}%
{\large\@title}\\\medskip%
\color{black!80!paper}%
{\scshape\@author}\\\smallskip%
{\@date}%
\end{center}%
\vspace{-\parskip}%
\vspace{-.5\baselineskip}%
{\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}\par}%
}
\apptocmd{\maketitle}{\thispagestyle{fancy}}{}{\FAIL}
\apptocmd{\abstract}{\color{black!80!paper}}{}{\FAIL}
%
\endinput