% Author : C. Pierquet % licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt % licence svg : CC BY-SA 3.0 https://commons.wikimedia.org/wiki/File:Judo_yellow_belt.svg % : Tks to Sascha Christmann for "in betweeen" colors \NeedsTeXFormat{LaTeX2e} \ProvidesExplPackage{coloredbelts}{2025-08-25}{0.1.5}{Colored Judo's belts} %====HISTORIQUE % v 0.1.5 Passage en LaTeX3 % v 0.1.4 Option strut % v 0.1.3 Uniformisation des fichiers % v 0.1.2 Amélioration de la gestion des longueurs % v 0.1.1 Couleurs duo % v 0.1.0 Version initiale %====BASE \RequirePackage{graphicx} %====DIMENSIONS \dim_new:N \g_judobelt_totheight_dim \dim_new:N \g_judobelt_depth_dim \dim_new:N \g_judobeltraise_dim %====VARIABLES \tl_new:N \l_judobeltheight_tl \tl_new:N \l_judobeltstrut_tl \tl_new:N \l_judobeltcolor_tl %====CLÉS (version française) \keys_define:nn { ceinturejudo } { Hauteur .tl_set:N = \l_judobeltheight_tl, Hauteur .initial:n = {auto}, DecalV .dim_set:N = \l_judobeltraise_dim, DecalV .initial:n = {0pt}, Strut .tl_set:N = \l_judobeltstrut_tl, Strut .initial:n = {abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ} } %====COMMANDE FR \NewDocumentCommand\CeintureCouleur{ s O{} m } { \group_begin: % Gestion des couleurs \str_case:enF { #3 } { {white}{\def\tmp@ceinture@couleur{white}} {blanc}{\def\tmp@ceinture@couleur{white}} {jaune}{\def\tmp@ceinture@couleur{yellow}} {yellow}{\def\tmp@ceinture@couleur{yellow}} {orange}{\def\tmp@ceinture@couleur{orange}} {red}{\def\tmp@ceinture@couleur{red}} {rouge}{\def\tmp@ceinture@couleur{red}} {bleu}{\def\tmp@ceinture@couleur{blue}} {blue}{\def\tmp@ceinture@couleur{blue}} {purple}{\def\tmp@ceinture@couleur{purple}} {violet}{\def\tmp@ceinture@couleur{purple}} {marron}{\def\tmp@ceinture@couleur{brown}} {brown}{\def\tmp@ceinture@couleur{brown}} {green}{\def\tmp@ceinture@couleur{green}} {vert}{\def\tmp@ceinture@couleur{green}} {rose}{\def\tmp@ceinture@couleur{pink}} {pink}{\def\tmp@ceinture@couleur{pink}} {gris}{\def\tmp@ceinture@couleur{gray}} {gray}{\def\tmp@ceinture@couleur{gray}} {noir}{\def\tmp@ceinture@couleur{black}} {black}{\def\tmp@ceinture@couleur{black}} {white-yellow}{\def\tmp@ceinture@couleur{white-yellow}} {blanc-jaune}{\def\tmp@ceinture@couleur{white-yellow}} {yellow-orange}{\def\tmp@ceinture@couleur{yellow-orange}} {jaune-orange}{\def\tmp@ceinture@couleur{yellow-orange}} {orange-green}{\def\tmp@ceinture@couleur{orange-green}} {orange-vert}{\def\tmp@ceinture@couleur{orange-green}} {green-blue}{\def\tmp@ceinture@couleur{green-blue}} {vert-bleu}{\def\tmp@ceinture@couleur{green-blue}} {purple-brown}{\def\tmp@ceinture@couleur{purple-brown}} {violet-marron}{\def\tmp@ceinture@couleur{purple-brown}} {blue-brown}{\def\tmp@ceinture@couleur{blue-brown}} {bleu-marron}{\def\tmp@ceinture@couleur{blue-brown}} {blue-purple}{\def\tmp@ceinture@couleur{blue-purple}} {bleu-violet}{\def\tmp@ceinture@couleur{blue-purple}} {brown-black}{\def\tmp@ceinture@couleur{brown-black}} {marron-noir}{\def\tmp@ceinture@couleur{brown-black}} } {\def\tmp@ceinture@couleur{yellow}} % Étoilée := includegraphics simple \bool_if:NTF #1 { \includegraphics[#2]{judobelt-\tmp@ceinture@couleur.pdf} } { \keys_set:nn { ceinturejudo } { #2 } \str_if_eq:eeTF { \tl_to_str:N \l_judobeltheight_tl } { auto } { % hauteur auto \hbox_set:Nn \l_tmpa_box { \tl_use:N \l_judobeltstrut_tl } \dim_set:Nn \g_judobelt_totheight_dim { \box_dp:N \l_tmpa_box + \box_ht:N \l_tmpa_box } \dim_set:Nn \g_judobelt_depth_dim { \box_dp:N \l_tmpa_box } \dim_set:Nn \g_judobeltraise_dim { -\g_judobelt_depth_dim + \fp_eval:n { 0.025 * \dim_to_decimal_in_unit:nn { \g_judobelt_totheight_dim } { 1pt } } pt } \raisebox{ \dim_use:N \g_judobeltraise_dim } { \includegraphics[height={\dim_eval:n { 0.95\g_judobelt_totheight_dim }}]{judobelt-\tmp@ceinture@couleur.pdf} } } { \raisebox{\dim_use:N \l_judobeltraise_dim}{\includegraphics[height={\l_judobeltheight_tl}]{judobelt-\tmp@ceinture@couleur.pdf}} } } \group_end: } %====KEYS (version anglaise) \keys_define:nn { judobelt } { Height .tl_set:N = \l_judobeltheight_tl, Height .initial:n = {auto}, OffsetV .dim_set:N = \l_judobeltraise_dim, OffsetV .initial:n = {0pt}, Strut .tl_set:N = \l_judobeltstrut_tl, Strut .initial:n = {abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ} } %====COMMANDE EN \NewDocumentCommand\ColorBelt{ s O{} m } { \group_begin: % Color gest \str_case:enF { #3 } { {white}{\def\tmp@ceinture@couleur{white}} {blanc}{\def\tmp@ceinture@couleur{white}} {jaune}{\def\tmp@ceinture@couleur{yellow}} {yellow}{\def\tmp@ceinture@couleur{yellow}} {orange}{\def\tmp@ceinture@couleur{orange}} {red}{\def\tmp@ceinture@couleur{red}} {rouge}{\def\tmp@ceinture@couleur{red}} {bleu}{\def\tmp@ceinture@couleur{blue}} {blue}{\def\tmp@ceinture@couleur{blue}} {purple}{\def\tmp@ceinture@couleur{purple}} {violet}{\def\tmp@ceinture@couleur{purple}} {marron}{\def\tmp@ceinture@couleur{brown}} {brown}{\def\tmp@ceinture@couleur{brown}} {green}{\def\tmp@ceinture@couleur{green}} {vert}{\def\tmp@ceinture@couleur{green}} {rose}{\def\tmp@ceinture@couleur{pink}} {pink}{\def\tmp@ceinture@couleur{pink}} {gris}{\def\tmp@ceinture@couleur{gray}} {gray}{\def\tmp@ceinture@couleur{gray}} {noir}{\def\tmp@ceinture@couleur{black}} {black}{\def\tmp@ceinture@couleur{black}} {white-yellow}{\def\tmp@ceinture@couleur{white-yellow}} {blanc-jaune}{\def\tmp@ceinture@couleur{white-yellow}} {yellow-orange}{\def\tmp@ceinture@couleur{yellow-orange}} {jaune-orange}{\def\tmp@ceinture@couleur{yellow-orange}} {orange-green}{\def\tmp@ceinture@couleur{orange-green}} {orange-vert}{\def\tmp@ceinture@couleur{orange-green}} {green-blue}{\def\tmp@ceinture@couleur{green-blue}} {vert-bleu}{\def\tmp@ceinture@couleur{green-blue}} {purple-brown}{\def\tmp@ceinture@couleur{purple-brown}} {violet-marron}{\def\tmp@ceinture@couleur{purple-brown}} {blue-brown}{\def\tmp@ceinture@couleur{blue-brown}} {bleu-marron}{\def\tmp@ceinture@couleur{blue-brown}} {blue-purple}{\def\tmp@ceinture@couleur{blue-purple}} {bleu-violet}{\def\tmp@ceinture@couleur{blue-purple}} {brown-black}{\def\tmp@ceinture@couleur{brown-black}} {marron-noir}{\def\tmp@ceinture@couleur{brown-black}} } {\def\tmp@ceinture@couleur{yellow}} % Starred := simple includegraphics \bool_if:NTF #1 { \includegraphics[#2]{judobelt-\tmp@ceinture@couleur.pdf} } { \keys_set:nn { judobelt } { #2 } \str_if_eq:eeTF { \tl_to_str:N \l_judobeltheight_tl } { auto } { % hauteur auto \hbox_set:Nn \l_tmpa_box { \tl_use:N \l_judobeltstrut_tl } \dim_set:Nn \g_judobelt_totheight_dim { \box_dp:N \l_tmpa_box + \box_ht:N \l_tmpa_box } \dim_set:Nn \g_judobelt_depth_dim { \box_dp:N \l_tmpa_box } \dim_set:Nn \g_judobeltraise_dim { -\g_judobelt_depth_dim + \fp_eval:n { 0.025 * \dim_to_decimal_in_unit:nn { \g_judobelt_totheight_dim } { 1pt } } pt } \raisebox{ \dim_use:N \g_judobeltraise_dim } { \includegraphics[height={\dim_eval:n { 0.95\g_judobelt_totheight_dim }}]{judobelt-\tmp@ceinture@couleur.pdf} } } { \raisebox{\dim_use:N \l_judobeltraise_dim}{\includegraphics[height={\l_judobeltheight_tl}]{judobelt-\tmp@ceinture@couleur.pdf}} } } \group_end: } \endinput