comparison docs/_latex/my-doc-fonts.sty @ 793:46578f03a7cb default tip

Update to latest my-doc-XXX.sty style files for PDF generation
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 20 May 2026 12:57:36 +0200
parents 0b83218218e2
children
comparison
equal deleted inserted replaced
792:0b83218218e2 793:46578f03a7cb
1 % -*- coding: utf-8 -*- 1 % -*- coding: utf-8 -*-
2 % SPDX-FileCopyrightText: © 2026 Franz Glasner
3 % SPDX-License-Identifier: BSD-3-Clause
2 % 4 %
3 % Some font hacks for my Sphinx PDF documents 5 % Some font hacks for my Sphinx PDF documents
4 % 6 %
5 \NeedsTeXFormat{LaTeX2e} 7 \NeedsTeXFormat{LaTeX2e}
6 \ProvidesPackage{my-doc-fonts}[% 8 \ProvidesPackage{my-doc-fonts}[%
18 \newif\if@mdf@mono@cmmono\@mdf@mono@cmmonofalse 20 \newif\if@mdf@mono@cmmono\@mdf@mono@cmmonofalse
19 \newif\if@mdf@mono@robotomono\@mdf@mono@robotomonofalse 21 \newif\if@mdf@mono@robotomono\@mdf@mono@robotomonofalse
20 \newif\if@mdf@mono@sscode\@mdf@mono@sscodefalse 22 \newif\if@mdf@mono@sscode\@mdf@mono@sscodefalse
21 \newif\if@mdf@mono@inconsolata\@mdf@mono@inconsolatafalse 23 \newif\if@mdf@mono@inconsolata\@mdf@mono@inconsolatafalse
22 \newif\if@mdf@mono@libertinusmono\@mdf@mono@libertinusmonofalse 24 \newif\if@mdf@mono@libertinusmono\@mdf@mono@libertinusmonofalse
25 \newif\if@mdf@mono@hackmono\@mdf@mono@hackmonofalse
23 \newif\if@mdf@augment@libertinusmono\@mdf@augment@libertinusmonofalse 26 \newif\if@mdf@augment@libertinusmono\@mdf@augment@libertinusmonofalse
27 \newif\if@mdf@augment@ibmplexmono\@mdf@augment@ibmplexmonofalse
24 28
25 \newif\if@mdf@WithDejaVuSansMono 29 \newif\if@mdf@WithDejaVuSansMono
26 \newif\if@mdf@WithCM 30 \newif\if@mdf@WithCM
27 \newif\if@mdf@WithRobotoMono 31 \newif\if@mdf@WithRobotoMono
28 \newif\if@mdf@WithIBMPlex 32 \newif\if@mdf@WithIBMPlex
36 \newif\if@mdf@WithPalatino 40 \newif\if@mdf@WithPalatino
37 \newif\if@mdf@WithPalatinoKB 41 \newif\if@mdf@WithPalatinoKB
38 \newif\if@mdf@WithCrimson 42 \newif\if@mdf@WithCrimson
39 \newif\if@mdf@WithCrimsonCabin 43 \newif\if@mdf@WithCrimsonCabin
40 \newif\if@mdf@WithDejaVu 44 \newif\if@mdf@WithDejaVu
45 \newif\if@mdf@WithMerriweather
46 \newif\if@mdf@WithLiterata
41 47
42 % A key compatible with options processing as option "fonts" but choices. 48 % A key compatible with options processing as option "fonts" but choices.
43 \define@choicekey*{my-doc-fonts.sty}{fonts}[\val\nr]{% 49 \define@choicekey*{my-doc-fonts.sty}{fonts}[\val\nr]{%
44 % do not change anything: just deactivate the default "dejavusansmono" 50 % do not change anything: just deactivate the default "dejavusansmono"
45 default, 51 default,
59 palatino, % Palatino, Inter and Source Code Pro 65 palatino, % Palatino, Inter and Source Code Pro
60 palatino-kb, % Palatino, Lato and Inconsolata (original KB-Admin style) 66 palatino-kb, % Palatino, Lato and Inconsolata (original KB-Admin style)
61 crimson, % Crimson Pro, Open Sans and Roboto Mono (Erewhon Math) 67 crimson, % Crimson Pro, Open Sans and Roboto Mono (Erewhon Math)
62 crimson-cabin, % Crimson Pro, Cabin and Source Code Pro (Erewhon Math) 68 crimson-cabin, % Crimson Pro, Cabin and Source Code Pro (Erewhon Math)
63 dejavu, % All DejaVu fonts (Serif, Sans, Mono) 69 dejavu, % All DejaVu fonts (Serif, Sans, Mono)
70 merriweather, % Merriweather, Merriweather Sans, Hack (STIX Two Math)
71 literata, % Literata, Inter, IBM Plex Mono (Garamond Math)
64 }{% 72 }{%
65 % Not used for now : store the normalized option value (global and expanded) 73 % Not used for now : store the normalized option value (global and expanded)
66 \xdef\@mdf@fonts{\val}% 74 \xdef\@mdf@fonts{\val}%
67 % Reset all option related font selection flags 75 % Reset all option related font selection flags
68 \@mdf@WithDejaVuSansMonofalse 76 \@mdf@WithDejaVuSansMonofalse
79 \@mdf@WithPalatinofalse 87 \@mdf@WithPalatinofalse
80 \@mdf@WithPalatinoKBfalse 88 \@mdf@WithPalatinoKBfalse
81 \@mdf@WithCrimsonfalse 89 \@mdf@WithCrimsonfalse
82 \@mdf@WithCrimsonCabinfalse 90 \@mdf@WithCrimsonCabinfalse
83 \@mdf@WithDejaVufalse 91 \@mdf@WithDejaVufalse
92 \@mdf@WithMerriweatherfalse
93 \@mdf@WithLiteratafalse
84 % Now set the needed font selection flag 94 % Now set the needed font selection flag
85 \ifcase\nr\relax 95 \ifcase\nr\relax
86 \relax 96 \relax
87 \or 97 \or
88 \@mdf@WithDejaVuSansMonotrue 98 \@mdf@WithDejaVuSansMonotrue
122 \@mdf@WithCrimsontrue 132 \@mdf@WithCrimsontrue
123 \or 133 \or
124 \@mdf@WithCrimsonCabintrue 134 \@mdf@WithCrimsonCabintrue
125 \or 135 \or
126 \@mdf@WithDejaVutrue 136 \@mdf@WithDejaVutrue
137 \or
138 \@mdf@WithMerriweathertrue
139 \or
140 \@mdf@WithLiteratatrue
127 \fi 141 \fi
128 } 142 }
129 143
130 % 144 %
131 % By default use the safe option dejavusansmono because is contains 145 % By default use the safe option dejavusansmono because is contains
147 \@mdf@mono@robotomonotrue 161 \@mdf@mono@robotomonotrue
148 \fi 162 \fi
149 % 163 %
150 % 164 %
151 \if@mdf@WithIBMPlex 165 \if@mdf@WithIBMPlex
152 \RequirePackage{newunicodechar}
153 \RequirePackage[DefaultFeatures={Scale=0.92}]{plex-otf} 166 \RequirePackage[DefaultFeatures={Scale=0.92}]{plex-otf}
154 % Dont keep all default font features from plex-otf 167 % Dont keep all default font features from plex-otf
155 \defaultfontfeatures{} 168 \defaultfontfeatures{}
156 \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[% 169 \@mdf@augment@ibmplexmonotrue
157 UprightFont = *,
158 BoldFont = * Bold,
159 ItalicFont = * Oblique,
160 BoldItalicFont = * Bold Oblique,
161 Scale=MatchLowercase,
162 Ligatures=TeX,
163 ]
164 \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
165 UprightFont = *,
166 BoldFont = * Bold,
167 ItalicFont = * Oblique,
168 BoldItalicFont = * Bold Oblique,
169 Scale=MatchLowercase,
170 Ligatures=TeX,
171 ]
172 \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
173 \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
174 \newunicodechar{◆}{{\DejaVuSansMono ◆}}% U+25C6
175 \newunicodechar{▪}{{\DejaVuSansMono ▪}}% U+25AA
176 \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5
177 \newunicodechar{⟶}{{\DejaVuSansMono ⟶}}% U+27F6
178 \newunicodechar{⟷}{{\DejaVuSansMono ⟷}}% U+27F7
179 \newunicodechar{⇒}{{\DejaVuSansMono ⇒}}% U+21D2
180 \newunicodechar{⇔}{{\DejaVuSansMono ⇔}}% U+21D4
181 \newunicodechar{≟}{{\DejaVuSansMono ≟}}% U+225F
182 \newunicodechar{∈}{{\DejaVuSansMono ∈}}% U+2208
183 \newunicodechar{∌}{{\DejaVuSansMono ∌}}% U+220C
184 \newunicodechar{≙}{{\DejaVuSansMono ≙}}% U+2259
185 \newunicodechar{␣}{{\DejaVuSansMono ␣}}% U+2423
186 \newunicodechar{⇧}{{\DejaVuSansMono ⇧}}% U+21E7
187 \newunicodechar{⌃}{{\DejaVuSansMono ⌃}}% U+2303
188 \newunicodechar{⎈}{{\DejaVuSansMono ⎈}}% U+2388
189 \newunicodechar{⌥}{{\DejaVuSansMono ⌥}}% U+2325
190 \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387
191 \newunicodechar{⌘}{{\DejaVuSansMono ⌘}}% U+2318
192 \newunicodechar{⏏}{{\DejaVuSansMono ⏏}}% U+23CF
193 \newunicodechar{⌫}{{\DejaVuSansMono ⌫}}% U+232B
194 \newunicodechar{⌦}{{\DejaVuSansMono ⌦}}% U+2326
195 \newunicodechar{⇥}{{\DejaVuSansMono ⇥}}% U+21E5
196 \newunicodechar{⇤}{{\DejaVuSansMono ⇤}}% U+21E4
197 %\newunicodechar{^^^^2423}{{\DejaVuSansMono^^^^2423}}% U+2423
198 %\newunicodechar{␣}{\textvisiblespace}% U+2423
199 %\catcode`^^^^2423\active\protected\def^^^^2423{\textvisiblespace}
200
201 \PassOptionsToPackage{%
202 verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},%
203 verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}%
204 {sphinx}
205 \fi 170 \fi
206 \if@mdf@WithIBMPlexDejaVuSansMono 171 \if@mdf@WithIBMPlexDejaVuSansMono
207 \RequirePackage[DefaultFeatures={Scale=0.92},mono=false]{plex-otf} 172 \RequirePackage[DefaultFeatures={Scale=0.92},mono=false]{plex-otf}
208 \@mdf@mono@dejavusansmonotrue 173 \@mdf@mono@dejavusansmonotrue
209 \fi 174 \fi
301 BoldItalicFont = * Bold Italic, 266 BoldItalicFont = * Bold Italic,
302 Scale=MatchLowercase] 267 Scale=MatchLowercase]
303 %\setsansfont{Rosario}[Scale=MatchLowercase,ScaleAgain=1.013] 268 %\setsansfont{Rosario}[Scale=MatchLowercase,ScaleAgain=1.013]
304 %\setmathfont{Asana Math}[Scale=MatchLowercase] 269 %\setmathfont{Asana Math}[Scale=MatchLowercase]
305 \setmathfont{TeX Gyre Pagella Math}[Scale=MatchLowercase] 270 \setmathfont{TeX Gyre Pagella Math}[Scale=MatchLowercase]
306 \@mdf@mono@inconsolatatrue 271 \@mdf@mono@inconsolatatrue
307 \fi 272 \fi
308 273
309 \if@mdf@WithCrimson 274 \if@mdf@WithCrimson
310 \RequirePackage{unicode-math} 275 \RequirePackage{unicode-math}
311 \defaultfontfeatures{Ligatures=TeX, Numbers={Lining,Tabular}} 276 \defaultfontfeatures{Ligatures=TeX, Numbers={Lining,Tabular}}
312 \setmainfont{Crimson Pro} 277 \setmainfont{Crimson Pro}
332 \if@mdf@WithDejaVu 297 \if@mdf@WithDejaVu
333 \RequirePackage{newunicodechar} 298 \RequirePackage{newunicodechar}
334 % automatically applied with Scale=MatchLowercase,... 299 % automatically applied with Scale=MatchLowercase,...
335 \RequirePackage[mono=true,serif=true,sans=true,math=true]{dejavu-otf} 300 \RequirePackage[mono=true,serif=true,sans=true,math=true]{dejavu-otf}
336 \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387 301 \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387
302 \fi
303
304 \if@mdf@WithMerriweather
305 \RequirePackage{unicode-math}
306 \linespread{1.06}
307 \defaultfontfeatures{%
308 Scale = 0.92,
309 Ligatures = TeX,
310 Numbers = {Lining,Tabular},
311 Extension = .otf,
312 }
313 \setmainfont{Merriweather}[%
314 UprightFont = *-Regular ,
315 ItalicFont = *-Italic ,
316 BoldFont = *-Bold ,
317 BoldItalicFont = *-BoldItalic
318 ]
319 \setsansfont{MerriweatherSans}[%
320 UprightFont = *-Regular ,
321 ItalicFont = *-Italic ,
322 BoldFont = *-Bold ,
323 BoldItalicFont = *-BoldItalic
324 ]
325 \defaultfontfeatures{}
326 \setmathfont{STIX Two Math}[Scale=MatchLowercase]
327 \@mdf@mono@hackmonotrue
328 \fi
329
330 \if@mdf@WithLiterata
331 \RequirePackage{unicode-math}
332 \defaultfontfeatures{%
333 Ligatures = TeX,
334 Numbers = {Lining,Tabular},
335 }
336 \setmainfont{Literata}
337 \setsansfont{Inter}[Scale=MatchLowercase]
338 \defaultfontfeatures{}
339 \setmathfont{Garamond-Math}[Scale=MatchLowercase]
340 \setmonofont{IBMPlexMono}[%
341 Extension = .otf,
342 Scale = MatchLowercase,
343 Ligatures = TeX,
344 UprightFont= *-Regular,
345 BoldFont = *-Bold,
346 ItalicFont = *-Italic,
347 BoldItalicFont = *-BoldItalic,
348 SlantedFont = *-Italic,
349 ]
350 \@mdf@augment@ibmplexmonotrue
337 \fi 351 \fi
338 352
339 \defaultfontfeatures{} 353 \defaultfontfeatures{}
340 354
341 \if@mdf@mono@dejavusansmono 355 \if@mdf@mono@dejavusansmono
542 verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},% 556 verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},%
543 verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}% 557 verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}%
544 {sphinx} 558 {sphinx}
545 \fi 559 \fi
546 560
561 \if@mdf@mono@hackmono
562 \defaultfontfeatures{Ligatures=TeX,Numbers={Lining,Tabular},Scale=MatchLowercase}
563 \RequirePackage{newunicodechar}
564 \setmonofont{Hack}
565 \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
566 UprightFont = *,
567 BoldFont = * Bold,
568 ItalicFont = * Oblique,
569 BoldItalicFont = * Bold Oblique,
570 Scale=MatchLowercase,
571 Ligatures=TeX,
572 ]
573 \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
574 UprightFont = *,
575 BoldFont = * Bold,
576 ItalicFont = * Oblique,
577 BoldItalicFont = * Bold Oblique,
578 Scale=MatchLowercase,
579 Ligatures=TeX,
580 ]
581 \newunicodechar{␣}{{\DejaVuSansMono ␣}}% U+2423
582 \newunicodechar{⌃}{{\DejaVuSansMono ⌃}}% U+2303
583 \newunicodechar{⎈}{{\DejaVuSansMono ⎈}}% U+2388
584 \newunicodechar{⌥}{{\DejaVuSansMono ⌥}}% U+2325
585 \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387
586 \newunicodechar{⌘}{{\DejaVuSansMono ⌘}}% U+2318
587 \newunicodechar{⏏}{{\DejaVuSansMono ⏏}}% U+23CF
588 \newunicodechar{⌫}{{\DejaVuSansMono ⌫}}% U+232B
589 \newunicodechar{⌦}{{\DejaVuSansMono ⌦}}% U+2326
590 \PassOptionsToPackage{%
591 verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},%
592 verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}%
593 {sphinx}
594 \fi
595
547 \if@mdf@mono@libertinusmono 596 \if@mdf@mono@libertinusmono
548 % This is stolen from libertinus-otf.sty! 597 % This is stolen from libertinus-otf.sty!
549 \setmonofont{LibertinusMono}[% 598 \setmonofont{LibertinusMono}[%
550 Ligatures = TeX, 599 Ligatures = TeX,
551 Numbers = {Lining, Tabular}, 600 Numbers = {Lining, Tabular},
561 BoldItalicFont = *-Regular, 610 BoldItalicFont = *-Regular,
562 BoldItalicFeatures={FakeSlant=0.2,RawFeature={embolden=3}}, 611 BoldItalicFeatures={FakeSlant=0.2,RawFeature={embolden=3}},
563 Extension = .otf, 612 Extension = .otf,
564 ] 613 ]
565 \@mdf@augment@libertinusmonotrue 614 \@mdf@augment@libertinusmonotrue
615 \fi
616
617 \if@mdf@augment@ibmplexmono
618 \RequirePackage{newunicodechar}
619 \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%
620 UprightFont = *,
621 BoldFont = * Bold,
622 ItalicFont = * Oblique,
623 BoldItalicFont = * Bold Oblique,
624 Scale=MatchLowercase,
625 Ligatures=TeX,
626 ]
627 \newfontfamily\DejaVuSansCondensed{DejaVu Sans Condensed}[%
628 UprightFont = *,
629 BoldFont = * Bold,
630 ItalicFont = * Oblique,
631 BoldItalicFont = * Bold Oblique,
632 Scale=MatchLowercase,
633 Ligatures=TeX,
634 ]
635 \newunicodechar{▷}{{\DejaVuSansMono ▷}}% U+25B7
636 \newunicodechar{∶}{{\DejaVuSansMono ∶}}% U+2236
637 \newunicodechar{◆}{{\DejaVuSansMono ◆}}% U+25C6
638 \newunicodechar{▪}{{\DejaVuSansMono ▪}}% U+25AA
639 \newunicodechar{⟵}{{\DejaVuSansMono ⟵}}% U+27F5
640 \newunicodechar{⟶}{{\DejaVuSansMono ⟶}}% U+27F6
641 \newunicodechar{⟷}{{\DejaVuSansMono ⟷}}% U+27F7
642 \newunicodechar{⇒}{{\DejaVuSansMono ⇒}}% U+21D2
643 \newunicodechar{⇔}{{\DejaVuSansMono ⇔}}% U+21D4
644 \newunicodechar{≟}{{\DejaVuSansMono ≟}}% U+225F
645 \newunicodechar{∈}{{\DejaVuSansMono ∈}}% U+2208
646 \newunicodechar{∌}{{\DejaVuSansMono ∌}}% U+220C
647 \newunicodechar{≙}{{\DejaVuSansMono ≙}}% U+2259
648 \newunicodechar{␣}{{\DejaVuSansMono ␣}}% U+2423
649 \newunicodechar{⇧}{{\DejaVuSansMono ⇧}}% U+21E7
650 \newunicodechar{⌃}{{\DejaVuSansMono ⌃}}% U+2303
651 \newunicodechar{⎈}{{\DejaVuSansMono ⎈}}% U+2388
652 \newunicodechar{⌥}{{\DejaVuSansMono ⌥}}% U+2325
653 \newunicodechar{⎇}{{\DejaVuSansCondensed ⎇}}% U+2387
654 \newunicodechar{⌘}{{\DejaVuSansMono ⌘}}% U+2318
655 \newunicodechar{⏏}{{\DejaVuSansMono ⏏}}% U+23CF
656 \newunicodechar{⌫}{{\DejaVuSansMono ⌫}}% U+232B
657 \newunicodechar{⌦}{{\DejaVuSansMono ⌦}}% U+2326
658 \newunicodechar{⇥}{{\DejaVuSansMono ⇥}}% U+21E5
659 \newunicodechar{⇤}{{\DejaVuSansMono ⇤}}% U+21E4
660 %\newunicodechar{^^^^2423}{{\DejaVuSansMono^^^^2423}}% U+2423
661 %\newunicodechar{␣}{\textvisiblespace}% U+2423
662 %\catcode`^^^^2423\active\protected\def^^^^2423{\textvisiblespace}
663
664 \PassOptionsToPackage{%
665 verbatimvisiblespace={\textcolor{red}{{\DejaVuSansMono^^^^2423}}},%
666 verbatimcontinued={\textcolor{red}{{\DejaVuSansMono^^^^21aa}}}}%
667 {sphinx}
566 \fi 668 \fi
567 669
568 \if@mdf@augment@libertinusmono 670 \if@mdf@augment@libertinusmono
569 \RequirePackage{newunicodechar} 671 \RequirePackage{newunicodechar}
570 \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[% 672 \newfontfamily\DejaVuSansMono{DejaVu Sans Mono}[%