diff options
Diffstat (limited to 'info/mathtrip/doc/GfsDidotSourire.sty')
-rw-r--r-- | info/mathtrip/doc/GfsDidotSourire.sty | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/info/mathtrip/doc/GfsDidotSourire.sty b/info/mathtrip/doc/GfsDidotSourire.sty new file mode 100644 index 0000000000..297ade2f7a --- /dev/null +++ b/info/mathtrip/doc/GfsDidotSourire.sty @@ -0,0 +1,294 @@ +%% +%% This is file `GfsDidotSourire.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% GfsDidotSourire.dtx (with options: `package') +%% ---------------------------------------------------------------- +%% GfsDidotSourire --- Command to use the Gfs Didot fonts in the documents +%% of Sourire Informatique. +%% E-mail: tech.support@sourire.ch +%% Released under the LaTeX Project Public License v1.3c or later +%% See http://www.latex-project.org/lppl.txt +%% ---------------------------------------------------------------- +\RequirePackage{xparse,expl3,l3keys2e} +\ProvidesExplPackage {GfsDidotSourire} {2020-08-11} {1.0} + {Provide commands to setup and manipulate the Gfs + Didot font within the documents produced by Sourire + Informatique.} +\AtBeginDocument{\ExplSyntaxOff} +\tl_const:Nn \c__GfsDidotSO_GfsDidotRm_tl {GFSDidot} +\tl_const:Nn \c__GfsDidotSO_GfsDidotSf_tl {GFSNeohellenic} +\tl_const:Nn \c__GfsDidotSO_LucidaSfIt_tl {LucidaSansOT-Italic} +\tl_const:Nn \c__GfsDidotSO_LucidaSfItBx_tl {LucidaSansOT-DemiItalic} +\tl_const:Nn \c__GfsDidotSO_LucidaExtension_tl {.otf} +\tl_const:Nn \c__GfsDidotSO_lmSfIt_tl {lmsans10-oblique} +\tl_const:Nn \c__GfsDidotSO_lmSfItBx_tl {lmsans10-boldoblique} +\tl_const:Nn \c__GfsDidotSO_lmExtension_tl {.otf} +\tl_const:Nn \c__GfsDidotSO_MathRm_tl {Asana-Math} +\tl_const:Nn \c__GfsDidotSO_MathSf_tl {GFSNeohellenicMath} +\tl_const:Nn \c__GfsDidotSO_MathExtension_tl {.otf} +\tl_const:Nn \c__GfsDidotSO_GfsDidotTt_tl {DejaVuSansMono} +\str_const:Nn \c__GfsDidotSO_HtmlMode_str {HTML} +\str_const:Nn \c__GfsDidotSO_PapierMode_str {PAPIER} +\str_const:Nn \c__GfsDidotSO_NoneMode_str {AUCUN} +\cs_set:Npx \GfsDidotModeHtml { \str_use:N \c__GfsDidotSO_HtmlMode_str } +\cs_set:Npx \GfsDidotModePapier { \str_use:N \c__GfsDidotSO_PapierMode_str } +\cs_set:Npx \GfsDidotModeNone { \str_use:N \c__GfsDidotSO_NoneMode_str } +\bool_new:N \g__GfsDidotSO_NeoHellenicOnly_bool +\bool_set_false:N \g__GfsDidotSO_NeoHellenicOnly_bool +\bool_new:N \g__GfsDidotSO_greekfont_bool +\bool_set_true:N \g__GfsDidotSO_greekfont_bool +\bool_new:N \g__GfsDidotSO_DefAuto_bool +\bool_set_true:N \g__GfsDidotSO_DefAuto_bool +\bool_new:N \g__GfsDidotSO_MathFonts_bool +\bool_set_true:N \g__GfsDidotSO_MathFonts_bool +\tl_new:N \g__GfsDidotSO_mode_str +\tl_set:Nx \g__GfsDidotSO_mode_str { \c__GfsDidotSO_PapierMode_str } +\tl_set:Nx \l__GfsDidotSO_mode_str { \c__GfsDidotSO_PapierMode_str } +\tl_new:N \g__GfsDidotSO_SfItReplSpec_tl +\tl_new:N \g__GfsDidotSO_MathFontName_tl +\tl_set:Nx \g__GfsDidotSO_MathFontName_tl { \tl_use:N \c__GfsDidotSO_MathRm_tl } +\tl_new:N \g__GfsDidotSO_gfsdidotRmSpec_tl +\tl_new:N \g__GfsDidotSO_gfsdidotSfSpec_tl +\tl_new:N \g__GfsDidotSO_gfsdidotTtSpec_tl +\tl_new:N \g__GfsDidotSO_GreekRmSpec_tl +\tl_new:N \g__GfsDidotSO_GreekSfSpec_tl +\tl_new:N \g__GfsDidotSO_GreekTtSpec_tl +\tl_new:N \g__GfsDidotSO_SfItReplLuSpec_tl +\tl_new:N \g__GfsDidotSO_SfItReplLmSpec_tl +\tl_new:N \g__GfsDidotSO_MathFontSpec_tl +\tl_set:Nx \g__GfsDidotSO_gfsdidotRmSpec_tl +{ + Extension=.otf, + UprightFont=*, + BoldFont=*Bold, + ItalicFont=*Italic, + BoldItalicFont=*BoldItalic, +} +\tl_set:Nx \g__GfsDidotSO_gfsdidotSfSpec_tl +{ + Extension=.otf, + UprightFont=*, + BoldFont=*Bold, + BoldItalicFont=*BoldIt, + ItalicFont=*It, + RawFeature=+pnum,% variable width numbers + WordSpace={0.75,0.75,1}, + Scale=MatchLowercase, +} +\tl_set:Nx \g__GfsDidotSO_gfsdidotTtSpec_tl +{ + Extension=.ttf, + UprightFont=*, + BoldFont=*-Bold, + ItalicFont=*-Oblique, + BoldItalicFont=*-BoldOblique, + Scale=MatchLowercase, +} +\tl_set:Nx \g__GfsDidotSO_GreekRmSpec_tl +{ + Script=Greek, + \tl_use:N \g__GfsDidotSO_gfsdidotRmSpec_tl +} +\tl_set:Nx \g__GfsDidotSO_GreekSfSpec_tl +{ + Script=Greek, + \tl_use:N \g__GfsDidotSO_gfsdidotSfSpec_tl +} +\tl_set:Nx \g__GfsDidotSO_GreekTtSpec_tl +{ + Script=Greek, + \tl_use:N \g__GfsDidotSO_gfsdidotTtSpec_tl +} +\tl_set:Nx \g__GfsDidotSO_SfItReplLuSpec_tl +{ + ItalicFont=\tl_use:N \c__GfsDidotSO_LucidaSfIt_tl + \tl_use:N \c__GfsDidotSO_LucidaExtension_tl, + BoldItalicFont=\tl_use:N \c__GfsDidotSO_LucidaSfItBx_tl + \tl_use:N \c__GfsDidotSO_LucidaExtension_tl, + Scale = MatchLowercase, +} +\tl_set:Nx \g__GfsDidotSO_SfItReplLmSpec_tl +{ + ItalicFont=\tl_use:N \c__GfsDidotSO_lmSfIt_tl + \tl_use:N \c__GfsDidotSO_lmExtension_tl, + BoldItalicFont=\tl_use:N \c__GfsDidotSO_lmSfItBx_tl + \tl_use:N \c__GfsDidotSO_lmExtension_tl, + Scale = MatchLowercase, +} +\tl_set:Nx \g__GfsDidotSO_MathFontSpec_tl +{ + Extension=.otf, + Scale = MatchLowercase, +} +\tl_set:Nx \g__GfsDidotSO_SfItReplSpec_tl { \tl_use:N \g__GfsDidotSO_SfItReplLuSpec_tl } +\cs_new:Npn \__GfsDidotSO_ifModeSpecifiable:nTF #1#2#3 { + \group_begin: + \cs_set:Npx \ModeProductionDoc { #1 } + \cs_set:Npn \ModeSpecifiable { #2 } + \cs_set:Npn \ModeNonSpecifiable { #3 } + \str_if_eq:VVTF \ModeProductionDoc \c__GfsDidotSO_NoneMode_str + { \ModeNonSpecifiable } + { \ModeSpecifiable } +} +\cs_new:Npn \__GfsDidotSO_tutex_p: { \sys_if_engine_luatex_p: || + \sys_if_engine_xetex_p:} +\cs_new:Npn \__GfsDidotSO_fontspec_p: { ! (\cs_if_free_p:N \setfontface && + \cs_if_free_p:N \setfontfamily ) } +\DeclareDocumentCommand \GfsDidotSetup { m } +{ \keys_set:nn { GfsDidotSourire } { #1 } } +\DeclareDocumentCommand \DefCmdGfsDidot { O{\c__GfsDidotSO_NoneMode_str} } +{ +\bool_if:nTF { \__GfsDidotSO_tutex_p: } {%TeX Unicode + \bool_if:nTF {\__GfsDidotSO_fontspec_p:} { + \setfontfamily\GfsDidotRm{\tl_use:N \c__GfsDidotSO_GfsDidotRm_tl}% + [\tl_use:N \g__GfsDidotSO_gfsdidotRmSpec_tl,Scale=MatchLowercase,] + \bool_if:nF { \g__GfsDidotSO_NeoHellenicOnly_bool }{% + \tl_gput_right:Nx \g__GfsDidotSO_gfsdidotSfSpec_tl + { \g__GfsDidotSO_SfItReplSpec_tl }% + } + \setfontfamily\GfsDidotSf{\tl_use:N \c__GfsDidotSO_GfsDidotSf_tl}% + [\tl_use:N \g__GfsDidotSO_gfsdidotSfSpec_tl,% + Scale=MatchLowercase,]% + \setfontfamily\GfsDidotTt{\tl_use:N\c__GfsDidotSO_GfsDidotTt_tl}% + [\tl_use:N \g__GfsDidotSO_gfsdidotTtSpec_tl,% + Scale=MatchLowercase,]% + \bool_if:nT { \g__GfsDidotSO_greekfont_bool }{% + \setfontfamily\greekfont{\tl_use:N \c__GfsDidotSO_GfsDidotRm_tl}% + [ \tl_use:N \g__GfsDidotSO_GreekRmSpec_tl ] + \setfontfamily\greekfontsf{\tl_use:N \c__GfsDidotSO_GfsDidotSf_tl}% + [ \tl_use:N \g__GfsDidotSO_GreekSfSpec_tl ] + \setfontfamily\greekfonttt{\tl_use:N \c__GfsDidotSO_GfsDidotTt_tl}% + [ \tl_use:N \g__GfsDidotSO_GreekTtSpec_tl ] + }% + }% + {%No "fontspec": normally impossible, "fontspec" + %is always loaded! + \bool_if:nT { \g__GfsDidotSO_greekfont_bool }{% + \DeclareDocumentCommand\greekfont{}{\relax} + \DeclareDocumentCommand\greekfontsf{}{\relax} + \DeclareDocumentCommand\greekfonttt{}{\relax} + } + \DeclareDocumentCommand\GfsDidotRm{}{\rmfamily} + \DeclareDocumentCommand\GfsDidotSf{}{\sffamily} + \DeclareDocumentCommand\GfsDidotTt{}{\ttfamily} + } + }{% TeX standards + \bool_if:nT { \g__GfsDidotSO_greekfont_bool }{% + \DeclareDocumentCommand\greekfont{}{\relax} + \DeclareDocumentCommand\greekfontsf{}{\relax} + \DeclareDocumentCommand\greekfonttt{}{\relax} + } + \DeclareDocumentCommand\GfsDidotRm{}{\rmfamily} + \DeclareDocumentCommand\GfsDidotSf{}{\sffamily} + \DeclareDocumentCommand\GfsDidotTt{}{\ttfamily} + } +} +\DeclareDocumentCommand \PoliceGfsDidot { O{\c__GfsDidotSO_NoneMode_str} } +{ + \bool_if:nTF { \__GfsDidotSO_tutex_p: } {%TeX Unicode + \setmainfont{\tl_use:N \c__GfsDidotSO_GfsDidotRm_tl}% + [\tl_use:N \g__GfsDidotSO_gfsdidotRmSpec_tl] + \bool_if:nF { \g__GfsDidotSO_NeoHellenicOnly_bool }{% + \tl_gput_right:Nx \g__GfsDidotSO_gfsdidotSfSpec_tl { \g__GfsDidotSO_SfItReplSpec_tl } + } + \setsansfont{\tl_use:N \c__GfsDidotSO_GfsDidotSf_tl}% + [\tl_use:N \g__GfsDidotSO_gfsdidotSfSpec_tl] + \setmonofont{\tl_use:N\c__GfsDidotSO_GfsDidotTt_tl}% + [\tl_use:N \g__GfsDidotSO_gfsdidotTtSpec_tl]% + \DefCmdGfsDidot + }{% + \DefCmdGfsDidot + }% +} +\DeclareDocumentCommand \PoliceGfsDidotMath { O{\c__GfsDidotSO_NoneMode_str} } +{ + \bool_if:nTF { \__GfsDidotSO_tutex_p: } {%TeX Unicode + \bool_if:nTF { \g__GfsDidotSO_MathFonts_bool } + { \use:x { + \setmathfont { \tl_use:N \g__GfsDidotSO_MathFontName_tl } + [\tl_use:N \g__GfsDidotSO_MathFontSpec_tl] + } + } + { \relax }% + }{% + \relax + }% +} +\keys_define:nn { GfsDidotSourire } +{ + NeoHellenicOnly .bool_set:N = \g__GfsDidotSO_NeoHellenicOnly_bool, + math-fonts .bool_set:N = \g__GfsDidotSO_MathFonts_bool, + polygrec .bool_set:N = \g__GfsDidotSO_greekfont_bool, + math .choice:, + math / assana .code:n = \tl_set:Nx \g__GfsDidotSO_MathFontName_tl + { \tl_use:N \c__GfsDidotSO_MathRf_tl }, + math / neohellenic .code:n = \tl_set:Nx \g__GfsDidotSO_MathFontName_tl + { \tl_use:N \c__GfsDidotSO_MathSf_tl }, + SfItRepl .choice:, + SfItRepl / lucida .code:n = \tl_set:Nx \g__GfsDidotSO_SfItReplSpec_tl + { \tl_use:N \g__GfsDidotSO_SfItReplLuSpec_tl }, + SfItRepl / lm .code:n = \tl_set:Nx \g__GfsDidotSO_SfItReplSpec_tl + { \tl_use:N \g__GfsDidotSO_SfItReplLmSpec_tl }, + def .choice:, + def / auto .code:n = \bool_gset_true:N \g__GfsDidotSO_DefAuto_bool, + def / manuel .code:n = \bool_gset_false:N \g__GfsDidotSO_DefAuto_bool, + mode .choice:, + mode / PAPIER .code:n = \tl_gset:Nx \g__GfsDidotSO_mode_str {#1}, + mode / HTML .code:n = \tl_gset:Nx \g__GfsDidotSO_mode_str {#1}, +} +\ProcessKeysOptions { GfsDidotSourire } +\bool_if:nTF { \__GfsDidotSO_tutex_p: } { + \RequirePackage{fontspec} + \bool_if:nT { \g__GfsDidotSO_MathFonts_bool } + { \RequirePackage{unicode-math} } +} + {\RequirePackage{DejaVuSansMono} + \RequirePackage{gfsneohellenic} + \RequirePackage{gfsdidot}} +\bool_log:N \g__GfsDidotSO_NeoHellenicOnly_bool +\bool_log:N \g__GfsDidotSO_DefAuto_bool +\bool_log:N \g__GfsDidotSO_greekfont_bool +\bool_log:N \g__GfsDidotSO_MathFonts_bool +\str_log:N \g__GfsDidotSO_mode_str +\tl_log:N \c__GfsDidotSO_GfsDidotRm_tl +\tl_log:N \g__GfsDidotSO_gfsdidotRmSpec_tl +\tl_log:N \g__GfsDidotSO_GreekRmSpec_tl +\tl_log:N \c__GfsDidotSO_GfsDidotSf_tl +\tl_log:N \g__GfsDidotSO_gfsdidotSfSpec_tl +\tl_log:N \g__GfsDidotSO_GreekSfSpec_tl +\tl_log:N \c__GfsDidotSO_GfsDidotTt_tl +\tl_log:N \g__GfsDidotSO_gfsdidotTtSpec_tl +\tl_log:N \g__GfsDidotSO_GreekTtSpec_tl +\tl_log:N \g__GfsDidotSO_MathFontName_tl +\tl_log:N \g__GfsDidotSO_MathFontSpec_tl +\bool_if:NT \g__GfsDidotSO_DefAuto_bool {% + \AtBeginDocument{% + \PoliceGfsDidot[\tl_use:N \g__GfsDidotSO_mode_str]% + \PoliceGfsDidotMath[\tl_use:N \g__GfsDidotSO_mode_str]% + } +} +%% +%% Copyright (C) 2020 by Alain Aubord <alain.aubord@sourire.ch> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% tex.support@sourire.ch. +%% +%% This work consists of the file GfsDidotSourire.dtx +%% and the derived files GfsDidotSourire.ins, +%% prtGfsDidotSourire.sty, +%% testSimpleGfsDidot.tex, +%% testGfsDidot.tex, +%% GfsDidotSourire.pdf and +%% GfsDidotSourire.sty. +%% +%% End of file `GfsDidotSourire.sty'. |