SPB Git

Repository Public Research preview

uqo-style.sty 23.0 KB 541 lines latex

1% =============================================================================2% Style UQO pour présentations Beamer — IMM10333% Université du Québec en Outaouais4% Auteur : Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca5% © 2026 Simon-Pierre Boucher6% Design moderne « flat » : Fira Sans, accents dorés, barre de progression,7% page titre avec photo du pavillon Lucien-Brault (images/)8% =============================================================================9\ProvidesPackage{uqo-style}1011% --- Packages requis ---12\RequirePackage[utf8]{inputenc}13\DeclareUnicodeCharacter{221A}{\ensuremath{\surd}}   % « √ » (seance07_qs_cas) — 2026-10-3014\RequirePackage[T1]{fontenc}15\RequirePackage[french]{babel}16\RequirePackage{lmodern}17\RequirePackage[sfdefault,scaled=0.92]{FiraSans}18\RequirePackage{amsmath,amssymb}19\RequirePackage{graphicx}20\RequirePackage{booktabs}21\RequirePackage{array}22\RequirePackage{multirow}23\RequirePackage{colortbl}24\RequirePackage{tikz}25\RequirePackage{pgfplots}26\RequirePackage{hyperref}27\RequirePackage{fontawesome5}28\RequirePackage{tcolorbox}29% enumitem retiré car incompatible avec Beamer30\RequirePackage[backend=biber, style=authoryear, sorting=nyt, maxbibnames=6]{biblatex}31\addbibresource{references.bib}32\renewcommand*{\bibfont}{\footnotesize}33\setlength\bibitemsep{0.55\baselineskip}34\RequirePackage{listings}35\RequirePackage{eurosym}36\RequirePackage{textcomp}37\RequirePackage{pifont}38\RequirePackage{calc}39\RequirePackage{appendixnumberbeamer}4041\pgfplotsset{compat=1.18}42\usetikzlibrary{shapes,arrows,arrows.meta,positioning,calc,decorations.pathreplacing,shadows,fit}4344% --- Couleurs UQO ---45\definecolor{uqoBleu}{RGB}{0, 62, 126}         % Bleu principal UQO46\definecolor{uqoBleuClair}{RGB}{41, 118, 187}  % Bleu clair47\definecolor{uqoOr}{RGB}{204, 164, 36}         % Or/doré UQO48\definecolor{uqoGris}{RGB}{96, 102, 112}       % Gris foncé49\definecolor{uqoGrisClair}{RGB}{208, 213, 220} % Gris clair50\definecolor{uqoBlanc}{RGB}{255, 255, 255}     % Blanc51\definecolor{uqoVert}{RGB}{16, 124, 78}        % Vert accent52\definecolor{uqoRouge}{RGB}{178, 42, 32}       % Rouge accent53\definecolor{uqoBgClair}{RGB}{242, 246, 250}   % Fond clair54\definecolor{uqoNavy}{RGB}{9, 26, 51}          % Bleu nuit (pages titre/section)55\definecolor{uqoInk}{RGB}{38, 43, 52}          % Texte courant56\definecolor{uqoTeal}{RGB}{13, 122, 122}       % Sarcelle (IMM1033)57\definecolor{uqoOrange}{RGB}{214, 116, 22}     % Orange (IMM1033)58\definecolor{lightblue}{RGB}{220,235,245}59\definecolor{lightgreen}{RGB}{220,245,220}60\definecolor{lightyellow}{RGB}{255,250,220}61\definecolor{lightred}{RGB}{255,225,225}62\definecolor{lightgray}{RGB}{240,240,240}6364% =============================================================================65% THÈME — base neutre, tout est redéfini à la main (design flat)66% =============================================================================67\usetheme{default}68\usefonttheme{professionalfonts}6970\setbeamercolor{background canvas}{bg=uqoBlanc}71\setbeamercolor{normal text}{fg=uqoInk}72\setbeamercolor{structure}{fg=uqoBleu}73\setbeamercolor{alerted text}{fg=uqoRouge}74\setbeamercolor{example text}{fg=uqoVert}7576\setbeamercolor{title}{fg=uqoBlanc}77\setbeamercolor{subtitle}{fg=uqoOr}78\setbeamercolor{frametitle}{fg=uqoBleu, bg=uqoBlanc}79\setbeamercolor{framesubtitle}{fg=uqoGris}80\setbeamercolor{author}{fg=uqoGris}81\setbeamercolor{institute}{fg=uqoGris}82\setbeamercolor{date}{fg=uqoGris}8384\setbeamercolor{block title}{bg=uqoBleu, fg=uqoBlanc}85\setbeamercolor{block body}{bg=uqoBgClair, fg=uqoInk}86\setbeamercolor{block title alerted}{bg=uqoRouge, fg=uqoBlanc}87\setbeamercolor{block body alerted}{bg=uqoBgClair, fg=uqoInk}88\setbeamercolor{block title example}{bg=uqoVert, fg=uqoBlanc}89\setbeamercolor{block body example}{bg=uqoBgClair, fg=uqoInk}9091\setbeamercolor{item}{fg=uqoBleu}92\setbeamercolor{subitem}{fg=uqoOr}93\setbeamercolor{subsubitem}{fg=uqoGris}9495\setbeamercolor{section in toc}{fg=uqoBleu}96\setbeamercolor{subsection in toc}{fg=uqoGris}9798\setbeamercolor{bibliography entry author}{fg=uqoInk}99\setbeamercolor{bibliography entry title}{fg=uqoBleu}100\setbeamercolor{bibliography entry location}{fg=uqoGris}101\setbeamercolor{bibliography entry note}{fg=uqoGris}102103% --- Polices ---104\setbeamerfont{title}{size=\huge, series=\bfseries}105\setbeamerfont{subtitle}{size=\footnotesize, series=\bfseries}106\setbeamerfont{frametitle}{size=\large, series=\bfseries}107\setbeamerfont{framesubtitle}{size=\small}108\setbeamerfont{block title}{size=\small, series=\bfseries}109\setbeamerfont{footnote}{size=\tiny}110\setbeamerfont{footline}{size=\tiny}111112% --- Navigation ---113\setbeamertemplate{navigation symbols}{}114115% --- Espacement généreux : marges larges, texte aéré ---116\setlength{\parskip}{3pt}117\setbeamersize{text margin left=9mm, text margin right=9mm}118\beamerdefaultoverlayspecification{}119\linespread{1.06}120121% =============================================================================122% TITRE DE CADRE — titre bleu, tiret doré + filet fin123% =============================================================================124\setbeamertemplate{frametitle}{%125  \nointerlineskip126  \vskip2.6mm127  \begin{beamercolorbox}[wd=\textwidth]{frametitle}128    \usebeamerfont{frametitle}\insertframetitle%129    \ifx\insertframesubtitle\@empty\else130      \\[0.3ex]{\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\insertframesubtitle}%131    \fi132  \end{beamercolorbox}133  \vskip1.2mm134  \leavevmode\hbox{%135    {\color{uqoOr}\rule[0.6pt]{9mm}{1.6pt}}%136    \hspace{1.5pt}%137    {\color{uqoGrisClair}\rule[1.1pt]{\dimexpr\textwidth-9mm-1.5pt\relax}{0.5pt}}%138  }%139  \vskip2mm140}141\setbeamertemplate{frametitle continuation}[from second][{\normalsize\color{uqoGris}~(suite)}]142143% =============================================================================144% PIED DE PAGE — barre de progression dorée + infos discrètes145% =============================================================================146\setbeamertemplate{footline}{%147  \leavevmode%148  \hbox to \paperwidth{\hspace*{6mm}%149    {\usebeamerfont{footline}\color{uqoGris}%150      \insertshorttitle\ \textbullet\ \insertshortauthor\ \textbullet\ UQO}%151    \hfill152    {\usebeamerfont{footline}\color{uqoGris}%153      \insertframenumber\,/\,\inserttotalframenumber}%154    \hspace*{6mm}}%155  \vskip0.8mm156  \begin{tikzpicture}157    \fill[uqoBgClair] (0,0) rectangle (\paperwidth,0.55mm);158    \pgfmathsetlengthmacro{\uqoprogress}{%159      \paperwidth*min(1,\insertframenumber/max(1,\inserttotalframenumber))}160    \fill[uqoOr] (0,0) rectangle (\uqoprogress,0.55mm);161  \end{tikzpicture}%162  \vskip0pt%163}164165% =============================================================================166% PUCES ET NUMÉROTATION167% =============================================================================168\setbeamertemplate{itemize item}{\raisebox{0.28ex}{\scriptsize\color{uqoBleu}$\blacktriangleright$}}169\setbeamertemplate{itemize subitem}{\raisebox{0.32ex}{\tiny\color{uqoOr}$\blacktriangleright$}}170\setbeamertemplate{itemize subsubitem}{\raisebox{0.25ex}{\scriptsize\color{uqoGris}--}}171172\setbeamertemplate{enumerate item}{%173  \tikz[baseline=-0.68ex]\node[fill=uqoBleu, text=uqoBlanc, circle,174    inner sep=0.4pt, minimum size=2.1ex, font=\scriptsize\bfseries]{\insertenumlabel};}175\setbeamertemplate{enumerate subitem}{%176  \tikz[baseline=-0.68ex]\node[draw=uqoBleuClair, text=uqoBleuClair, circle,177    line width=0.5pt, inner sep=0.4pt, minimum size=1.9ex, font=\tiny\bfseries]{\insertsubenumlabel};}178179\addtobeamertemplate{itemize/enumerate body begin}{\setlength{\itemsep}{5pt}\setlength{\parsep}{0pt}\setlength{\topsep}{4pt}\setlength{\partopsep}{0pt}}{}180\addtobeamertemplate{itemize/enumerate body end}{}{}181182% =============================================================================183% TABLE DES MATIÈRES — pastilles numérotées184% =============================================================================185\setbeamertemplate{section in toc}{%186  \vskip4pt187  \leavevmode188  \tikz[baseline=-0.68ex]\node[fill=uqoBleu, text=uqoBlanc, circle,189    inner sep=0.4pt, minimum size=2.3ex, font=\scriptsize\bfseries]{\inserttocsectionnumber};%190  \hspace{0.6em}{\color{uqoBleu}\bfseries\inserttocsection}\par191}192\setbeamertemplate{subsection in toc}{%193  \vskip2pt194  \leavevmode\hspace{2.4em}%195  {\color{uqoOr}\scriptsize$\blacktriangleright$}\hspace{0.5em}%196  {\color{uqoGris}\small\inserttocsubsection}\par197}198199% =============================================================================200% BIBLIOGRAPHIE201% =============================================================================202\setbeamertemplate{bibliography item}{\color{uqoOr}\small\faIcon{book}}203204% =============================================================================205% PAGE DE SECTION — pleine page bleu nuit, grand numéro, filet doré206% =============================================================================207\newcommand{\uqoSectionNum}{\ifnum\insertsectionnumber<10 0\fi\insertsectionnumber}208209\AtBeginSection[]{%210  \begin{frame}[plain,noframenumbering]211    \begin{tikzpicture}[remember picture,overlay]212      \fill[uqoNavy] (current page.south west) rectangle (current page.north east);213      % décorations géométriques214      \draw[uqoBleuClair, opacity=0.20, line width=0.9pt]215        ([xshift=-18mm,yshift=-6mm]current page.north east) circle (24mm);216      \draw[uqoBleuClair, opacity=0.12, line width=0.9pt]217        ([xshift=-6mm,yshift=-18mm]current page.north east) circle (33mm);218      \draw[uqoOr, opacity=0.55, line width=0.8pt]219        ([xshift=-34mm,yshift=-24mm]current page.north east) circle (9mm);220      \fill[uqoOr] ([xshift=-48mm,yshift=-12mm]current page.north east) circle (1mm);221      % grand numéro en filigrane222      \node[anchor=south east, text=uqoBlanc, opacity=0.08,223        font=\fontsize{88}{88}\selectfont\bfseries]224        at ([xshift=-6mm,yshift=-3mm]current page.south east) {\uqoSectionNum};225      % étiquette226      \node[anchor=west, text=uqoOr, font=\footnotesize\bfseries]227        at ([xshift=14mm,yshift=10mm]current page.west) {SECTION~\insertsectionnumber};228      \fill[uqoOr] ([xshift=14mm,yshift=7mm]current page.west) rectangle ++(11mm,0.55mm);229      % titre de section230      \node[anchor=north west, text=uqoBlanc, font=\LARGE\bfseries,231        text width=125mm, align=left]232        at ([xshift=14mm,yshift=4.5mm]current page.west) {\insertsectionhead};233      % rappel du cours en bas234      \node[anchor=south west, text=uqoGrisClair, font=\tiny]235        at ([xshift=14mm,yshift=6mm]current page.south west)236        {\insertshorttitle\ \textbullet\ \insertshortauthor\ \textbullet\ UQO};237    \end{tikzpicture}238  \end{frame}239}240241% =============================================================================242% PAGE TITRE — panneau bleu nuit + zone blanche (auteur, logo)243%              + bandeau photo : pavillon Lucien-Brault (UQO)244% =============================================================================245\defbeamertemplate*{title page}{uqo}[1][]246{%247  \begin{tikzpicture}[remember picture,overlay]248    % panneau bleu nuit249    \fill[uqoNavy] (current page.north west) rectangle250      ([yshift=-50mm]current page.north east);251    \fill[uqoOr] ([yshift=-50mm]current page.north west) rectangle252      ([yshift=-48.9mm]current page.north east);253    % décorations géométriques (limitées au panneau)254    \begin{scope}255      \clip (current page.north west) rectangle ([yshift=-50mm]current page.north east);256      \draw[uqoBleuClair, opacity=0.28, line width=1pt]257        ([xshift=-22mm,yshift=-4mm]current page.north east) circle (25mm);258      \draw[uqoBleuClair, opacity=0.16, line width=1pt]259        ([xshift=-8mm,yshift=-18mm]current page.north east) circle (34mm);260      \draw[uqoOr, opacity=0.65, line width=0.9pt]261        ([xshift=-38mm,yshift=-30mm]current page.north east) circle (10mm);262      \fill[uqoOr] ([xshift=-52mm,yshift=-13mm]current page.north east) circle (1.1mm);263    \end{scope}264    % sous-titre (accroche dorée)265    \node[anchor=north west, text=uqoOr, font=\footnotesize\bfseries]266      at ([xshift=12mm,yshift=-9.5mm]current page.north west)267      {\MakeUppercase{\insertsubtitle}};268    \fill[uqoOr] ([xshift=12mm,yshift=-14.7mm]current page.north west)269      rectangle ++(11mm,0.55mm);270    % titre principal271    \node[anchor=north west, text=uqoBlanc, font=\LARGE\bfseries,272      text width=118mm, align=left,273      execute at begin node={\hyphenpenalty=10000\exhyphenpenalty=10000\relax}]274      at ([xshift=12mm,yshift=-18mm]current page.north west) {\inserttitle};275    % date (pastille, dans le panneau)276    \node[anchor=south west, text=uqoBlanc, font=\footnotesize,277      draw=uqoOr, line width=0.7pt, rounded corners=2pt,278      inner xsep=7pt, inner ysep=4pt]279      at ([xshift=12mm,yshift=44mm]current page.south west)280      {\faIcon{calendar-alt}\hspace{5pt}\insertdate};281    % zone blanche : auteur et coordonnées (gauche) + logo (droite)282    \node[anchor=north west, align=left]283      at ([xshift=12mm,yshift=-52mm]current page.north west)284      {\begin{minipage}{105mm}\raggedright285        {\normalsize\bfseries\color{uqoBleu}\insertauthor\par}286        \vspace{1mm}287        {\footnotesize\color{uqoGris}\insertinstitute\par}288        \vspace{1.3mm}289        {\footnotesize\color{uqoGris}%290          \textcolor{uqoOr}{\faIcon{envelope}}\hspace{4pt}%291          \href{mailto:simon-pierre.boucher@uqo.ca}{simon-pierre.boucher@uqo.ca}%292          \hspace{9pt}%293          \textcolor{uqoOr}{\faIcon{map-marker-alt}}\hspace{4pt}%294          Pavillon Lucien-Brault, Gatineau\par}295      \end{minipage}};296    \node[anchor=north east]297      at ([xshift=-10mm,yshift=-53.5mm]current page.north east)298      {\includegraphics[height=11mm]{uqo-logo.png}};299    % bandeau photo : pavillon Lucien-Brault300    \node[anchor=south west, inner sep=0pt] (plb)301      at (current page.south west)302      {\includegraphics[width=\paperwidth,height=18mm]{images/pavillon-lucien-brault-banner.jpg}};303    \fill[uqoNavy, opacity=0.22]304      (current page.south west) rectangle ([yshift=18mm]current page.south east);305    \fill[uqoOr] ([yshift=18mm]current page.south west)306      rectangle ([yshift=18.8mm]current page.south east);307    % crédit photo (attribution CC BY-SA)308    \node[anchor=south east, text=uqoBlanc, opacity=0.75, font=\fontsize{3.4}{4}\selectfont]309      at ([xshift=-1.5mm,yshift=0.8mm]current page.south east)310      {Pavillon Lucien-Brault --- photo : Denis Yuen, Wikimedia Commons, CC BY-SA 2.5};311  \end{tikzpicture}%312}313314% =============================================================================315% BOÎTES tcolorbox — style « admonition » moderne (filet gauche + fond teinté)316% =============================================================================317\tcbuselibrary{skins,breakable}318319\tcbset{uqobox/.style={320  enhanced,321  boxrule=0pt, frame hidden,322  arc=1.5pt,323  left=9pt, right=9pt, top=5pt, bottom=5pt,324  before skip=6pt, after skip=6pt,325  fontupper=\small,326  detach title,327  before upper={\tcbtitle\par\vspace{3pt}},328  fonttitle=\bfseries\small329}}330331\newtcolorbox{defbox}[1][Définition]{332  uqobox,333  colback=uqoBleu!6,334  borderline west={2.5pt}{0pt}{uqoBleu},335  coltitle=uqoBleu,336  title={\faIcon{book-open}\hspace{5pt}#1}337}338339\newtcolorbox{importbox}[1][Important]{340  uqobox,341  colback=uqoRouge!6,342  borderline west={2.5pt}{0pt}{uqoRouge},343  coltitle=uqoRouge,344  title={\faIcon{exclamation-triangle}\hspace{5pt}#1}345}346347\newtcolorbox{exbox}[1][Exemple]{348  uqobox,349  colback=uqoVert!7,350  borderline west={2.5pt}{0pt}{uqoVert},351  coltitle=uqoVert,352  title={\faIcon{lightbulb}\hspace{5pt}#1}353}354355\newtcolorbox{notebox}[1][Note]{356  uqobox,357  colback=uqoOr!9,358  borderline west={2.5pt}{0pt}{uqoOr},359  coltitle=uqoOr!50!uqoGris,360  title={\faIcon{pen}\hspace{5pt}#1}361}362363\newtcolorbox{quizbox}[1][Question]{364  uqobox,365  colback=uqoBleuClair!8,366  borderline west={2.5pt}{0pt}{uqoBleuClair},367  coltitle=uqoBleuClair!75!uqoNavy,368  title={\faIcon{question-circle}\hspace{5pt}#1}369}370371% =============================================================================372% STYLES TikZ PARTAGÉS — diagrammes de flux et cartes373% =============================================================================374\tikzset{375  uqoflow/.style={rectangle, rounded corners, draw=uqoBleu, fill=uqoBgClair,376    text centered, font=\small, minimum height=0.58cm},377  uqostep/.style={uqoflow, text width=10.5cm},378  uqocard/.style={rectangle, rounded corners=6pt, draw=uqoBleu, fill=uqoBgClair,379    text centered, font=\small},380  uqoarrow/.style={->, thick, uqoBleu},381}382383% =============================================================================384% LISTINGS385% =============================================================================386\lstset{387  basicstyle=\ttfamily\scriptsize,388  keywordstyle=\color{uqoBleu}\bfseries,389  commentstyle=\color{uqoGris}\itshape,390  stringstyle=\color{uqoVert},391  backgroundcolor=\color{uqoBgClair},392  frame=single,393  rulecolor=\color{uqoGrisClair},394  breaklines=true,395  showstringspaces=false,396  numbers=left,397  numberstyle=\tiny\color{uqoGris},398  tabsize=2399}400401% =============================================================================402% GRAPHIQUES pgfplots — habillage discret par défaut403% =============================================================================404\pgfplotsset{405  /pgf/number format/1000 sep={},406  every axis/.append style={407    axis line style={uqoGris!55},408    tick style={uqoGris!55},409    tick label style={font=\scriptsize, color=uqoGris},410    label style={font=\small, color=uqoInk},411    legend style={font=\tiny, draw=uqoGrisClair, fill=white, fill opacity=0.9},412  },413}414415% --- Anti-overflow pour tableaux ---416\renewcommand{\arraystretch}{1.08}417418% =============================================================================419% COMMANDES UTILES420% =============================================================================421\newcommand{\uqotitle}[1]{\textcolor{uqoBleu}{\textbf{#1}}}422\newcommand{\uqohighlight}[1]{\textcolor{uqoOr!75!uqoGris}{\textbf{#1}}}423\newcommand{\uqoalert}[1]{\textcolor{uqoRouge}{\textbf{#1}}}424\newcommand{\uqogreen}[1]{\textcolor{uqoVert}{\textbf{#1}}}425426% Séparateur visuel427\newcommand{\uqosep}{%428  \begin{center}429    \tikz{430      \fill[uqoOr] (0,0) circle (0.5mm);431      \draw[uqoGrisClair, line width=0.5pt] (0.25,0) -- (2.6,0);432      \draw[uqoGrisClair, line width=0.5pt] (-2.6,0) -- (-0.25,0);433    }%434  \end{center}435}436437% =============================================================================438% SLIDE DE CONTACT439% =============================================================================440\newcommand{\contactslide}[1][]{%441  \begin{center}442  \tikz[baseline]{\node[fill=uqoBleu, text=uqoBlanc, circle, minimum size=10mm]443    {\faIcon{comments}};}\\[1.5mm]444  {\Large\color{uqoBleu}\textbf{Questions et discussion}}445446  \vspace{0.2cm}447  \begin{tcolorbox}[enhanced, width=0.72\textwidth, boxrule=0pt, frame hidden,448      colback=uqoBgClair, arc=2.5pt,449      borderline north={1.4pt}{0pt}{uqoOr},450      left=10pt, right=10pt, top=8pt, bottom=8pt]451    \centering452    {\large\textbf{\color{uqoBleu}Simon-Pierre Boucher}}\\[1.5pt]453    {\small\color{uqoGris}\textit{Professeur} --- Département des sciences administratives}\\[5pt]454    {\small\textcolor{uqoOr}{\faIcon{envelope}}\hspace{5pt}%455      \href{mailto:simon-pierre.boucher@uqo.ca}{simon-pierre.boucher@uqo.ca}}\\[3pt]456    {\small\textcolor{uqoOr}{\faIcon{map-marker-alt}}\hspace{5pt}%457      Gatineau --- Pavillon Lucien-Brault}\\[1pt]458    {\footnotesize\color{uqoGris}101, rue Saint-Jean-Bosco, Gatineau (Québec) J8X~3X7}459  \end{tcolorbox}460461  \ifx\\#1\\%462  \else463    \vspace{0.2cm}464    {\small\color{uqoGris}\faIcon{arrow-circle-right}\hspace{4pt}\textit{#1}}465  \fi466  \end{center}467}468469% =============================================================================470% CAPTURES D'ÉCRAN — cadre « navigateur », épingles numérotées, cartes-outils471% (ajouté le 2026-09-07 pour la diapositive « Survol des outils »)472% =============================================================================473\usetikzlibrary{backgrounds,shadows.blur}474\pgfdeclarelayer{uqoshotbg}475\pgfsetlayers{uqoshotbg,main}476477% Environnement : \begin{uqoshot}[largeur]{fichier}{url} ... épingles ... \end{uqoshot}478% Le nœud (img) reste disponible à l'intérieur pour positionner les épingles.479\newenvironment{uqoshot}[3][\textwidth]{%480  \begin{tikzpicture}481    \node[anchor=south west, inner sep=0pt] (img) at (0,0) {\includegraphics[width=#1]{#2}};482    \begin{pgfonlayer}{uqoshotbg}483      \fill[uqoBlanc, blur shadow={shadow blur steps=8, shadow xshift=0.6mm, shadow yshift=-0.8mm, shadow opacity=28}]484        ([xshift=-0.3mm,yshift=-0.3mm]img.south west) rectangle ([xshift=0.3mm,yshift=5.2mm]img.north east);485    \end{pgfonlayer}486    % barre de titre du navigateur487    \fill[uqoNavy] (img.north west) rectangle ([yshift=4.9mm]img.north east);488    \fill[uqoRouge!85!white] ([xshift=2.6mm,yshift=2.45mm]img.north west) circle (0.75mm);489    \fill[uqoOr] ([xshift=5.2mm,yshift=2.45mm]img.north west) circle (0.75mm);490    \fill[uqoVert!85!white] ([xshift=7.8mm,yshift=2.45mm]img.north west) circle (0.75mm);491    \node[anchor=center, text=uqoBlanc, font=\fontsize{4.6}{5.5}\selectfont\ttfamily,492      fill=uqoBleu!55!uqoNavy, rounded corners=0.9pt, inner xsep=4pt, inner ysep=1.4pt,493      minimum width=0.5*#1]494      at ([yshift=2.45mm]img.north)   % 2026-10-30 : sans « ! » (actif sous babel-french, cassait l'analyse calc)495      {\textcolor{uqoOr}{\faIcon{lock}}\hspace{3pt}#3};496    \draw[uqoGrisClair, line width=0.35pt] (img.south west) rectangle (img.north east);497}{%498  \end{tikzpicture}%499}500501% Épingle numérotée : \uqopin{x}{y}{n} — x,y = fractions (0–1) de la capture, origine en bas à gauche502\newcommand{\uqopin}[3]{%503  \path (img.south west) -- (img.south east) coordinate[pos=#1] (uqopinx);504  \path (img.south west) -- (img.north west) coordinate[pos=#2] (uqopiny);505  \node[circle, fill=uqoOr, text=uqoNavy, font=\fontsize{6.5}{7}\selectfont\bfseries,506    inner sep=0pt, minimum size=4.2mm, draw=uqoBlanc, line width=0.7pt]507    at (uqopinx |- uqopiny) {#3};%508}509510% Légende d'épingle (dans le texte) : \uqopinlabel{n}511\newcommand{\uqopinlabel}[1]{%512  \tikz[baseline=-0.68ex]\node[circle, fill=uqoOr, text=uqoNavy, inner sep=0pt,513    minimum size=2.3ex, font=\scriptsize\bfseries]{#1};}514515% Pastille URL : \uqourl{www.exemple.app}516\newcommand{\uqourl}[1]{%517  \tikz[baseline=-0.6ex]\node[draw=uqoBleu, line width=0.6pt, rounded corners=2.5pt,518    inner xsep=6pt, inner ysep=3pt, font=\footnotesize\bfseries\ttfamily, text=uqoBleu]519    {\textcolor{uqoOr}{\faIcon{globe-americas}}\hspace{4pt}\href{https://#1}{#1}};}520521% Carte-outil : \uqotoolcard{largeur}{icône FA}{Nom}{url}{texte}522\newcommand{\uqotoolcard}[5]{%523  \begin{tcolorbox}[enhanced, width=#1, boxrule=0pt, frame hidden, arc=3pt,524      colback=uqoBgClair, left=7pt, right=7pt, top=4pt, bottom=4pt,525      borderline north={2pt}{0pt}{uqoOr}, drop fuzzy shadow=uqoGris!35]526    \tikz[baseline=-0.7ex]\node[fill=uqoBleu, text=uqoBlanc, circle, minimum size=7mm, inner sep=0pt]527      {\normalsize\faIcon{#2}};\hspace{5pt}%528    {\normalsize\bfseries\color{uqoBleu}#3}\par529    \vspace{3pt}530    {\scriptsize\ttfamily\color{uqoGris}\faIcon{globe-americas}\hspace{3pt}\href{https://#4}{#4}}\par531    \vspace{3pt}532    {\scriptsize #5}533  \end{tcolorbox}}534535% Étiquette de rôle (petit chip) : \uqochip{texte}536\newcommand{\uqochip}[1]{%537  \tikz[baseline=-0.55ex]\node[fill=uqoOr!22, text=uqoOr!60!uqoGris, rounded corners=2pt,538    inner xsep=4pt, inner ysep=1.8pt, font=\tiny\bfseries]{\MakeUppercase{#1}};}539540\endinput541
Files main
Menu

Theme