194 lines
5.5 KiB
TeX
194 lines
5.5 KiB
TeX
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesExplPackage{PrimeTeX/packages/Fonts}{2025-09-18}{1.0}{
|
|
Font definitions.
|
|
}
|
|
|
|
% Loading math fonts takes a long time, so skip it in draft mode.
|
|
% \bool_if:NF \g_draft_bool {
|
|
% \RequirePackage{notomath}
|
|
% }
|
|
|
|
\NewDocumentCommand{\fontpath}{}{./PrimeTeX/fonts}
|
|
|
|
\def\sbfamily{}
|
|
|
|
% Main font: Roboto Serif (Light), with symbols merged in from, in order of
|
|
% priority, Noto Serif, Noto Emoji, Noto Sans Symbols, and Noto
|
|
% Sans Symbols 2.
|
|
% \setmainfont{RobotoSerif}[
|
|
% Path = {\fontpath/serif/},
|
|
% Extension = .ttf,
|
|
% UprightFont = *-Light,
|
|
% BoldFont = *-SemiBold,
|
|
% ItalicFont = *-LightItalic,
|
|
% BoldItalicFont = *-SemiBoldItalic,
|
|
% SlantedFont = NotoSerif-Light,
|
|
% BoldSlantedFont = NotoSerif-SemiBold,
|
|
% ]
|
|
|
|
% % Sans serif font: Roboto (Medium).
|
|
% \setsansfont{Roboto}[
|
|
% Path = {\fontpath/sans/},
|
|
% Extension = .ttf,
|
|
% UprightFont = *-Medium,
|
|
% BoldFont = *-Bold,
|
|
% ItalicFont = *-MediumItalic,
|
|
% BoldItalicFont = *-BoldItalic,
|
|
% SlantedFont = NotoSans-Medium,
|
|
% BoldSlantedFont = NotoSans-Bold,
|
|
% ]
|
|
|
|
% Monospace font: Roboto Mono
|
|
% \setmonofont{RobotoMono}[
|
|
% Path = {\fontpath/mono/},
|
|
% Extension = .ttf,
|
|
% UprightFont = *-Regular,
|
|
% BoldFont = *-Bold,
|
|
% ItalicFont = *-Italic,
|
|
% BoldItalicFont = *-BoldItalic,
|
|
% ]
|
|
|
|
% % Headings & Titles font: Roboto Slab (Semibold).
|
|
% \newfontfamily{\sbfamily}{RobotoSlab}[
|
|
% Path = {\fontpath/serif/},
|
|
% Extension = .ttf,
|
|
% UprightFont = *-SemiBold,
|
|
% BoldFont = *-Black,
|
|
% % Roboto Slab doesn't have any italic form, so use
|
|
% % the Roboto Serif version.
|
|
% ItalicFont = RobotoSerif-SemiBoldItalic,
|
|
% BoldItalicFont = RobotoSerif-ExtraBoldItalic,
|
|
% SlantedFont = NotoSerif-SemiBold,
|
|
% BoldSlantedFont = NotoSerif-ExtraBold,
|
|
% ]
|
|
|
|
% Sans serif font with more symbols: Noto Sans
|
|
% \newfontfamily{\notofamily}{NotoSans}[
|
|
% Path = {\fontpath/NotoSans/},
|
|
% Extension = .ttf,
|
|
% UprightFont = *-Medium,
|
|
% BoldFont = *-Bold,
|
|
% ]
|
|
|
|
% Emoji font: Noto Emoji
|
|
% \newfontfamily{\emojifamily}{NotoEmoji}[
|
|
% Path = {\fontpath/},
|
|
% Extension = .ttf,
|
|
% UprightFont = NotoEmoji/NotoEmoji-Regular,
|
|
% BoldFont = NotoEmoji/NotoEmoji-Bold,
|
|
% ItalicFont = NotoEmoji/NotoEmoji-Light,
|
|
% BoldItalicFont = NotoEmoji/NotoEmoji-SemiBold,
|
|
% ]
|
|
|
|
% \newfontfamily{\mathfamily}{NotoSerif}[
|
|
% Path = {\fontpath/NotoSerif/},
|
|
% Extension = .ttf,
|
|
% UprightFont = *-Regular,
|
|
% BoldFont = *-Bold,
|
|
% ItalicFont = *-Italic,
|
|
% BoldItalicFont = *-BoldItalic,
|
|
% ]
|
|
|
|
% % Symbol font: Noto Sans Symbols 2
|
|
% \newfontfamily{\symbfamily}{NotoSansSymbols}[
|
|
% Path = {\fontpath/NotoSansSymbols/},
|
|
% Extension = .ttf,
|
|
% UprightFont = *-Regular,
|
|
% BoldFont = *-Bold,
|
|
% ItalicFont = *-Light,
|
|
% BoldItalicFont = *-SemiBold,
|
|
% ]
|
|
|
|
% \setmathrm{RobotoSerif}
|
|
|
|
\NewDocumentCommand{\serif}{+m}{{\rmfamily#1}}
|
|
\NewDocumentCommand{\sans}{+m}{{\sffamily#1}}
|
|
\NewDocumentCommand{\mono}{+m}{{\ttfamily{#1}}}
|
|
\NewDocumentCommand{\slab}{+m}{{\sbfamily{}#1}}
|
|
\NewDocumentCommand{\code}{+m}{\mono{\small{}#1}}
|
|
% \NewDocumentCommand{\emoji}{m}{{\emojifamily{}#1}}
|
|
% \NewDocumentCommand{\maths}{m}{{\mathfamily{}#1}}
|
|
% \NewDocumentCommand{\symb}{m}{{\symbfamily{}#1}}
|
|
% \NewDocumentCommand{\noto}{s m}{
|
|
% \group_begin:
|
|
% \bool_if:nTF {#1} {
|
|
% \notosansfamily #2
|
|
% } {
|
|
% \notofamily #2
|
|
% }
|
|
% \group_end:
|
|
% }
|
|
|
|
%------------------------------- Symbol Commands -------------------------------
|
|
|
|
% Line-breaking zero-width space.
|
|
\NewDocumentCommand{\zws}{}{\hspace{0pt}}
|
|
% Line-breaking dot.
|
|
\NewDocumentCommand{\bdot}{}{.\zws}
|
|
|
|
% Text-mode angle bracket ornaments.
|
|
\NewDocumentCommand{\ab}{s m}{\textsl{〈}#1\textsl{〉}}
|
|
|
|
\NewDocumentCommand{\checkmark}{s O{PrimeGreen} O{PrimeBrightGreen}}{
|
|
\bool_if:nTF {#1} {
|
|
\ColorText[#2][#3][]{\textsl{✓}}
|
|
} {
|
|
{\textsl{✓}}
|
|
}
|
|
}
|
|
\NewDocumentCommand{\xmark}{s O{PrimeRed} O{PrimeBrightRed}}{
|
|
\bool_if:nTF {#1} {
|
|
\ColorText[#2][#3][]{\textsl{✗}}
|
|
} {
|
|
{\textsl{✗}}
|
|
}
|
|
}
|
|
|
|
\RenewDocumentCommand{\triangle}{m}{
|
|
\textsl{
|
|
\str_case:nn {#1} {
|
|
{down} {▼}
|
|
{left} {◀}
|
|
{right} {▶}
|
|
{up} {▲}
|
|
}
|
|
}
|
|
}
|
|
|
|
%--------------------------- MenuKeys Configuration ----------------------------
|
|
|
|
\newmenucolortheme{autoModeColor}{named}{pageColor}{textColor}{textColor}[pageColor][textColor][textColor]
|
|
|
|
\changemenucolortheme{hyphenatepaths}{autoModeColor}
|
|
\changemenucolortheme{shadowedroundedkeys}{autoModeColor}
|
|
\changemenucolortheme{angularmenus}{autoModeColor}
|
|
|
|
\cs_new:Nn \__MenuKeys_path_style: {
|
|
\sffamily\color{\usemenucolor{txt}}\CurrentMenuElement
|
|
}
|
|
|
|
\changemenuelement*{hyphenatepaths}{first}{\__MenuKeys_path_style:}
|
|
\changemenuelement*{hyphenatepaths}{middle}{\__MenuKeys_path_style:}
|
|
\changemenuelement*{hyphenatepaths}{last}{\__MenuKeys_path_style:}
|
|
\changemenuelement*{hyphenatepaths}{single}{\__MenuKeys_path_style:}
|
|
|
|
\renewmenumacro{\directory}[/]{hyphenatepaths}
|
|
\renewmenumacro{\keys}[+]{shadowedroundedkeys}
|
|
\renewmenumacro{\menu}[>]{angularmenus}
|
|
|
|
\RenewDocumentCommand{\ctrlname}{}{$\wedge$}
|
|
|
|
\NewDocumentCommand{\ControlString}{}{Ctrl}
|
|
\NewDocumentCommand{\EnterString}{}{Enter\,\return}
|
|
\NewDocumentCommand{\ShiftString}{}{Shift\,\shift}
|
|
\NewDocumentCommand{\AltString}{}{Alt\,\altmac}
|
|
\NewDocumentCommand{\TabString}{}{Tab\,\tab}
|
|
|
|
\NewDocumentCommand{\ControlKey}{}{\keys{\ControlString}}
|
|
\NewDocumentCommand{\EnterKey}{}{\keys{\EnterString}}
|
|
\NewDocumentCommand{\ShiftKey}{}{\keys{\ShiftString}}
|
|
\NewDocumentCommand{\AltKey}{}{\keys{\AltString}}
|
|
\NewDocumentCommand{\TabKey}{}{\keys{\TabString}}
|
|
|
|
% Suppress warning about obsolete font encodings because we're using Unicode.
|
|
\@tw@hyphenatepaths@warnigfalse %[sic] |