\NeedsTeXFormat{LaTeX2e} \ProvidesPackage{leelavati_defs}[2025/12/08 v1.0 Leelavati Shared Definitions] % ------------------------------- % 1. Requirements for Definitions % ------------------------------- % Packages needed by commands defined *within* this file. \RequirePackage{booktabs} \RequirePackage{amsthm, amssymb} \RequirePackage{array} \RequirePackage{ucharclasses} \RequirePackage{tikz} \RequirePackage{tkz-euclide} \RequirePackage{microtype} \usetikzlibrary{calc,patterns,intersections,through, decorations, decorations.fractals, arrows.meta} \RequirePackage[dvipsnames,svgnames,table]{xcolor} \RequirePackage[nodisplayskipstretch]{setspace} %nodisplayskipstretch keeps space above and below math equations constant, without stretch \RequirePackage{tcolorbox} \tcbuselibrary{breakable,skins} \RequirePackage{fontawesome5} \RequirePackage{needspace} \RequirePackage{polyglossia} % For language setup commands \RequirePackage{fontspec} % For font commands \RequirePackage{mathtools} \RequirePackage{unicode-math} \RequirePackage{graphicx} \RequirePackage{subcaption} \RequirePackage{float} \RequirePackage{microtype} \setlength{\emergencystretch}{2em} \RequirePackage{wrapfig} \RequirePackage{caption} \RequirePackage{scrlayer-scrpage} \RequirePackage{chessboard} \RequirePackage{xskak} \RequirePackage[normalem]{ulem} \RequirePackage{bm} \RequirePackage{tfrupee} % ------------------------------- % 2. Colors and Constants % ------------------------------- %\definecolor{magHighlight}{HTML}{00AEEF} % Duotone CYAN %\definecolor{magHighlight}{HTML}{FF00FF} % Duotone MAGENTA \definecolor{magHighlight}{HTML}{005F99} % Duotone format ready \definecolor{indigo}{RGB}{0,0,120} \newcommand{\sbseries}{\fontseries{sb}\selectfont} \newcommand{\mbseries}{\fontseries{mb}\selectfont} \DeclareTextFontCommand{\textsb}{\sbseries} \DeclareTextFontCommand{\textmb}{\mbseries} % ------------------------------- % 3. Languages and Fonts % ------------------------------- \setmainlanguage{english} \setotherlanguage[numerals=odia,changecounternumbering=true]{odia} \newcommand*\LeelaFontPath{../Fonts/NotoSans/} \newcommand*\LeelaHeaderFontPath{../Fonts/Anek/} \newcommand*\DejavuFontsPath{../Fonts/dejavu-sans-mono/} \newcommand*\LibreFontsPath{../Fonts/Libre/} \newcommand*\FontsPath{../Fonts/} %change math env to noto sans as well \setmathfont[Path=\LeelaFontPath,Extension=.otf]{NotoSansMath-Regular} \setmonofont[Path=\DejavuFontsPath,Extension=.ttf,UprightFont=*,BoldFont=*-Bold,ItalicFont=*-Oblique,BoldItalicFont=*-BoldOblique]{DejaVuSansMono} \setmainfont[Path=\LeelaFontPath, Extension=.ttf,UprightFont=*-Regular, BoldFont=*-Bold,ItalicFont=*-Italic, BoldItalicFont=*-BoldItalic,FontFace={mb}{n}{Font={*-Medium}},FontFace={sb}{n}{*-SemiBold}]{NotoSans} \newfontfamily\englishfont[Path=\LeelaFontPath, Extension=.ttf,UprightFont=*-Regular, BoldFont=*-Bold,ItalicFont=*-Italic, BoldItalicFont=*-BoldItalic,FontFace={mb}{n}{Font={*-Medium}}, FontFace={sb}{n}{*-SemiBold}]{NotoSans} \newfontfamily\dispatchfont[Path=\LibreFontsPath,Extension=.ttf,UprightFont=*-Regular, BoldFont=*-Bold,ItalicFont=*-Italic, BoldItalicFont=*-BoldItalic,FontFace={mb}{n}{Font={*-Medium}}]{LibreBaskerville} \newfontfamily\symbolafont[Path=\FontsPath, Extension=.ttf]{Symbola} %add FakeSlant=0.12 later to imitate italics \newfontfamily\odiafont[Path=\LeelaFontPath, Extension=.ttf, Script=Odia, Mapping=odianumerals,UprightFont=*-Regular, BoldFont=*-Bold,ItalicFont=*-Regular, BoldItalicFont=*-Bold,FontFace={mb}{n}{Font={*-Medium}}, FontFace={sb}{n}{*-SemiBold}]{NotoSansOriya} \newfontfamily\odiafontsf[Path=\LeelaFontPath, Extension=.ttf, Script=Odia, UprightFont=*-Regular, BoldFont=*-Bold,ItalicFont=*-Regular, BoldItalicFont=*-Bold, FontFace={mb}{n}{Font={*-Medium}}, FontFace={sb}{n}{*-SemiBold}]{NotoSansOriya} \newfontfamily\odiafonttt[Path=\LeelaFontPath, Extension=.ttf, Script=Odia,UprightFont=*-Regular, BoldFont=*-Bold,ItalicFont=*-Regular, BoldItalicFont=*-Bold, FontFace={mb}{n}{Font={*-Medium}}, FontFace={sb}{n}{*-SemiBold}]{NotoSansOriya} \newfontfamily\anekfont[Path=\LeelaHeaderFontPath, Extension=.ttf, Script=Odia, Mapping=odianumerals,UprightFont=*-Regular, BoldFont=*-Bold, FontFace={mb}{n}{Font={*-Medium}}, FontFace={sb}{n}{*-SemiBold}]{AnekOdia} % Convenience & Auto Switching \DeclareRobustCommand{\textodia}[1]{{\odiafont #1}} \newcommand{\textodialang}[1]{\bgroup\selectlanguage{odia}#1\egroup} \setDefaultTransitions{\englishfont}{} \setTransitionsFor{Oriya}{\odiafont}{\englishfont} % ------------------------------- % 4. Sectioning & Heading Fonts (KOMA-native) % ------------------------------- \setkomafont{chapter}{\XeTeXinterchartokenstate=0\anekfont\color{magHighlight}\large\sbseries\selectfont} % For Sections \setkomafont{section}{% \XeTeXinterchartokenstate=0% \anekfont% \color{magHighlight}% \normalsize% \fontseries{sb}\selectfont% <-- Use the series switch directly } \RedeclareSectionCommand[beforeskip=.1\baselineskip,afterskip=.1\baselineskip]{section} \RedeclareSectionCommand[beforeskip=.1\baselineskip,afterskip=.1\baselineskip]{subsection} \RedeclareSectionCommand[beforeskip=.1\baselineskip,afterskip=0.0\baselineskip]{subsubsection} \newcommand{\en}[1]{{\englishfont #1}} \newcommand{\od}[1]{{\odiafont #1}} % ------------------------------- % 5. Spacing & Typographic Robustness % ------------------------------- \setlength{\parskip}{0.4em} \setlength{\parindent}{0pt} \RequirePackage{etoolbox} % Column separation must stay here \setlength{\columnsep}{6mm} \makeatletter \newtoks\leela@everydisplay \leela@everydisplay=\everydisplay \everydisplay{% \the\leela@everydisplay \setlength{\parskip}{0pt}% \setlength{\baselineskip}{\normalbaselineskip}% \abovedisplayskip=3pt plus 2pt minus 2pt \belowdisplayskip=3pt plus 2pt minus 2pt \abovedisplayshortskip=1pt plus 1pt minus 1pt \belowdisplayshortskip=1pt plus 1pt minus 1pt } \makeatother \AtBeginDocument{% % Permissive settings for non-hyphenating Odia text \pretolerance=2000 \tolerance=6000 \emergencystretch=2em \hyphenpenalty=200 \exhyphenpenalty=100 \widowpenalty=10000 \clubpenalty=10000 \righthyphenmin=2 \hfuzz=0.5pt \vfuzz=5pt \hbadness=10000 \vbadness=10000 \lineskiplimit=-2pt \lineskip=0pt%0.6ex \XeTeXuseglyphmetrics=1\relax % float hygiene (2-col) \setcounter{topnumber}{2} \setcounter{totalnumber}{3} \renewcommand{\topfraction}{0.9} \renewcommand{\textfraction}{0.07} \renewcommand{\floatpagefraction}{0.8} \setcounter{dbltopnumber}{2} \renewcommand{\dbltopfraction}{0.9} \renewcommand{\dblfloatpagefraction}{0.8} } % ------------------------------- % 6. Localized Numerals in counters (Relies on polyglossia) % ------------------------------- \makeatletter \renewcommand{\thepage}{\localnumeral*{page}} \renewcommand{\thesection}{\localnumeral*{section}} \renewcommand{\thesubsection}{\thesection.\localnumeral*{subsection}} \renewcommand{\thesubsubsection}{\thesubsection.\localnumeral*{subsubsection}} \renewcommand{\thefigure}{\localnumeral*{figure}} \renewcommand{\thetable}{\localnumeral*{table}} \renewcommand{\theequation}{\localnumeral*{equation}} \renewcommand{\theenumi}{\localnumeral*{enumi}} \renewcommand{\theenumii}{\localnumeral*{enumii}} \renewcommand{\theenumiii}{\localnumeral*{enumiii}} \renewcommand{\theenumiv}{\localnumeral*{enumiv}} \renewcommand{\thefootnote}{\localnumeral*{footnote}} \makeatother % ------------------------------- % 7. Tcolorbox and Caption Styles % ------------------------------- \tcbset{ leela/.style={ enhanced, breakable, boxrule=0.8pt, arc=1mm, colback=white, colframe=black!20, % Title Styling for default (Non-Accent) colbacktitle=white, % Background of the title bar coltitle=black, % Color of the title text fonttitle={\XeTeXinterchartokenstate=0\anekfont\large\sbseries}, % Removed \color{white} left=3pt, right=3pt, top=5pt, bottom=5pt, center title, before skip=8pt, after skip=8pt }, leelaAccent/.style={ colback=magHighlight!10, colframe=magHighlight, % Override title colors for the Accent version colbacktitle=magHighlight, coltitle=white, center title, before skip=8pt, after skip=8pt } } \newtcolorbox{leelabox}[1][]{leela,#1} \newtcolorbox{leelaauthor}[1][]{leela,colback=black!3,colframe=black!25,#1} \DeclareCaptionFont{leelaMB}{\sbseries} \DeclareCaptionFont{leelaHL}{\color{magHighlight}} \DeclareCaptionFont{leelaSmall}{\small} \captionsetup{font=small,labelfont = {leelaHL,leelaMB}, labelsep=colon, textfont = leelaSmall, position = bottom,labelsep = colon,aboveskip = 6pt,belowskip = 0pt} % ------------------------------- % 8. Footer Definition % ------------------------------- \newcommand{\JournalName}{Leelavati $\;\;\bullet\;\;$ ଲୀଳାବତୀ} \newsavebox{\leelaFooterBox} \tikzset{ konark/.style ={draw=black!100, fill=black!60}, footerwave/.style={draw=black!100, line width=1pt, smooth}, footerline/.style={draw=black!100, line width=1pt, smooth} } \AtBeginDocument{% \sbox{\leelaFooterBox}{% \begin{tikzpicture}[x=1pt,y=1pt,baseline=0] \pgfmathsetlengthmacro{\HalfTW}{0.5*\textwidth} \def\Yline{0} \useasboundingbox (-\HalfTW,-5) rectangle (\HalfTW,5); \begin{scope}[xshift=-12] \draw[konark, even odd rule] (0,0) circle (10) (0,0) circle (8); \draw[konark] (0,0) circle (3); \foreach \x in {0,...,7}{ \draw[konark] (22.5+45*\x:10) circle (1); \draw[konark, rotate=45*\x] (0,0)--(3:10)--(10,0)--(-3:10)--cycle; } \end{scope} \begin{scope}[xshift=12] \draw[konark, even odd rule] (0,0) circle (10) (0,0) circle (8); \draw[konark] (0,0) circle (3); \foreach \x in {0,...,7}{ \draw[konark] (22.5+45*\x:10) circle (1); \draw[konark, rotate=45*\x] (0,0)--(3:10)--(10,0)--(-3:10)--cycle; } \end{scope} \draw[footerwave,domain=-60:0,variable=\t,samples=60] plot({\t-25},{ 10*exp(\t/30)*sin(-15*(\t))}); \draw[footerwave,domain=0:60,variable=\t,samples=60] plot({\t+25},{ 10*exp(-\t/30)*sin( 15*(\t))}); \draw[footerline] (-\HalfTW,\Yline) -- (-85,\Yline); \draw[footerline] (\HalfTW,\Yline) -- (85,\Yline); \end{tikzpicture}% }% } \newcommand{\footerlogo}{\raisebox{4mm}[0pt][0pt]{\usebox{\leelaFooterBox}}} \clearpairofpagestyles \setkomafont{pagefoot}{\normalfont\sffamily\upshape} \newcommand{\footerfont}{\fontsize{8}{10}\selectfont} \cfoot*{\footerlogo} \ifoot*{\footerfont\textsf{\textbf{\JournalName}}} \ofoot*{\footerfont\bfseries \pagemark} \makeatletter \pretocmd{\@maketitle}{\vspace*{1cm}}{}{} \makeatother \pagestyle{scrheadings} \KOMAoptions{headsepline=false,footsepline=false} % ------------------------------- % 9. Author and Content Helpers % ------------------------------- \DeclareRobustCommand{\AuthorDual}[2]{% \par % Ensure we are in a new paragraph \noindent % Create a box spanning the full line width to center its contents \makebox[\textwidth][c]{% \kern -1mm % 1. LEFT NAME: Put in a zero-width box aligned to the Right (r). % This pushes the text to the LEFT of the center point. \makebox[0pt][r]{% % Use a parbox to allow wrapping if the name is long \parbox{0.45\linewidth}{\raggedleft\odiafont\color{magHighlight}\bfseries #1}% \hspace{4mm}% The gap between Left Name and Bullet }% % % 2. THE BULLET: Sits exactly at the center \makebox[0pt][c]{ \raisebox{-0.2ex}{\textperiodcentered}% } % % 3. RIGHT NAME: Put in a zero-width box aligned to the Left (l). % This pushes the text to the RIGHT of the center point. \makebox[0pt][l]{% \hspace{4mm}% The gap between Bullet and Right Name % Use a parbox to allow wrapping if the name is long \parbox{0.45\linewidth}{\raggedright\englishfont\color{magHighlight}\bfseries #2}% }% }% } % Author Note Environment \makeatletter \newcommand{\AuthorNote}[1]{% \par\medskip % Ensure it starts on a new line with some spacing \Needspace{6\baselineskip} % Prevents the box from being cut off at the bottom \begin{tcolorbox}[ enhanced, boxrule=0.5pt, arc=2mm, colback=white, colframe=black, left=6pt, right=6pt, top=4pt, bottom=4pt, breakable=true, % Allows it to break across columns if very long width=\linewidth % Forces the box to match the current column width ] \noindent\footnotesize #1 \end{tcolorbox} \par\medskip } \makeatother % Hook for Odia \gappto\captionsodia{% \def\abstractname{Abstract}% } % Hook for English \gappto\captionsenglish{% \def\abstractname{ସାରାଂଶ}% } \newenvironment{abstract}{% \par\small\vspace{0pt} {\noindent\color{magHighlight}\rule[\ht\strutbox]{\linewidth}{1.0pt}\par\vspace{-.4cm}} \noindent\textbf{\color{magHighlight}\abstractname. }\ignorespaces }{\par\vspace{-0.35cm} {\noindent\color{magHighlight}\rule{\linewidth}{1.0pt}\par}} \newcommand{\sectionheader}[2]{% \par\addvspace{1em} % Adds space above the section {\color{magHighlight}\hrule height 1.0pt} \vspace{2pt} \noindent \textbf{\color{magHighlight}% #1 \hfill #2% } \par\vspace{2pt} {\color{magHighlight}\hrule height 1.0pt} \addvspace{0.5em} % Space below the section } \newcommand{\algebra}{\sectionheader{Algebra}{ବୀଜଗଣିତ}} \newcommand{\numbertheory}{\sectionheader{Number Theory}{ସଂଖ୍ୟା ତତ୍ତ୍ୱ}} \newcommand{\geometryh}{\sectionheader{Geometry}{ଜ୍ୟାମିତି}} \newcommand{\trigonometry}{\sectionheader{Trigonometry}{ତ୍ରିକୋଣମିତି}} \newcommand{\calculus}{\sectionheader{Calculus}{କଳନ ଗଣିତ}} \newcommand{\combinatorics}{\sectionheader{Combinatorics}{ସଂଯୋଗ ଗଣିତ}} \newcommand{\probability}{\sectionheader{Probability}{ସମ୍ଭାବ୍ୟତା ଗଣିତ}} \newcommand{\funfactname}{\iflanguage{odia}{ତୁମେ ଜାଣିଛ କି?}{Did you know ?}} \NewDocumentEnvironment{funfact}{O{\funfactname}}{% \begin{leelabox}[leelaAccent, title={\faLightbulb\;\;#1}] }{% \end{leelabox} } % Author Info Macros \newcommand{\affiliation}[2][1.8em]{% \par \hangindent=#1 \hangafter=1 \scalebox{1.1}{\color{magHighlight}\faUniversity}\, #2\par } \newcommand{\email}[1]{% \scalebox{1.1}{\color{magHighlight}\faEnvelope}\, \href{mailto:#1}{#1} } \newcommand{\phone}[1]{% \scalebox{1.1}{\color{magHighlight}\faPhone}\, #1\par } \newtcolorbox{quotebox}[2][]{ % Added an optional argument for the attribution enhanced jigsaw, breakable, colback=magHighlight!10, colframe=white, boxrule=1pt, left=7mm, right=2mm, top=1mm, bottom=1.5mm, before=\vspace{1.25mm}, after=\vspace{0mm}, % This adds the attribution at the bottom if the argument is provided after upper={ \ifstrempty{#1}{}{ % If argument #1 is not empty \nopagebreak\vspace{#2} \begin{flushright} \textemdash\ \textbf{#1} \end{flushright} } }, overlay={ \node[anchor=north west, font=\fontsize{12pt}{12pt}\selectfont, text=magHighlight!80] at ([xshift=.5mm, yshift=1.75mm]frame.north west) {\faQuoteLeft}; } } \newenvironment{transtable} {\begin{tcolorbox}[ colback=magHighlight!10, colframe=magHighlight, boxrule=1pt, arc=1mm, fontupper=\footnotesize, boxsep=0pt, left=1mm, right=1.5mm, top=.5mm, bottom=.5mm, before upper=\par\noindent, ] \setlength{\extrarowheight}{0pt} \begin{tabular*}{\linewidth}{% @{} l @{\extracolsep{\fill}} r !{\extracolsep{0pt}\hspace{0.0em}\vrule\hspace{0.0em}} % Forces space on BOTH sides of the line l @{\extracolsep{\fill}} r @{\extracolsep{0pt}} % Resets the filler for the last edge @{} } } {\end{tabular*}\end{tcolorbox}} % Hook for Odia \gappto\captionsodia{% \def\artprobname{ସମସ୍ୟା}% } % Hook for English \gappto\captionsenglish{% \def\artprobname{Problem}% } \newtcolorbox[auto counter, number within=chapter, number freestyle={\noexpand\arabic{\tcbcounter}}]{artproboxtemplate}[2]{% enhanced, breakable, colback=magHighlight!10, colframe=white, boxrule=1pt, left=1mm, right=1mm, top=.5mm, bottom=.5mm, attach title to upper, after title={\vskip 0.05in}, fonttitle=\fontsize{12pt}{12pt}\selectfont\bfseries, % --- Manual Title Construction --- title={% \tcbox[ on line, boxrule=0pt, colback=white, colframe=magHighlight, arc=1pt, size=small, top=1pt, bottom=.5pt, left=1pt, right=1pt ]{%\color{black}\artprobname~\arabic{\tcbcounter}% \color{black}\artprobname~\thetcbcounter% \ifstrempty{#1}{}{ (#1)}% Add subtitle in () only if #1 is provided }% }, label={artprob:#2} } \NewDocumentEnvironment{artprobox}{o} {% \IfNoValueTF{#1} {\begin{artproboxtemplate}{}{}} {\begin{artproboxtemplate}{}{#1}} } {% \end{artproboxtemplate} } \newtcolorbox[auto counter, number within = chapter, number freestyle={\noexpand\arabic{\tcbcounter}}]{comprobox}{ enhanced, breakable, colback=magHighlight!10, colframe=white, boxrule=1pt, left=1mm, right=1mm, top=.5mm, bottom=.5mm, before=\vspace{1.25mm}, after=\vspace{0mm}, %title={\color{black}\arabic{\tcbcounter}.}, title={\color{black}\thetcbcounter.}, fonttitle=\fontsize{12pt}{12pt}\selectfont\bfseries, attach title to upper, after title={\hspace{2mm}}, } \newenvironment{compsol}[1][S]{% \pushQED{\qed}% \noindent $\blacktriangleright \blacktriangleright$\quad% \raggedright% }{% \popQED% \medskip% } % Define question box style \newtcolorbox{questionbox}{ enhanced, breakable, colback=magHighlight!10, colframe=white, boxrule=1pt, left=1mm, right=1mm, top=1mm, bottom=.5mm, before=\vspace{1.25mm}, after=\vspace{0mm}, title={\tcbox[ on line, boxrule=0pt, colback=magHighlight, colframe=magHighlight, arc=1pt, boxsep=1.2pt, top=0pt, bottom=0pt, left=0pt, right=0pt ]{\color{white}\faQuestionCircle}}, fonttitle=\fontsize{12pt}{12pt}\selectfont\bfseries, attach title to upper, after title={\enspace}, } % Problem/Solution Zone \newtcolorbox{problem}[2][]{% colback=white, colframe=magHighlight!75, boxrule=0.5pt, arc=1mm, left=4pt, right=4pt, top=2pt, bottom=1mm, fontupper=\small, after=\vspace{-3mm}, title={\textbf{Problem~#2}}, #1 } \newenvironment{solution}[1][Solution]{% \par\medskip \noindent\textbf{#1.} \quad }{% \hfill$\square$\par\medskip } % Solid header \newtcolorbox{solidheader}{ colback=magHighlight, colframe=magHighlight, width=\textwidth, arc=0mm, boxrule=0pt, left=4mm, right=3mm, top=4mm, bottom=4mm } % Float spacing tweaks \setlength{\textfloatsep}{8pt} \setlength{\floatsep}{8pt} \setlength{\intextsep}{8pt} \newcommand{\fixedtt}[1]{% {\XeTeXinterchartokenstate=0\texttt{#1}}% } \endinput