%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