diff options
Diffstat (limited to 'info/mathtrip/src/ChoixPolice.sty')
-rw-r--r-- | info/mathtrip/src/ChoixPolice.sty | 479 |
1 files changed, 479 insertions, 0 deletions
diff --git a/info/mathtrip/src/ChoixPolice.sty b/info/mathtrip/src/ChoixPolice.sty new file mode 100644 index 0000000000..ef2b066c4d --- /dev/null +++ b/info/mathtrip/src/ChoixPolice.sty @@ -0,0 +1,479 @@ +%This style file allows to easily switch between many fonts. +%It is particularly useful when working with 16bits TeX +%but it can be used with normal TeX too (with less +%font choices). +% +%This style uses options to determine the fonts to use. +% lmodern (or nothing) to choose the default font "lmmodern". +% cmunicode to use the "cmunicode" fonts. This fonts +% has been created with all the CM fonts for 8bits TeX +% and it is quite nice. THe characters are similar to lmmodern +% with more glyphs (greek, cyrillic IPA) and no math font. +% L'aspect des caractères est similaire à latin Modern. +% Some of the characters are based on the good fonts from BlueSky. +% didot to use GFS Didot with Asana Math for mathematic. +% When 8bits TeX is used, the package "gfsdidot" is loaded. +% lucida to use lucida (mathematic and standard) +% stix to use STIX2 fonts (Mathematic and Standard) +% cambria to use Cambria with Cambria Math +% Calibri is used for the sans serif font. +% dejavu to use DejaVu (serif) and the math fonts from GUST foundry. +% dejavusans to use DejaVu Sans for text and Math. To complement +% the LucidaBrightOT is used. When 8bits TeX is used, +% the package "arev" is loaded. +% neohellenic to use GFS Neo Hellenic with GFSNeoHellenicMath. +% +% +% +% +% — Normally, other sahpe (tt or sans) are Latin Modern or DejaVu. +% +% — Fonts "Latin Modern", "GFS Didot" and "Asana" are provided +% (in usul directories) with all TeX distributions. +% — The fonts «STIX» version 2 (similar to Times Roman) +% should be installed, after being downloaded from site +% «http://www.stixfonts.org/», in the usual directories of TeX. +% — The fonts family "Lucida" should be bought at TUG +% (https://www.tug.org) and installed in usual TeX directories. +% — The fonts "Cambria", "Cambria Math" and "Calibri" should be installed +% as system fonts. This is generally the case when Excel is installed. +% +% — For the TeX 8bits, the fonts lmmodern is used except when gfsdidot or arev is loaded. +% To use an other fonts, one can load the correct package after this style. +% Par exemple, \usepackage[charter]{mathdesign} +% +% — This code has been tested with XeLateX (TeX 16bits) and pdflatex (TeX 8bits). +\chardef\PoliceLatinModern=0 +\chardef\PoliceDidot=1 +\chardef\PoliceLucida=2 +\chardef\PoliceStixII=3 +\chardef\PoliceCambria=4 +\chardef\PoliceDejaVu=5 +\chardef\PoliceCmUnicode=6 +\chardef\PoliceDejavuSans=7 +\chardef\PoliceNeoHellenic=8 +%Useful to have an invalid value for a font. A such value can be used +%as an initializer or a delimiter of list +\chardef\PoliceInvalide=254 + +%The default font used to typeset the document if the wanted font +%is not found. If one change this font, he should change +%the macros '\PoliceParDefaut' and '\MainFontDocText' accordingly. +\chardef\PoliceDocumentParDefaut=\PoliceLatinModern +%The real font of the document +\chardef\PoliceDocument\PoliceDocumentParDefaut +%The wanted font of the document. This macro and the previous one +%have the same value if the font is found but might differ +%if the default font is used when the wanted font cannot be found. +\chardef\PoliceDesiree\PoliceLatinModern +\DeclareOption{lmodern}{\chardef\PoliceDocument\PoliceLatinModern + \chardef\PoliceDesiree\PoliceLatinModern} +\DeclareOption{didot}{\chardef\PoliceDocument\PoliceDidot + \chardef\PoliceDesiree\PoliceDidot} +\DeclareOption{lucida}{\chardef\PoliceDocument\PoliceLucida + \chardef\PoliceDesiree\PoliceLucida} +\DeclareOption{stix}{\chardef\PoliceDocument\PoliceStixII + \chardef\PoliceDesiree\PoliceStixII} +\DeclareOption{cambria}{\chardef\PoliceDocument\PoliceCambria + \chardef\PoliceDesiree\PoliceCambria} +\DeclareOption{dejavu}{\chardef\PoliceDocument\PoliceDejaVu + \chardef\PoliceDesiree\PoliceDejaVu} +\DeclareOption{cmunicode}{\chardef\PoliceDocument\PoliceCmUnicode + \chardef\PoliceDesiree\PoliceCmUnicode} +\DeclareOption{dejavusans}{\chardef\PoliceDocument\PoliceDejavuSans + \chardef\PoliceDesiree\PoliceDejavuSans} +\DeclareOption{neohellenic}{\chardef\PoliceDocument\PoliceNeoHellenic + \chardef\PoliceDesiree\PoliceNeoHellenic} +\ProcessOptions + +\usepackage{iftex} + +% +%-------------------------------------Macros provided by the style-------------------------- +% + +%This macro provides the default settings when no font is specified (for TeX Unicode only). +%The default is to use the font Latin Modern and generally since it is +%the current default from pdfTeX, XeTeX and LuaTeX, almost nothing +%should be done. +% +%Since this fonts does not provide the greek character, these one are taken +%from the very similar CM Unicode font. +% +%This Macro has no parameter. +% +%This macro modify the global variable/macro "\PoliceDocument" +\newcommand\PoliceParDefaut{% + \iftutex %16 bits TeX + %The default font is Latin Modern, always defined with 16 bits TeX. + %However, Greek is missing from Latin Modern. It will be taken from + %the almost identical font CM Unicode. + %The command «\greekfont» is used with "polyglossia" and + %probably "babel". + \newfontfamily\greekfont[Script=Greek]{cmunrm.otf}[% + Extension=.otf,% + UprightFont=*,% + BoldFont=cmunbx,% + ItalicFont=cmunti,% + BoldItalicFont=cmunbi]% + \else %8bits TeX + \RequirePackage{lmodern}% + \fi + \chardef\PoliceDocument\PoliceDocumentParDefaut +} + +%This macros contain the text to describe +%the default main font of the document. +% +%The macro has no parameter +\newcommand\MainFontDocText{% + \iftutex{Latin Modern (Unicode)}\else{Latin Modern (\TeX)}\fi +} + +%This macro typeset the name of the current set of fonts used to format +%the document. +%The name is similar to the option choosen but generally more suitable to be +%typeset in a document. +% +%To know, programmatically, the current font of the document, it's much +%better to use the macro "\PoliceDocument". +% +%The macro has no parameter. +\newcommand\MainDocFontName[1][\PoliceDocument]{ + \iftutex + \ifcase#1% + %Latin Modern + \MainFontDocText + \or + %Didot + GFS Didot, Asana Math% + \or + %Lucida + Lucida% + \or + %Stix version 2 + Stix 2% + \or + %Cambria + Cambria, Cambria Math% + \or + %DejaVu + DejaVu, TeX Gyre DejaVu Math% + \or + %CMUnicode + CMUnicode, Latin Modern Math% + \or + %DejaVuSans + \IfFontExistsTF{LucidaBrightMathOT.otf}{% + DejaVu Sans, Lucida Bright Math% + }{% + DejaVu Sans, DejaVu Sans Math% + }% + \or + %NeoHellenic + GFS NeoHellenic% + \else + \MainFontDocText + \fi + \else + %TeX standard + \ifx\PoliceDocument\PoliceDejavuSans + %Arev + Arev (\TeX)% + \else + \ifx\PoliceDocument\PoliceDidot + %Didot + GFS Didot (\TeX)% + \else + %The default, lmmodern + \MainFontDocText + \fi + \fi + \fi +} + +%This macro setup the definition to setup a font (in almost +%all the possible modes: Text, Math, Greek etc) in a 16 Bits LaTeX (lualatex,xelatex) +%and to setup the default font in 8bit TeX. +% +%The macro has 3 parameters: +% 1) the name of the font in a form usable by the command +% "\IfFontExistsTF" of the package "fontspec" +% 2) the set of command to define the fonts to be used +% 3) a set of commands used as a fallback in the case of the font +% is unavailable on a system +% +%Only the second parameter is used with 8 bits TeX. +\newcommand\ChoixPolice[3]{% + \iftutex %TeX 16 bits + \IfFontExistsTF{#1}{#2}{%Font wanted not found + \wlog{The font #1 is not found. The font '\MainFontDocText' will be used instead.}% + #3}% + \else %TeX 8bits + #2% + \fi +} + +%The following macros define the commands to be able to use the different +%available fonts in a document. Since they are so many fonts available, only +%the fonts with mathemathecal counterpart are defined. +\newcommand\ChoixDidot{% + \ChoixPolice{GFSDidot.otf}{% + \setmathfont{Asana-Math.otf}% + \setmainfont{GFSDidot}[% + Extension=.otf,% + UprightFont=*,% + BoldFont=*Bold,% + ItalicFont=*Italic,% + BoldItalicFont=*BoldItalic% + ]% + \setsansfont{DejaVuSans}[% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + Scale = MatchLowercase% + ]% + \setmonofont{DejaVuSansMono}[% main typewriter% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + }{\PoliceParDefaut}% +} +\newcommand\ChoixLucida{% + \ChoixPolice{LucidaBrightOT.otf}{% + % Slightly reduce the size. + %\defaultfontfeatures{Scale=.92} + \setmathfont{LucidaBrightMathOT.otf}% + \setmathfont[version=bold]{LucidaBrightMathOT-Demi.otf}% + % + % The explicit .otf extension tells the engines to find the font via% + % filenames in the TeX trees, rather than as system-installed fonts.% + % + \setmainfont{LucidaBrightOT}[% main rm% + Extension=.otf,% + UprightFont=*,% + ItalicFont=*-Italic,% + BoldFont=*-Demi,% + BoldItalicFont=*-DemiItalic,% + ]% + % + \setsansfont{LucidaSansOT}[% main sans% + Extension=.otf,% + UprightFont=*,% + ItalicFont=*-Italic,% + BoldFont=*-Demi,% + BoldItalicFont=*-DemiItalic,% + ]% + % + \setmonofont{LucidaSansTypewriterOT.otf}[% main typewriter% + Extension=.otf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + % + % + % The specialized one-off fonts:% + \newfontface\LucidaBlackletter{LucidaBlackletterOT.otf}% + \newfontface\LucidaCalligraphy{LucidaCalligraphyOT.otf}% + \newfontface\LucidaHandwriting{LucidaHandwritingOT.otf}% + }{\PoliceParDefaut}% +} +\newcommand\ChoixStix{% + \ChoixPolice{STIX2Text-Regular.otf}{% + %Stix version 2 (the first version working with TeX) + \setmathfont{STIX2Math.otf}% + \setmainfont{STIX2Text}[% + Extension=.otf,% + UprightFont=*-Regular,% + ItalicFont=*-Italic,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldItalic,% + ]% + \setsansfont{DejaVuSans}[% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + \setmonofont{DejaVuSansMono}[% main typewriter% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + %The macro "\greekfont" is used with "polyglossia" and "babel"% + \newfontfamily\greekfont[Script=Greek]{LinLibertine_R.otf}[% + Extension=.otf,% + UprightFont=*,% + BoldFont=LinLibertine_RB,% + ItalicFont=LinLibertine_RI,% + BoldItalicFont=LinLibertine_RBI]% + }{\PoliceParDefaut}% +} +\newcommand\ChoixCambria{% + \ChoixPolice{Cambria}{% + \setmathfont{Cambria Math}% + \setmainfont{Cambria}% + \setsansfont{Calibri}% + \setmonofont{DejaVuSansMono}[% main typewriter% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + }{\PoliceParDefaut}% +} +\newcommand\ChoixDejaVu{% + \ChoixPolice{DejaVuSerif.ttf}{% + \setmathfont{texgyredejavu-math.otf}% + \setmainfont{DejaVuSerif}[% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Italic,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldItalic,% + ]% + \setsansfont{DejaVuSans}[% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + \setmonofont{DejaVuSansMono}[% main typewriter% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + }{\PoliceParDefaut}% +} +\newcommand\ChoixCMUnicode{% + \ChoixPolice{cmunrm.otf}{% + %Latin Modern is used for math. For the rest, the CM Unicode (very similar to Latin + %Modern is used). CM Unicode has more characters than Latin Modern + \setmainfont{cmunrm}[% + Extension=.otf,% + UprightFont=*,% + BoldFont=cmunbx,% + ItalicFont=cmunti,% + BoldItalicFont=cmunbi]% + \setsansfont{cmunss}[% + Extension=.otf,% + UprightFont=*,% + BoldFont=cmunsx,% + ItalicFont=cmunsi,% + BoldItalicFont=cmunso]% + \setmonofont{cmuntt}[% + Extension=.otf,% + UprightFont=*,% + BoldFont=cmuntb,% + ItalicFont=cmunst,% + BoldItalicFont=cmuntx]% + }{\PoliceParDefaut}% +} +\newcommand\ChoixDejaVuSans{% + \ChoixPolice{DejaVuSans.ttf}{% + \IfFontExistsTF{LucidaBrightMathOT.otf}{% + \setmathfont{LucidaBrightMathOT.otf}%Font color match better with dejaVuSans + }{% + \setmathfont{DejaVuSans.ttf}% + }% + \setmathfont{DejaVuSans.ttf}[range=up]% + \setmathfont{DejaVuSans.ttf}[range=bb->bfsfup]% + \setmathfont{DejaVuSans-Oblique.ttf}[range=it]% + \setmathfont{DejaVuSansMono.ttf}[range=tt]% + \setmathfont{DejaVuSans-Bold.ttf}[range=bfup]% + \setmathfont{DejaVuSans-BoldOblique.ttf}[range=bfit]% + \setmainfont{DejaVuSerif}[% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Italic,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldItalic,% + ]% + \setsansfont{DejaVuSans}[% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + \setmonofont{DejaVuSansMono}[% main typewriter% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + \renewcommand\familydefault{\sfdefault}% + }{\PoliceParDefaut}% +} +\newcommand\ChoixNeohellenic{% + \ChoixPolice{GFSNeohellenic.otf}{% + %Load GFS Neo Hellenic as the sans font and use the GFS Neo Hellenic + %for math. Do some specific adaptation for the GFS Neo Hellenic at 12pt. + \RequirePackage{gfsneohellenicot}% + \setmonofont{DejaVuSansMono}[% main typewriter% + Extension=.ttf,% + UprightFont=*,% + ItalicFont=*-Oblique,% + BoldFont=*-Bold,% + BoldItalicFont=*-BoldOblique,% + ]% + \renewcommand\familydefault{\sfdefault}% + }{\PoliceParDefaut}% +} +% +%--------------------------------------Code executed when loading style---------------------- +% +\iftutex + \usepackage{unicode-math} + \usepackage{fontspec} + \defaultfontfeatures{Ligatures=TeX} + \ifcase\PoliceDocument + %Latin Modern is the default font + \PoliceParDefaut + \or + \ChoixDidot + \or + \ChoixLucida + \or + \ChoixStix + \or + \ChoixCambria + \or + \ChoixDejaVu + \or + \ChoixCMUnicode + \or + \ChoixDejaVuSans + \or + \ChoixNeohellenic + \else + \PoliceParDefaut + \fi + \else + %TeX standard + \RequirePackage{amssymb} + \ifx\PoliceDocument\PoliceDejavuSans + \RequirePackage{arev} + \else + \ifx\PoliceDocument\PoliceDidot + \RequirePackage{gfsdidot} + \else + \PoliceParDefaut + \fi + \fi + \fi |