diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty | 450 |
1 files changed, 450 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty b/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty new file mode 100644 index 00000000000..6fcb483dbac --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/letgut/letgut-banner.sty @@ -0,0 +1,450 @@ +% This is file `letgut.cls', +% generated with the Emacs Org-babel utility. +% +% The original source file is letgut-banner.org +% +% -------------:| --------------------------------------------------- +% letgut-banner:| Package for the banner of the newsletter +% | “La Lettre GUTenberg” +% Author:| Association GUTenberg +% E-mail:| secretariat@gutenberg.eu.org +% License:| Released under the LaTeX Project Public License +% | v1.3c or later +% See:| http://www.latex-project.org/lppl.txt +% +% Copyright (C) 1994-2022 by Association GUTenberg +% <secretariat@gutenberg.eu.org> +% +% 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 Association GUTenberg. +\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\ProvidesExplPackage{letgut-banner} +{2022-03-18} +{0.9} +{ + Package for the banner of the newsletter “La Lettre de GUTenberg” +} +\RequirePackage{l3keys2e} +\RequirePackage{xcolor} +\RequirePackage{accsupp} +\keys_define:nn { letgut-banner } +{ + , pagecolor .clist_gset:N = \g__letgutbanner_pagecolor_clist + , pagecolor .initial:n = { 1,1,1 } +} +\ProcessKeysOptions { letgut-banner } +\AddToHook{begindocument}{ +\cs_generate_variant:Nn \color_fill:nn { nV } +\dim_new:N \g__letgutbanner_area_height_dim +\dim_new:N \g__letgutbanner_La_height_dim +\dim_new:N \g__letgutbanner_La_depth_dim +\dim_new:N \g__letgutbanner_La_yoffset_dim +\dim_new:N \g__letgutbanner_banner_vertical_contents_width_dim +\dim_new:N \g__letgutbanner_largest_LETR_box_height_dim +\dim_new:N \g__letgutbanner_between_letters_yoffset_dim +\dim_new:N \g__letgutbanner_between_letters_vertical_space_dim +\dim_new:N \g__letgutbanner_banner_padding_dim +\dim_if_exist:NF \g__letgutbanner_first_page_shrink_dim { + \dim_new:N \g__letgutbanner_first_page_shrink_dim +} +\cs_generate_variant:Nn \dim_const:Nn { NV } +\dim_if_exist:NTF \c__letgut_textheight_dim { + \dim_const:NV \c__letgutbanner_textheight_dim + \c__letgut_textheight_dim +}{ + \dim_const:Nn \c__letgutbanner_textheight_dim + { 25cm } +} +\dim_if_exist:NTF \c__letgut_textwidth_dim { + \dim_const:NV \c__letgutbanner_textwidth_dim + \c__letgut_textwidth_dim +}{ + \dim_const:Nn \c__letgutbanner_textwidth_dim + { 14cm } +} +\dim_if_exist:NTF \c__letgut_lmargin_dim { + \dim_const:NV \c__letgutbanner_lmargin_dim + \c__letgut_lmargin_dim +}{ + \dim_const:Nn \c__letgutbanner_lmargin_dim + { 5cm } +} +\dim_if_exist:NTF \c__letgut_tmargin_dim { + \dim_const:NV \c__letgutbanner_tmargin_dim + \c__letgut_tmargin_dim +}{ + \dim_const:Nn \c__letgutbanner_tmargin_dim + { 2.92cm } + % \dim_const:Nn \c__letgutbanner_tmargin_dim + % { 3cm } +} +\dim_if_exist:NTF \c__letgut_head_dim { + \dim_const:NV \c__letgutbanner_head_dim + \c__letgut_head_dim +}{ + \dim_const:Nn \c__letgutbanner_head_dim + { 0.6cm } +} +\dim_if_exist:NTF \c__letgut_headsep_dim { + \dim_const:NV \c__letgutbanner_headsep_dim + \c__letgut_headsep_dim +}{ + \dim_const:Nn \c__letgutbanner_headsep_dim + { 0.82cm } + % \dim_const:Nn \c__letgutbanner_headsep_dim + % { 0.9cm } +} +\dim_if_exist:NTF \c__letgut_marginparwidth_dim { + \dim_const:NV \c__letgutbanner_marginparwidth_dim + \c__letgut_marginparwidth_dim +}{ + \dim_const:Nn \c__letgutbanner_marginparwidth_dim + { 3.74cm } +} +\dim_if_exist:NTF \c__letgut_banner_thickness_dim { + \dim_const:NV \c__letgutbanner_banner_thickness_dim + \c__letgut_banner_thickness_dim +}{ + \dim_const:Nn \c__letgutbanner_banner_thickness_dim + { 4cm } +} +\dim_if_exist:NTF \c__letgut_banner_height_dim { + \dim_const:NV \c__letgutbanner_banner_height_dim + \c__letgut_banner_height_dim +}{ + \dim_const:Nn \c__letgutbanner_banner_height_dim { + \c__letgutbanner_textheight_dim + + + 3cm + } +} +\dim_const:Nn \c__letgutbanner_banner_padding_dim { .25cm } +\dim_const:Nn \c__letgutbanner_banner_width_dim { + \c__letgutbanner_textwidth_dim + + + ( + \c__letgutbanner_banner_thickness_dim + + + \c__letgutbanner_lmargin_dim + )/2 +} +\dim_const:Nn +\c__letgutbanner_banner_vertical_contents_width_dim { + \c__letgutbanner_banner_thickness_dim + - + 2\c__letgutbanner_banner_padding_dim +} +\dim_const:Nn +\c__letgutbanner_banner_horizontal_contents_width_dim { + \c__letgutbanner_textwidth_dim + - ( + \c__letgutbanner_banner_thickness_dim + - + \c__letgutbanner_lmargin_dim + )/2 + - + \c__letgutbanner_banner_padding_dim +} +\box_new:N \g__letgutbanner_L_box +\box_new:N \g__letgutbanner_E_box +\box_new:N \g__letgutbanner_T_box +\box_new:N \g__letgutbanner_R_box +\box_new:N \g__letgutbanner_La_box +\box_new:N \g__letgutbanner_GUTenberg_box +\box_new:N \g__letgutbanner_largest_LETR_box +\box_new:N \g__letgutbanner_g_box +\fp_const:Nn \c__letgutbanner_leading_minimum_percent_fp { 0.15 } +\fp_const:Nn \c__letgutbanner_leading_La_factor_fp { 1.5 } +\geometry{ + asymmetric, + textheight = \c__letgutbanner_textheight_dim, + textwidth = \c__letgutbanner_textwidth_dim, + lmargin = \c__letgutbanner_lmargin_dim, + tmargin = \c__letgutbanner_tmargin_dim, + head = \c__letgutbanner_head_dim, + headsep = \c__letgutbanner_headsep_dim, + marginparwidth= \c__letgutbanner_marginparwidth_dim, + % showframe, + % verbose, +} +\hbox_gset:Nn \g__letgutbanner_L_box { \textbf{L} } +\hbox_gset:Nn \g__letgutbanner_E_box { \textbf{E} } +\hbox_gset:Nn \g__letgutbanner_T_box { \textbf{T} } +\hbox_gset:Nn \g__letgutbanner_R_box { \textbf{R} } +\hbox_gset:Nn \g__letgutbanner_La_box { \textbf{\textit{La}} } +\hbox_gset:Nn \g__letgutbanner_GUTenberg_box { + \textbf{\textit{GUTenberg}} +} +\hbox_gset:Nn \g__letgutbanner_g_box { \textbf{g} } +\dim_const:Nn \c__letgutbanner_L_width_dim { + \box_wd:N \g__letgutbanner_L_box +} +\dim_const:Nn \c__letgutbanner_E_width_dim { + \box_wd:N \g__letgutbanner_E_box +} +\dim_const:Nn \c__letgutbanner_T_width_dim { + \box_wd:N \g__letgutbanner_T_box +} +\dim_const:Nn \c__letgutbanner_R_width_dim { + \box_wd:N \g__letgutbanner_R_box +} +\dim_gset:Nn \g_tmpa_dim { + \fp_eval:n { + max ( + \c__letgutbanner_L_width_dim, + \c__letgutbanner_E_width_dim, + \c__letgutbanner_T_width_dim, + \c__letgutbanner_R_width_dim, + ) + }pt +} +\box_gset_eq:NN \g__letgutbanner_largest_LETR_box \dim_case:nnF +{ \g_tmpa_dim } +{ + { \c__letgutbanner_L_width_dim } { \g__letgutbanner_L_box } + { \c__letgutbanner_E_width_dim } { \g__letgutbanner_E_box } + { \c__letgutbanner_T_width_dim } { \g__letgutbanner_T_box } + { \c__letgutbanner_R_width_dim } { \g__letgutbanner_R_box } +} +{ No~ idea! } +\box_gresize_to_wd:Nn \g__letgutbanner_GUTenberg_box { + \c__letgutbanner_banner_horizontal_contents_width_dim +} +\dim_const:Nn \c__letgutbanner_GUTenberg_height_dim { + \box_ht:N \g__letgutbanner_GUTenberg_box +} +\dim_const:Nn \c__letgutbanner_GUTenberg_depth_dim { + \box_dp:N \g__letgutbanner_GUTenberg_box +} +\dim_const:Nn \c__letgutbanner_GUTenberg_yoffset_dim { + ( + \c__letgutbanner_banner_thickness_dim + - + \c__letgutbanner_GUTenberg_height_dim + + + \c__letgutbanner_GUTenberg_depth_dim + )/2 +} +\dim_gset:Nn +\g__letgutbanner_banner_vertical_contents_width_dim +\c__letgutbanner_banner_vertical_contents_width_dim +\dim_do_until:nNnn { + \g__letgutbanner_between_letters_vertical_space_dim +} +> +{ + \fp_use:N\c__letgutbanner_leading_minimum_percent_fp + \g__letgutbanner_largest_LETR_box_height_dim +}{ +\box_gresize_to_wd:Nn \g__letgutbanner_largest_LETR_box { + \g__letgutbanner_banner_vertical_contents_width_dim +} +\dim_gset:Nn \g__letgutbanner_largest_LETR_box_height_dim { + \box_ht:N \g__letgutbanner_largest_LETR_box +} +\box_gresize_to_ht:Nn \g__letgutbanner_L_box { + \g__letgutbanner_largest_LETR_box_height_dim +} +\box_gresize_to_ht:Nn \g__letgutbanner_E_box { + \g__letgutbanner_largest_LETR_box_height_dim +} +\box_gresize_to_ht:Nn \g__letgutbanner_T_box { + \g__letgutbanner_largest_LETR_box_height_dim +} +\box_gresize_to_ht:Nn \g__letgutbanner_R_box { + \g__letgutbanner_largest_LETR_box_height_dim +} +\box_gresize_to_wd:Nn \g__letgutbanner_La_box { + \g__letgutbanner_banner_vertical_contents_width_dim +} +\dim_gset:Nn \g__letgutbanner_La_height_dim { + \box_ht:N \g__letgutbanner_La_box +} +\dim_gset:Nn \g__letgutbanner_La_depth_dim { + \box_dp:N \g__letgutbanner_La_box +} +\dim_gset:Nn \g__letgutbanner_La_yoffset_dim { + \c__letgutbanner_banner_height_dim + - + \c__letgutbanner_GUTenberg_yoffset_dim + - + \g__letgutbanner_La_height_dim + + + \g__letgutbanner_La_depth_dim +} +\dim_gset:Nn \g__letgutbanner_area_height_dim { + \g__letgutbanner_La_yoffset_dim + - + \g__letgutbanner_La_depth_dim + - + \c__letgutbanner_GUTenberg_yoffset_dim +} +\dim_set:Nn \l_tmpa_dim { + ( + \g__letgutbanner_area_height_dim + - + 6\g__letgutbanner_largest_LETR_box_height_dim + )/13 +} +\dim_gset:Nn \g__letgutbanner_between_letters_vertical_space_dim { + 2\l_tmpa_dim +} +\dim_gsub:Nn \g__letgutbanner_banner_vertical_contents_width_dim { + 1pt + } +} +\dim_gset:Nn \g__letgutbanner_banner_padding_dim { + ( + \c__letgutbanner_banner_thickness_dim + - + \g__letgutbanner_banner_vertical_contents_width_dim + )/2 +} +\dim_const:Nn \c__letgutbanner_first_letter_yoffset_dim { + \g__letgutbanner_La_yoffset_dim + - + \g__letgutbanner_largest_LETR_box_height_dim + - + \fp_use:N \c__letgutbanner_leading_La_factor_fp + \g__letgutbanner_between_letters_vertical_space_dim +} +\dim_gset:Nn \g__letgutbanner_between_letters_yoffset_dim { + \g__letgutbanner_between_letters_vertical_space_dim + + + \g__letgutbanner_largest_LETR_box_height_dim +} +\box_gresize_to_wd:Nn \g__letgutbanner_g_box { + \c__letgutbanner_textwidth_dim +} +\dim_gset:Nn \g__letgutbanner_first_page_shrink_dim { + \c__letgutbanner_tmargin_dim + + + \c__letgutbanner_textheight_dim + + + \c__letgutbanner_banner_thickness_dim + - + .5\paperheight + - + .5\c__letgutbanner_banner_height_dim + + + .5\baselineskip +} +\AddToHookNext{shipout/background}{ +\BeginAccSupp{ActualText={}} +\put( +.5\c__letgutbanner_lmargin_dim-.5\c__letgutbanner_banner_thickness_dim +, +-.5\paperheight-.5\c__letgutbanner_banner_height_dim +){ + \put(0,0){ + \rule{ + \c__letgutbanner_banner_width_dim + }{ + \c__letgutbanner_banner_thickness_dim + } + } + \put(0,0){ + \rule{ + \c__letgutbanner_banner_thickness_dim + }{ + \c__letgutbanner_banner_height_dim + } + } +% \color_fill:nV {rgb}{ \g__letgutbanner_pagecolor_clist } + \color[rgb]{ \g__letgutbanner_pagecolor_clist } + \put( + \g__letgutbanner_banner_padding_dim + , + \g__letgutbanner_La_yoffset_dim + ){ + \box_use:N \g__letgutbanner_La_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -0\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_L_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -1\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_E_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -2\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_T_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -3\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_T_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -4\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_R_box + } + \put( + \g__letgutbanner_banner_padding_dim + , + \c__letgutbanner_first_letter_yoffset_dim + -5\g__letgutbanner_between_letters_yoffset_dim + ){ + \box_use:N \g__letgutbanner_E_box + } + \put( + \c__letgutbanner_banner_thickness_dim + , + \c__letgutbanner_GUTenberg_yoffset_dim + ){ + \box_use:N \g__letgutbanner_GUTenberg_box + } + % \color_fill:n {black!10} + \color{ black!10 } + \put( + .5\c__letgutbanner_lmargin_dim+.5\c__letgutbanner_banner_thickness_dim + , + .5\paperheight + + + .5\c__letgutbanner_banner_height_dim + - + \c__letgutbanner_tmargin_dim + ){ + \box_move_down:nn {.5\c__letgutbanner_textheight_dim} + {\box_use:N \g__letgutbanner_g_box} + } +} +\EndAccSupp{} +} +} +\@ifclassloaded{letgut}{ +}{ + \AddToHook{begindocument/end}{% + \enlargethispage{ + - \g__letgutbanner_first_page_shrink_dim + } + \thispagestyle{empty} + } +} |