%% *********************************************************** %% Copyright 2024 by Mingyu Hsia * %% * %% This work may be distributed and/or modified under * %% the conditions of the LaTeX Project Public License * %% * %% http://www.latex-project.org/lppl.txt * %% * %% either version 1.3c of this license or any later * %% version. * %% * %% This work has the LPPL maintenance status `maintained'. * %% * %% The Current Maintainer of this work is Mingyu Hsia. * %% * %% This work consists of the files litesolution.cls, * %% and README.md. * %% available at https://github.com/xiamyphys/litsolution * %% *********************************************************** % !Mode:: "TeX:UTF-8" \NeedsTeXFormat{LaTeX2e} \PassOptionsToPackage{svgnames}{xcolor} \ProvidesClass{litesolution}[2024/04/20 v2.1c LiteSolution document class] \RequirePackage{kvoptions} \RequirePackage{etoolbox} \SetupKeyvalOptions{family=LITE, prefix=LITE@, setkeys=\kvsetkeys} \def\ekv#1{\kvsetkeys{LITE}{#1}} \DeclareStringOption[ans]{answer} \DeclareVoidOption{ans}{\ekv{answer=ans}} \DeclareVoidOption{noans}{\ekv{answer=noans}} \DeclareStringOption[newtx]{math} \DeclareVoidOption{newtx}{\ekv{math=newtx}} \DeclareVoidOption{mtpro2}{\ekv{math=mtpro2}} \DeclareStringOption[separate]{counter} \DeclareVoidOption{separate}{\ekv{counter=separate}} \DeclareVoidOption{continuous}{\ekv{counter=continuous}} \DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{book}} \ProcessKeyvalOptions*\relax \LoadClass[letterpaper,11pt,openany]{book} \RequirePackage{setspace,datetime,caption,booktabs,multicol,diagbox,paracol,enumitem} \RequirePackage[notelinecolor=MidnightBlue,notemargin=.75in]{notebeamer} \RequirePackage[nokeyprefix]{refstyle} \newref{fig}{name={\sffamily\bfseries Figure~}} \newref{tab}{name={\sffamily\bfseries Table~}} \geometry{margin=1in} \linespread{1.3} \ddmmyyyydate \captionsetup{labelsep=period,labelfont={bf,sf},font=small} \AtBeginEnvironment{figure}{\vspace*{-1ex}} \AfterEndEnvironment{figure}{\vspace*{-2ex}} \AtBeginEnvironment{paracol}{\nointerlineskip} \AfterEndEnvironment{paracol}{\nointerlineskip} \columnratio{.64} \setlist[enumerate]{itemsep=.5ex} \setlist[itemize]{itemsep=.5ex} \RequirePackage{graphics,graphicx,wallpaper,pagecolor} \graphicspath{{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}} \RequirePackage{ifxetex} \ifXeTeX \RequirePackage[quiet]{xeCJK} \RequirePackage{zhlipsum} \setlength{\parindent}{2em} \fi \ifdefstring{\LITE@math}{mtpro2}{% \RequirePackage{amssymb} \let\Bbbk\relax \RequirePackage[mtpscr,mtpccal,mtpfrak]{mtpro2} \RequirePackage[mono=false]{libertine} }{\relax} \ifdefstring{\LITE@math}{newtx}{% \RequirePackage[libertine,mono=false]{newtx} }{\relax} \let\openbox\relax\def\hmmax{0}\def\bmmax{0} \RequirePackage{amsthm,physics2,bm,fixdif,derivative,cancel,extarrows,siunitx,xfrac,nicematrix} \usephysicsmodule{ab,braket,diagmat,doubleprod,xmat,ab.legacy,op.legacy} \RequirePackage[e]{esvect} \AtBeginDocument{% \def\i{\mathrm i}\def\e{\mathrm e}\def\T{\mathsf T} \let\leq\leqslant\let\geq\geqslant \setlength{\abovedisplayskip}{9pt} \setlength{\belowdisplayskip}{9pt} } \RequirePackage[hidelinks]{hyperref} \RequirePackage{fontawesome5} \AddToHook{cmd/faIcon/before}{% \begingroup\fontsize{\fpeval{\f@size*.8}}{0}\selectfont } \AddToHook{cmd/faIcon/after}{\endgroup} \RequirePackage{circuitikz,pgfplots,fadingimage} \usetikzlibrary{arrows,tikzmark,patterns,calc,fadings,angles,quotes,intersections} \tikzset{>=stealth', every picture/.append style={% line join=round,line cap=round,thick }} \pgfplotsset{compat=1.8} \ctikzset{capacitors/width=.12,capacitors/height=.3} \NewDocumentCommand\length{ O{} m m m m m }{% \node [#1] at ($.5*($#3+#2$)$) {#4}#6 \draw [->|,thick] ($.5*($#3+#2+#5$)$) -- #3#6 \draw [->|,thick] ($.5*($#3+#2-#5$)$) -- #2#6 } \NewDocumentCommand\wall{ m m m }{ \fill [pattern=north east lines] #1 rectangle #2#3 \draw [very thick,line cap=butt] let \p1=#1, \p2=#2 in (\x1,\y1) (\x2,\y2) (\x1,\y1) -- (\x2,\y1)#3 } \RequirePackage{tasks,lipsum,hologo,qrcode} \settasks{label=\sffamily\Alph*.,label-width=1.25em,item-indent=2em,label-offset=.25em} \hologoFontSetup{general=\sffamily} \def\pkg#1{\textcolor{DarkGreen}{\textsf{#1}}} \def\mode#1{\textcolor{Indigo}{\textsf{#1}}} \def\cmd#1{\textcolor{MidnightBlue}{\texttt{\string#1}}} \def\subtitle#1{\gdef\@subtitle{#1}} \def\bioinfo#1{\gdef\@bioinfo{#1}} \NewDocumentCommand\coverhead{ s O{0} m }{ \IfBooleanTF{#1}{ \gdef\s@coverheadrotate{#2} \gdef\s@coverhead{#3}}{ \gdef\@coverheadrotate{#2} \gdef\@coverhead{#3} }} \NewDocumentCommand\cover{ o m }{ \IfValueT{#1}{\gdef\@coverpattern{#1}} \gdef\@cover{#2}} \RenewDocumentCommand\maketitle{O{MidnightBlue}}{ \newgeometry{margin=0in}\newpagecolor{#1!10} \tikz[remember picture,overlay]{ \ifcsname @coverhead\endcsname \node[rotate=\@coverheadrotate] at ($(current page.center)+(0,.35*\paperheight)$) {\includegraphics[width=\paperwidth]{\@coverhead}}; \fi \ifcsname s@coverhead\endcsname \node[scale=2,color=#1!30,rotate=\s@coverheadrotate] at ($(current page.center)+(0,.35*\paperheight)$) {\s@coverhead}; \fi \fill [white,opacity=.5] ($(current page.south west)+(.2*\paperwidth,.6*\paperheight)$) rectangle (current page.south east); \fill [white,opacity=.5] ($(current page.south west)+(.3*\paperwidth,.7*\paperheight)$) rectangle (current page.south east); \ifcsname @cover\endcsname \node [opacity=.5] at ($(current page.south west)+(.65*\paperwidth,.3*\paperheight)$) {\includegraphics[height=.3\paperheight]{\@cover}}; \ifcsname @coverpattern\endcsname \fill [pattern=\@coverpattern,pattern color=#1!10!white!50!white!50] ($(current page.south west)+(.3*\paperwidth,0)$) rectangle ++ (.7*\paperwidth,.6\paperheight); \fi\fi \node [darkgray] at ($(current page.south west)+(.65*\paperwidth,.65*\paperheight)$) {\Huge\bfseries\@title}; \ifcsname @subtitle\endcsname \node [rotate=90,gray,opacity=.6] at ($(current page.south west)+(.25*\paperwidth,.3*\paperheight)$) {\huge\bfseries\@subtitle}; \fi \ifcsname @bioinfo\endcsname \node [gray,opacity=.4] at ($(current page.south)+(.15*\paperwidth,.075*\paperheight)$) {\large\@bioinfo}; \fi}\restoregeometry\restorepagecolor } \def\chapterimage#1{\gdef\@chapterimage{#1}} \def\@makechapterhead#1{% \setcounter{section}{0} \setcounter{problem}{0} \setcounter{page}{1}{\centering \ifcsname @chapterimage\endcsname \@chapterimage \fi\leavevmode\vskip-42\p@ \parindent \z@ \normalfont \interlinepenalty\@M \huge \bfseries #1\par\nobreak \vskip 26\p@}} \def\mailto#1{\href{mailto:#1}{\ttfamily #1}} \def\thesection{\arabic{section}} \def\ans#1{\underline{~#1~}} \AddToHook{cmd/section/before}{\setcounter{problem}{0}} \RequirePackage{fancyhdr} \pagestyle{fancy} \let\oldheadrule\headrule \renewcommand{\headrule}{{\color{gray}\oldheadrule}} \renewcommand{\headrulewidth}{1pt}\cfoot{} \fancyhead[OL]{\textsc{\color{darkgray}\nouppercase\leftmark}} \fancyhead[OR]{\color{darkgray}\sffamily\thepage} \fancyhead[ER]{\textsc{\color{darkgray}\nouppercase\rightmark}} \fancyhead[EL]{\color{darkgray}\sffamily\thepage} \setlength{\headheight}{14pt} \RequirePackage{comment} \ifdefstring{\LITE@answer}{ans}{% \def\ans#1{\underline{~#1~}} \def\s@solute#1{\relax}\def\@solute#1{\relax} \AtBeginDocument{% \excludecomment{draft} \let\enddraft\relax} \def\true{% \addtocounter{task}{1}% \faIcon{check-circle}} }{\relax} \ifdefstring{\LITE@answer}{noans}{% \def\ans#1{\underline{\phantom{#1}}} \def\choiceans#1{\phantom{#1}} \def\s@solute#1{\begin{draft}#1\end{draft}} \def\@solute#1{\begin{draft}\leavevmode\vspace*{#1ex}\end{draft}} \AtBeginDocument{% \excludecomment{solution}\excludecomment{note} \let\endsolution\relax\let\endnote\relax} \def\true{\addtocounter{task}{1}\thetask} }{\relax} \def\solute{\@ifstar\s@solute\@solute} \theoremstyle{definition} \newtheorem{problem}{\scshape\sffamily\color{DarkGreen}\faIcon{pen-square}~\scshape Problem}[chapter] \def\theproblem{\arabic{problem}} \newtheorem*{solution}{\scshape\sffamily\color{MidnightBlue}\faIcon{check-square}~\scshape Solution} \newtheorem*{draft}{\scshape\sffamily\color{MidnightBlue}\faIcon{check-square}~\scshape Solution} \newtheorem*{note}{\scshape\sffamily\color{DarkRed}\faIcon{info-circle}~\scshape Note}