Mercurial > hgrepos > Python > libs > ConfigMix
diff docs/_latex/my-doc-fonts.sty @ 776:48deafc1fd2f
Use the new implementations of my-doc-fonts.sty and my-doc-style.sty.
Changed titlepage to contain build date the VCS revision.
Needed some conf.py variable changes: today is now the
logical date (revision date) and today is the build date.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 16 May 2026 01:52:49 +0200 |
| parents | 741ebfe77e55 |
| children |
line wrap: on
line diff
--- a/docs/_latex/my-doc-fonts.sty Wed May 13 20:45:20 2026 +0200 +++ b/docs/_latex/my-doc-fonts.sty Sat May 16 01:52:49 2026 +0200 @@ -4,7 +4,7 @@ % \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{my-doc-fonts}[% - 2026/05/13 v0.2 (Franz Glasner) Fonts for Sphinx generated PDFs] + 2026/05/16 v0.3 (Franz Glasner) Fonts for Sphinx generated PDFs] \RequirePackage{xkeyval} \RequirePackage{fontspec} \IfFileExists{xcolor.sty}{% @@ -14,37 +14,126 @@ \RequirePackage{color} } -\newif\if@mdf@@sscode\@mdf@@sscodefalse -\newif\if@mdf@@inconsolata\@mdf@@inconsolatafalse +\newif\if@mdf@mono@dejavusansmono\@mdf@mono@dejavusansmonofalse +\newif\if@mdf@mono@cmmono\@mdf@mono@cmmonofalse +\newif\if@mdf@mono@robotomono\@mdf@mono@robotomonofalse +\newif\if@mdf@mono@sscode\@mdf@mono@sscodefalse +\newif\if@mdf@mono@inconsolata\@mdf@mono@inconsolatafalse +\newif\if@mdf@mono@libertinusmono\@mdf@mono@libertinusmonofalse +\newif\if@mdf@augment@libertinusmono\@mdf@augment@libertinusmonofalse \newif\if@mdf@WithDejaVuSansMono -\newif\if@mdf@WithPlexMono -\newif\if@mdf@WithAdobeSource +\newif\if@mdf@WithCM +\newif\if@mdf@WithRobotoMono +\newif\if@mdf@WithIBMPlex +\newif\if@mdf@WithIBMPlexDejaVuSansMono +\newif\if@mdf@WithAdobeSourcePro \newif\if@mdf@WithSpectral \newif\if@mdf@WithCharter - -\def\@mdf@reset@font@options{\@mdf@WithDejaVuSansMonofalse\@mdf@WithPlexMonofalse\@mdf@WithAdobeSourcefalse\@mdf@WithCharterfalse} +\newif\if@mdf@WithLibertinus +\newif\if@mdf@WithGaramond +\newif\if@mdf@WithTufte +\newif\if@mdf@WithPalatino +\newif\if@mdf@WithCrimson -\DeclareOptionX{dejavusansmono}[true]{\@mdf@reset@font@options\csname @mdf@WithDejaVuSansMono#1\endcsname} -\DeclareOptionX{plexmono}[true]{\@mdf@reset@font@options\csname @mdf@WithPlexMono#1\endcsname} -\DeclareOptionX{adobesource}[true]{\@mdf@reset@font@options\csname @mdf@WithAdobeSource#1\endcsname} -\DeclareOptionX{spectral}[true]{\@mdf@reset@font@options\csname @mdf@WithSpectral#1\endcsname} -\DeclareOptionX{charter}[true]{\@mdf@reset@font@options\csname @mdf@WithCharter#1\endcsname} +% A key compatible with options processing as option "fonts" but choices. +\define@choicekey*{my-doc-fonts.sty}{fonts}[\val\nr]{% + % do not change anything: just deactivate the default "dejavusansmono" + default, + % no augmentation needed: all characters available + dejavusansmono, % use DejaVu Sans Mono as monospaced font + % the fonts below are augmented for missing characters + cm, % assume CM fonts and just fix missing characters + robotomono, % use Roboto Mono as mono font + ibmplex, plex, % use the IBM Plex family (incl. Math) + plex-dejavusansmono, % use IBM Plex Serif/Sans and DejaVu Sans Mono + adobesourcepro, adobesource, % Use Adobe Source Serif/Sans/Mono + spectral, % use Spectral, Source Sans Pro and Source Code Pro + charter, % use XCharter (with XCharter Math), Lato and Inconsolata + libertinus, % use Libertinus family (incl. Math) + garamond, % EB Garamond (with Math), Libre Franklin and Inconsolata + tufte, % Tufte fonts: ETbb (with Math), GilliusADFNo2, DejaVu Sans Mono + palatino, % Palatino, Inter and Source Code Pro + crimson, % Crimson Pro, Cabin and Source Code Pro (incl. Erewhon Math) + }{% + % Not used for now : store the normalized option value (global and expanded) + \xdef\@mdf@fonts{\val}% + % Reset all option related font selection flags + \@mdf@WithDejaVuSansMonofalse + \@mdf@WithCMfalse + \@mdf@WithRobotoMonofalse + \@mdf@WithIBMPlexfalse + \@mdf@WithIBMPlexDejaVuSansMonofalse + \@mdf@WithAdobeSourceProfalse + \@mdf@WithSpectralfalse + \@mdf@WithCharterfalse + \@mdf@WithLibertinusfalse + \@mdf@WithGaramondfalse + \@mdf@WithTuftefalse + \@mdf@WithPalatinofalse + \@mdf@WithCrimsonfalse + % Now set the needed font selection flag + \ifcase\nr\relax + \relax + \or + \@mdf@WithDejaVuSansMonotrue + \or + \@mdf@WithCMtrue + \or + \@mdf@WithRobotoMonotrue + \or + \@mdf@WithIBMPlextrue + \or + \@mdf@WithIBMPlextrue + % Normalize the stored string + \gdef\@mdf@fonts{ibmplex} + \or + \@mdf@WithIBMPlexDejaVuSansMonotrue + \or + \@mdf@WithAdobeSourceProtrue + \or + \@mdf@WithAdobeSourceProtrue + % Normalize the stored string + \gdef\@mdf@fonts{adobesourcepro} + \or + \@mdf@WithSpectraltrue + \or + \@mdf@WithChartertrue + \or + \@mdf@WithLibertinustrue + \or + \@mdf@WithGaramondtrue + \or + \@mdf@WithTuftetrue + \or + \@mdf@WithPalatinotrue + \or + \@mdf@WithCrimsontrue + \fi +} % % By default use the safe option dejavusansmono because is contains % all characters without any hacks. % -\ExecuteOptionsX{dejavusansmono} -\ProcessOptionsX*\relax +\ExecuteOptionsX{fonts=dejavusansmono} +\ProcessOptionsX\relax \if@mdf@WithDejaVuSansMono - \RequirePackage[DefaultFeatures={Scale=0.92},mono=false]{plex-otf} - \RequirePackage[mono=true,serif=false,sans=false,math=false]{dejavu-otf} % all symbols are available + % default but with DejaVu Sans Mono as monospaced font + %\RequirePackage[DefaultFeatures={Scale=0.92},mono=false]{plex-otf} + %\RequirePackage[mono=true,serif=false,sans=false,math=false]{dejavu-otf} % all symbols are available + \@mdf@mono@dejavusansmonotrue +\fi +\if@mdf@WithCM + \@mdf@mono@cmmonotrue +\fi +\if@mdf@WithRobotoMono + \@mdf@mono@robotomonotrue \fi % % -\if@mdf@WithPlexMono +\if@mdf@WithIBMPlex \RequirePackage{newunicodechar} \RequirePackage[DefaultFeatures={Scale=0.92}]{plex-otf} % Dont keep all default font features from plex-otf @@ -79,7 +168,11 @@ verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}% {sphinx} \fi -\if@mdf@WithAdobeSource +\if@mdf@WithIBMPlexDejaVuSansMono + \RequirePackage[DefaultFeatures={Scale=0.92},mono=false]{plex-otf} + \@mdf@mono@dejavusansmonotrue +\fi +\if@mdf@WithAdobeSourcePro \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}} \setmainfont{Source Serif Pro}[ UprightFont = *, @@ -93,9 +186,10 @@ ItalicFont = * Italic, BoldItalicFont = * Bold Italic, ] - \@mdf@@sscodetrue + \@mdf@mono@sscodetrue \fi \if@mdf@WithSpectral + \RequirePackage{unicode-math} \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}} \setmainfont{Spectral}[ UprightFont = * Regular, @@ -109,11 +203,12 @@ ItalicFont = * Italic, BoldItalicFont = * Bold Italic, ] - \@mdf@@sscodetrue + \setmathfont{STIX Two Math}[Scale=MatchLowercase] + \@mdf@mono@sscodetrue \fi \if@mdf@WithCharter \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular}} - \setmainfont{XCharter} + \RequirePackage{xcharter-otf}% loads also XCharter Math \setsansfont{Lato}[ UprightFont = * Regular, BoldFont = * Bold, @@ -121,12 +216,92 @@ BoldItalicFont = * Bold Italic, Scale = MatchLowercase, ] - \@mdf@@inconsolatatrue + \@mdf@mono@inconsolatatrue +\fi +\if@mdf@WithLibertinus + \RequirePackage{newunicodechar} + \RequirePackage[lining,tabular]{libertinus-otf} + \@mdf@augment@libertinusmonotrue +\fi + +\if@mdf@WithGaramond + \RequirePackage[lining,tabular]{ebgaramond} + \RequirePackage{unicode-math} + \setmathfont{Garamond-Math}[Scale=MatchLowercase] + \setsansfont{Libre Franklin}[Scale=MatchLowercase,Ligatures=TeX] + \@mdf@mono@inconsolatatrue +\fi + +\if@mdf@WithTufte + \RequirePackage{unicode-math} + \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX} + \setmainfont{ETbb} + \setsansfont{GilliusADFNo2}[Scale=MatchLowercase] + \setmathfont{Libertinus Math}[Scale=MatchLowercase] + \@mdf@mono@dejavusansmonotrue +\fi + +\if@mdf@WithPalatino + \RequirePackage{unicode-math} + \linespread{1.06} + \defaultfontfeatures{Numbers={Lining,Tabular},Ligatures=TeX} + \setmainfont{TeXGyrePagellaX} + \setsansfont{Inter}[Scale=MatchLowercase] + %\setsansfont{Rosario}[Scale=MatchLowercase,ScaleAgain=1.013] + %\setmathfont{Asana Math}[Scale=MatchLowercase] + \setmathfont{TeX Gyre Pagella Math}[Scale=MatchLowercase] + %\@mdf@mono@sscodetrue + \@mdf@mono@libertinusmonotrue +\fi + +\if@mdf@WithCrimson + \RequirePackage{unicode-math} + \defaultfontfeatures{Ligatures=TeX, Numbers={Lining,Tabular}} + \setmainfont{Crimson Pro} + \setsansfont{Cabin}[Scale=MatchLowercase] + \defaultfontfeatures{}% Erewhon Math needs this here! + \setmathfont{Erewhon Math}[Scale=MatchLowercase] + \@mdf@mono@sscodetrue \fi \defaultfontfeatures{} -\if@mdf@@sscode +\if@mdf@mono@dejavusansmono + % automatically applied with Scale=MatchLowercase,... + \RequirePackage[mono=true,serif=false,sans=false,math=false]{dejavu-otf} % all symbols are available + \fi + +\if@mdf@mono@cmmono + \RequirePackage{newunicodechar} + \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular},Scale=MatchLowercase} + \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[% + UprightFont = *, + BoldFont = * Bold, + ItalicFont = * Oblique, + BoldItalicFont = * Bold Oblique, + ] + \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7 + \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236 + \newunicodechar{◆}{{\DejaVuSansMono ◆}}% U+25C6 + \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5 + \newunicodechar{⟶}{{\DejaVuSansMono ⟶}}% U+27F6 + \newunicodechar{⟷}{{\DejaVuSansMono ⟷}}% U+27F7 + \newunicodechar{⇒}{{\DejaVuSansMono ⇒}}% U+21D2 + \newunicodechar{⇔}{{\DejaVuSansMono ⇔}}% U+21D4 + \newunicodechar{▪}{{\DejaVuSansMono ▪}}% U+25AA + \newunicodechar{≟}{{\DejaVuSansMono ≟}}% U+225F + \newunicodechar{∈}{{\DejaVuSansMono ∈}}% U+2208 + \newunicodechar{∌}{{\DejaVuSansMono ∌}}% U+220C + \newunicodechar{≠}{{\DejaVuSansMono ≠}}% U+2260 + \newunicodechar{≤}{{\DejaVuSansMono ≤}}% U+2264 + \newunicodechar{≥}{{\DejaVuSansMono ≥}}% U+2265 + \PassOptionsToPackage{% + verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},% + verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}% + {sphinx} +\fi + +\if@mdf@mono@sscode \RequirePackage{newunicodechar} \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular},Scale=MatchLowercase} \setmonofont{Source Code Pro}[ @@ -135,7 +310,6 @@ ItalicFont = * Italic, BoldItalicFont = * Bold Italic, ] - \defaultfontfeatures{} \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[% UprightFont = *, BoldFont = * Bold, @@ -157,7 +331,7 @@ {sphinx} \fi -\if@mdf@@inconsolata +\if@mdf@mono@inconsolata \RequirePackage{newunicodechar} \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular},Scale=MatchLowercase} \setmonofont{Inconsolata LGC Nerd Font Mono}[% @@ -166,7 +340,6 @@ ItalicFont = * Italic, BoldItalicFont = * Bold Italic, ] - \defaultfontfeatures{} \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[% UprightFont = *, BoldFont = * Bold, @@ -182,6 +355,101 @@ \newunicodechar{∌}{{\DejaVuSansMono ∌}}% U+220C \fi +\if@mdf@mono@robotomono + \RequirePackage{newunicodechar} + \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular},Scale=MatchLowercase} + \setmonofont{Roboto Mono}[% + UprightFont = *, + BoldFont = * Bold, + ItalicFont = * Italic, + BoldItalicFont = * Bold Italic, + ] + \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[% + UprightFont = *, + BoldFont = * Bold, + ItalicFont = * Oblique, + BoldItalicFont = * Bold Oblique, + ] + \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7 + \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236 + \newunicodechar{◆}{{\DejaVuSansMono ◆}}% U+25C6 + \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5 + \newunicodechar{⟶}{{\DejaVuSansMono ⟶}}% U+27F6 + \newunicodechar{⟷}{{\DejaVuSansMono ⟷}}% U+27F7 + \newunicodechar{⇒}{{\DejaVuSansMono ⇒}}% U+21D2 + \newunicodechar{⇔}{{\DejaVuSansMono ⇔}}% U+21D4 + \newunicodechar{▪}{{\DejaVuSansMono ▪}}% U+25AA + \newunicodechar{≟}{{\DejaVuSansMono ≟}}% U+225F + \newunicodechar{∈}{{\DejaVuSansMono ∈}}% U+2208 + \newunicodechar{∌}{{\DejaVuSansMono ∌}}% U+220C + + \PassOptionsToPackage{% + verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},% + verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}% + {sphinx} +\fi + +\if@mdf@mono@libertinusmono + % This is stolen from libertinus-otf.sty! + \setmonofont{LibertinusMono}[% + Ligatures = TeX, + Numbers = {Lining, Tabular}, + Scale = MatchLowercase, + FakeStretch = 0.94, + UprightFont = *-Regular, + ItalicFont = *-Regular, + ItalicFeatures = {FakeSlant=0.2}, + SlantedFont = *-Regular, + SlantedFeatures= {FakeSlant=0.2}, + BoldFont = *-Regular, + BoldFeatures = {RawFeature={embolden=3}}, + BoldItalicFont = *-Regular, + BoldItalicFeatures={FakeSlant=0.2,RawFeature={embolden=3}}, + Extension = .otf, + ] + \@mdf@augment@libertinusmonotrue +\fi + +\if@mdf@augment@libertinusmono + \RequirePackage{newunicodechar} + \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[% + UprightFont = *, + BoldFont = * Bold, + ItalicFont = * Oblique, + BoldItalicFont = * Bold Oblique, + Scale=MatchLowercase, + Ligatures=TeX, + ] + \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7 + \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236 + \newunicodechar{◆}{{\DejaVuSansMono ◆}}% U+25C6 + \newunicodechar{▪}{{\DejaVuSansMono ▪}}% U+25AA + \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5 + \newunicodechar{⟶}{{\DejaVuSansMono ⟶}}% U+27F6 + \newunicodechar{⟷}{{\DejaVuSansMono ⟷}}% U+27F7 + \newunicodechar{⇒}{{\DejaVuSansMono ⇒}}% U+21D2 + \newunicodechar{⇔}{{\DejaVuSansMono ⇔}}% U+21D4 + \newunicodechar{≟}{{\DejaVuSansMono ≟}}% U+225F + \newunicodechar{∈}{{\DejaVuSansMono ∈}}% U+2208 + \newunicodechar{∌}{{\DejaVuSansMono ∌}}% U+220C + \newunicodechar{≠}{{\DejaVuSansMono ≠}}% U+2260 + \newunicodechar{≤}{{\DejaVuSansMono ≤}}% U+2264 + \newunicodechar{≥}{{\DejaVuSansMono ≥}}% U+2265 + %\newunicodechar{␣}{{\DejaVuSansMono ␣}}% U+2423 Missing! + %\newunicodechar{^^^^2423}{{\DejaVuSansMono^^^^2423}}% U+2423 + %\newunicodechar{␣}{\textvisiblespace}% U+2423 + %\catcode`^^^^2423\active\protected\def^^^^2423{\textvisiblespace} + + \PassOptionsToPackage{% + verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},% + verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}% + {sphinx} +\fi + \defaultfontfeatures{} +\def\testmdf{ + Normalized: \@mdf@fonts\newline +} + \endinput
