% ============================================================================== % Préambule — Guide Claude Code pour les étudiants (IMM1003 / IMM1033), UQO — v1.0 (dérivé du préambule du Guide IA v3.1) % ============================================================================== \usepackage{fontspec} \setmainfont{Libertinus Serif}[Numbers=OldStyle] \setsansfont{Fira Sans}[Scale=MatchLowercase] \setmonofont{Fira Mono}[Scale=MatchLowercase] \newfontfamily\firalight{Fira Sans Light}[Scale=MatchLowercase] \usepackage[french]{babel} \frenchsetup{StandardLists=true} \usepackage[margin=2.3cm,top=2.6cm,bottom=2.6cm]{geometry} \usepackage{parskip} \usepackage{lastpage} \usepackage{fancyhdr} \usepackage{titlesec} \usepackage{graphicx} \graphicspath{{./}{../_Guide_IA/}{../_Guide_IA/logos/}} \usepackage{tikz} \usetikzlibrary{positioning,arrows.meta,shapes.geometric,shapes.misc,calc,fit,backgrounds,decorations.pathreplacing,shadows} \usepackage[table]{xcolor} \usepackage{booktabs} \usepackage{array} \usepackage{tabularx} \usepackage{longtable} \usepackage{ltablex} \keepXColumns \usepackage{multirow} \usepackage{enumitem} \usepackage{amsmath,amssymb} \usepackage{fontawesome5} \usepackage{fvextra} \usepackage{tcolorbox} \tcbuselibrary{skins,breakable,raster} \usepackage{csquotes} \usepackage[backend=biber,style=authoryear,sorting=nyt,maxcitenames=2,maxbibnames=8,url=true,doi=true,isbn=false,dashed=false]{biblatex} \addbibresource{references.bib} \setcounter{biburlnumpenalty}{9000} \setcounter{biburlucpenalty}{9000} \setcounter{biburllcpenalty}{9000} \renewcommand*{\bibfont}{\small} \usepackage{hyperref} % --- Couleurs UQO --- \definecolor{uqoBleu}{RGB}{0, 62, 126} \definecolor{uqoBleuClair}{RGB}{0, 102, 179} \definecolor{uqoOr}{RGB}{198, 163, 0} \definecolor{uqoGris}{RGB}{88, 89, 91} \definecolor{uqoGrisClair}{RGB}{200, 200, 200} \definecolor{uqoVert}{RGB}{0, 128, 70} \definecolor{uqoRouge}{RGB}{180, 35, 24} \definecolor{uqoBgClair}{RGB}{240, 244, 248} \definecolor{uqoOrange}{RGB}{214, 122, 0} \definecolor{uqoViolet}{RGB}{94, 53, 177} \definecolor{uqoTeal}{RGB}{0, 121, 121} \hypersetup{colorlinks=true,linkcolor=uqoBleu,urlcolor=uqoBleuClair,citecolor=uqoVert, pdftitle={Claude Code pour les étudiants — guide pratique — IMM1003 et IMM1033 — UQO}, pdfauthor={Simon-Pierre Boucher}, pdfsubject={Installer, configurer et utiliser Claude Code dans un cours d'évaluation immobilière}, pdfkeywords={Claude Code, CLAUDE.md, agent IA, hooks, MCP, skills, permissions, évaluation immobilière, UQO}} % --- En-têtes --- \setlength{\headheight}{22pt} \addtolength{\topmargin}{-10pt} \pagestyle{fancy} \fancyhf{} \renewcommand{\headrulewidth}{1.2pt} \renewcommand{\headrule}{\hbox to\headwidth{\color{uqoBleu}\leaders\hrule height \headrulewidth\hfill}} \renewcommand{\footrulewidth}{0.5pt} \renewcommand{\footrule}{\hbox to\headwidth{\color{uqoGrisClair}\leaders\hrule height \footrulewidth\hfill}} \fancyhead[L]{\small\sffamily\color{uqoBleu}\textbf{IMM1003 · IMM1033} --- Claude Code pour les étudiants} \fancyhead[R]{\small\sffamily\color{uqoGris}Automne 2026 · v1.0} \fancyfoot[L]{\small\sffamily\color{uqoGris}UQO --- S.-P. Boucher} \fancyfoot[R]{\small\sffamily\color{uqoGris}Page \thepage\ / \pageref{LastPage}} % --- Titres --- \newcommand{\numbox}[1]{\tikz[baseline=(s.base)]\node[fill=uqoBleu,text=white,rounded corners=3pt,inner xsep=5pt,inner ysep=3pt,font=\Large\bfseries\sffamily](s){#1};} \titleformat{\part}[display] {\centering\normalfont\sffamily} {\color{uqoOr}\Large\bfseries\partname~\thepart} {0.6em} {\color{uqoBleu}\Huge\bfseries} [\vspace{0.5em}{\color{uqoOr}\rule{0.6\textwidth}{1.5pt}}] \titleformat{\section} {\Large\bfseries\sffamily\color{uqoBleu}}{\numbox{\thesection}}{0.7em}{} [\vspace{-0.3em}{\color{uqoOr}\rule{\textwidth}{1.2pt}}] \titleformat{\subsection}{\large\bfseries\sffamily\color{uqoBleuClair}}{\thesubsection}{0.5em}{} \titleformat{\subsubsection}{\normalsize\bfseries\sffamily\color{uqoGris}}{\thesubsubsection}{0.5em}{} % un titre de section ne reste jamais seul en bas de page \usepackage{needspace} \let\origsection\section \renewcommand{\section}{\Needspace*{10\baselineskip}\origsection} \titlespacing{\section}{0pt}{22pt}{8pt} \titlespacing{\subsection}{0pt}{12pt}{4pt} \titlespacing{\subsubsection}{0pt}{8pt}{3pt} % ============================================================================== % BOÎTES ÉDITORIALES % ============================================================================== \tcbset{boxeCommune/.style={enhanced,breakable,boxrule=0.8pt,arc=3pt, left=6pt,right=6pt,top=4pt,bottom=4pt,before skip=8pt,after skip=8pt,fonttitle=\sffamily\bfseries}} \newtcolorbox{infobox}[1][]{boxeCommune,colback=uqoBgClair,colframe=uqoBleu, title={#1},coltitle=white,colbacktitle=uqoBleu} \newtcolorbox{alertbox}[1][]{boxeCommune,colback=uqoRouge!4,colframe=uqoRouge, title={#1},coltitle=white,colbacktitle=uqoRouge} \newtcolorbox{notebox}[1][]{boxeCommune,colback=uqoOr!6,colframe=uqoOr, title={#1},coltitle=uqoBleu,colbacktitle=uqoOr} \newtcolorbox{okbox}[1][]{boxeCommune,colback=uqoVert!5,colframe=uqoVert, title={#1},coltitle=white,colbacktitle=uqoVert} % Boîte « Exemple concret » (teal) : cas chiffré, extrait de session, gabarit rempli \newtcolorbox{exemple}[1][Exemple concret]{enhanced,breakable,colback=uqoTeal!5,colframe=uqoTeal!5,boxrule=0pt,arc=4pt, borderline west={3.5pt}{0pt}{uqoTeal},left=10pt,right=8pt,top=6pt,bottom=6pt,before skip=10pt,after skip=10pt, fontupper=\small,title={\faIcon{flask}~#1},coltitle=uqoTeal!70!black,fonttitle=\bfseries\small\sffamily, colbacktitle=uqoTeal!5,toptitle=4pt,bottomtitle=0pt} % ============================================================================== % CODE : terminal sombre (sessions, commandes) et fichier clair (CLAUDE.md, JSON, Python) % ============================================================================== \definecolor{termBg}{RGB}{30, 34, 45} \definecolor{termBar}{RGB}{44, 49, 63} \definecolor{termFg}{RGB}{226, 229, 236} \definecolor{termDim}{RGB}{130, 140, 160} \definecolor{termGreen}{RGB}{140, 205, 130} \definecolor{termBlue}{RGB}{125, 175, 255} \definecolor{termOrange}{RGB}{255, 190, 110} \definecolor{termRed}{RGB}{255, 130, 120} \definecolor{termHL}{RGB}{42, 58, 90} \definecolor{fileBg}{RGB}{248, 249, 251} \definecolor{fileBar}{RGB}{233, 237, 243} \fvset{fontsize=\footnotesize,breaklines=true,breakanywhere=true,breaksymbolleft={}, numbersep=7pt,tabsize=4,xleftmargin=0pt} % trois pastilles façon fenêtre macOS \newcommand{\pastilles}{\tikz[baseline=-0.55ex]{\fill[termRed] (0,0) circle (2.6pt);\fill[termOrange] (0.42,0) circle (2.6pt);\fill[termGreen] (0.84,0) circle (2.6pt);}} \newcommand{\termnum}{\renewcommand{\theFancyVerbLine}{\textcolor{termDim}{\scriptsize\sffamily\arabic{FancyVerbLine}}}} \newcommand{\filenum}{\renewcommand{\theFancyVerbLine}{\textcolor{black!40}{\scriptsize\sffamily\arabic{FancyVerbLine}}}} % Terminal : \begin{terminal}[titre] ... \end{terminal} ; à l'intérieur, un Verbatim avec % commandchars=§¡¿ : §tu¡…¿ ligne utilisateur, §co¡…¿ commentaire, §ok¡…¿, §ko¡…¿, §hi¡…¿, §gris¡…¿, §mk¡n¿ repère \newtcolorbox{terminal}[1][Terminal]{enhanced,breakable,colback=termBg,colframe=termBg,boxrule=0pt,arc=6pt, left=6pt,right=6pt,top=6pt,bottom=6pt,before skip=10pt,after skip=10pt, title={\pastilles\hspace{8pt}{\color{termFg}\sffamily\bfseries\small #1}},colbacktitle=termBar,coltitle=termFg, toptitle=5pt,bottomtitle=5pt,fontupper=\color{termFg}\ttfamily, drop fuzzy shadow={black!45},before upper={\termnum}} % Fichier : \begin{fichier}[nom-du-fichier] ... \end{fichier} \newtcolorbox{fichier}[1][fichier]{enhanced,breakable,colback=fileBg,colframe=black!18,boxrule=0.6pt,arc=5pt, left=6pt,right=6pt,top=6pt,bottom=6pt,before skip=10pt,after skip=10pt, title={\faIcon{file-code}~~{\ttfamily\bfseries\small #1}},colbacktitle=fileBar,coltitle=uqoBleu, toptitle=4pt,bottomtitle=4pt,fontupper=\color{black!85}\ttfamily, borderline west={3pt}{0pt}{uqoBleu},before upper={\filenum}} % Couleurs à utiliser via escapeinside=§§ \newcommand{\tu}[1]{\textcolor{termBlue}{\bfseries #1}} \newcommand{\co}[1]{\textcolor{termDim}{\itshape #1}} \newcommand{\ok}[1]{\textcolor{termGreen}{#1}} \newcommand{\ko}[1]{\textcolor{termRed}{#1}} \newcommand{\hi}[1]{\textcolor{termOrange}{#1}} \newcommand{\gris}[1]{\textcolor{termDim}{#1}} \newcommand{\fk}[1]{\textcolor{uqoBleu}{\bfseries #1}} \newcommand{\fc}[1]{\textcolor{black!50}{\itshape #1}} \newcommand{\fs}[1]{\textcolor{uqoVert!80!black}{#1}} \newcommand{\mk}[1]{\tikz[baseline=(m.base)]\node[circle,fill=uqoOr,text=uqoBleu,font=\sffamily\bfseries\scriptsize,inner sep=1pt,minimum size=11pt](m){#1};} % code en ligne : pastille grise discrète \let\oldtexttt\texttt \renewcommand{\texttt}[1]{{\setlength{\fboxsep}{1.4pt}\colorbox{uqoBleu!7}{\ttfamily #1}}} % ============================================================================== % TABLEAUX : légendes numérotées, en-tête coloré répété, zèbre, sans filets verticaux % ============================================================================== \usepackage{caption} \counterwithin{table}{section} \counterwithin{figure}{section} \addto\captionsfrench{\renewcommand{\tablename}{Tableau}\renewcommand{\figurename}{Figure}} \captionsetup{font={small},labelfont={sf,bf,color=uqoBleu},labelsep=quad, textfont={sf,color=uqoGris},justification=raggedright,singlelinecheck=false,skip=6pt} \captionsetup[figure]{position=below,skip=6pt} \captionsetup[table]{position=above,skip=4pt} \setlength{\LTcapwidth}{\textwidth} \setlength{\LTpre}{8pt} \setlength{\LTpost}{10pt} \setlength{\tabcolsep}{5pt} \renewcommand{\tabularxcolumn}[1]{>{\raggedright\arraybackslash}p{#1}} \newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}} % \leavevmode évite que \color (whatsit) déclenche un \parskip en tête de cellule (décalage d'une ligne) \newcolumntype{E}[1]{>{\raggedright\arraybackslash\bfseries\leavevmode\color{uqoBleu}}p{#1}} \newcolumntype{R}[1]{>{\raggedright\arraybackslash\bfseries\leavevmode\color{uqoRouge}}p{#1}} \newcommand{\hc}[1]{\textcolor{white}{\sffamily\bfseries\footnotesize #1}} \newcommand{\captionsuite}[1]{\caption[]{#1 \emph{(suite)}}\\} \newcommand{\suitepage}[1]{\multicolumn{#1}{r}{\footnotesize\itshape\color{uqoGris}suite à la page suivante~\faIcon{angle-double-right}}\\} \newcommand{\finTableau}{\arrayrulecolor{uqoBleu!55}\specialrule{0.8pt}{0pt}{0pt}} % \nopagebreak : la légende reste collée à son schéma \newcommand{\figcaption}[2]{\par\nopagebreak\vspace{2pt}\nopagebreak\captionof{figure}{#1}\label{#2}} % En bref : résumé d'ouverture de chapitre \newtcolorbox{enbref}{enhanced,breakable,colback=uqoBleu!4,colframe=uqoBleu!4,boxrule=0pt,arc=0pt, borderline west={4pt}{0pt}{uqoBleu},left=12pt,right=8pt,top=6pt,bottom=6pt,before skip=6pt,after skip=12pt, fontupper=\small,title={\faIcon{compass}~En bref},fonttitle=\sffamily\bfseries\small,coltitle=uqoBleu,colbacktitle=uqoBleu!4,toptitle=4pt,bottomtitle=0pt} % ============================================================================== % SYSTÈME « CONVERSATION » : bulles Vous / IA / analyse % ============================================================================== \newtcolorbox{vous}[1][]{enhanced,breakable, colback=uqoBleu!5,colframe=uqoBleu!5,boxrule=0pt,arc=7pt, borderline west={3.5pt}{0pt}{uqoBleu}, left=12pt,right=10pt,top=12pt,bottom=8pt,before skip=14pt,after skip=4pt, fontupper=\small\sffamily, attach boxed title to top left={xshift=10pt,yshift=-\tcboxedtitleheight/2}, boxed title style={colback=uqoBleu,colframe=uqoBleu,arc=9pt,boxrule=0pt,left=8pt,right=8pt,top=3pt,bottom=3pt}, coltitle=white,fonttitle=\bfseries\small\sffamily, title={\faIcon{user-edit}~~Vous\ifx\relax#1\relax\else~~{\normalfont\footnotesize\color{white!85!uqoBleu}\faIcon{caret-right}~#1}\fi}} \newtcolorbox{ia}[1][]{enhanced,breakable, colback=black!4,colframe=black!4,boxrule=0pt,arc=7pt, borderline east={3.5pt}{0pt}{uqoGris}, left=10pt,right=12pt,top=12pt,bottom=8pt,before skip=10pt,after skip=4pt, fontupper=\small, attach boxed title to top right={xshift=-10pt,yshift=-\tcboxedtitleheight/2}, boxed title style={colback=uqoGris,colframe=uqoGris,arc=9pt,boxrule=0pt,left=8pt,right=8pt,top=3pt,bottom=3pt}, coltitle=white,fonttitle=\bfseries\small\sffamily, title={\faIcon{robot}~~Assistant IA\ifx\relax#1\relax\else~~{\normalfont\footnotesize\faIcon{caret-right}~#1}\fi}} \newtcolorbox{analyse}[1][Pourquoi cette requête fonctionne]{enhanced,breakable, colback=uqoOr!7,colframe=uqoOr!7,boxrule=0pt,arc=4pt, borderline west={3.5pt}{0pt}{uqoOr}, left=10pt,right=8pt,top=6pt,bottom=6pt,before skip=4pt,after skip=14pt, fontupper=\small, title={\faIcon{lightbulb}~#1},coltitle=uqoBleu,fonttitle=\bfseries\small\sffamily, colbacktitle=uqoOr!7,toptitle=4pt,bottomtitle=0pt} \newtcolorbox{faibleforte}[1][]{enhanced,breakable,sidebyside,sidebyside align=top seam, lefthand ratio=0.44,segmentation style={uqoGris!50,dashed,line width=0.6pt}, colback=white,colframe=uqoGris!50,boxrule=0.6pt,arc=4pt, left=6pt,right=6pt,top=6pt,bottom=6pt,before skip=10pt,after skip=10pt, fontupper=\small,fontlower=\small, title={#1},coltitle=white,fonttitle=\bfseries\small\sffamily,colbacktitle=uqoGris} \newcommand{\faible}{\textcolor{uqoRouge}{\faIcon{times-circle}~\textbf{\sffamily Requête faible}}\par\smallskip} \newcommand{\forte}{\textcolor{uqoVert}{\faIcon{check-circle}~\textbf{\sffamily Requête forte}}\par\smallskip} \newcommand{\reponsereelle}{\textcolor{uqoGris}{\faIcon{robot}}~{\footnotesize\sffamily\bfseries\color{uqoGris}Réponse réelle (Claude Sonnet 4.6) :}~} % Étiquettes de structure d'une requête \newcommand{\etq}[2]{\tikz[baseline=(t.base)]\node[fill=#1,text=white,font=\sffamily\bfseries\tiny,rounded corners=1.5pt,inner xsep=3pt,inner ysep=2pt](t){#2};\hspace{2pt}} \newcommand{\eRole}{\etq{uqoViolet}{RÔLE}} \newcommand{\eCtx}{\etq{uqoTeal}{CONTEXTE}} \newcommand{\eTache}{\etq{uqoBleuClair}{TÂCHE}} \newcommand{\eContr}{\etq{uqoRouge!85}{CONTRAINTES}} \newcommand{\eFormat}{\etq{uqoOrange}{FORMAT}} \newcommand{\eDonnees}{\etq{uqoVert}{DONNÉES}} % Fiche de requête testée : id, titre, tags, niveau, C1..C5 (1 = réussi, 0 = échoué, 2 = sans objet) \newcommand{\crit}[2]{\ifnum#2=1 \textcolor{uqoVert}{\faIcon{check-circle}}\else\ifnum#2=0 \textcolor{uqoRouge}{\faIcon{times-circle}}\else\textcolor{uqoGrisClair}{\faIcon{minus-circle}}\fi\fi{\scriptsize\sffamily\,#1}} \newcommand{\testbadge}{\tikz[baseline=(b.base)]\node[fill=uqoVert,text=white,font=\sffamily\bfseries\scriptsize,rounded corners=3pt,inner sep=2.5pt](b){\faIcon{vial}~TESTÉ · Claude Sonnet 4.6 · 6 sept. 2026};} \newcommand{\nontestebadge}{\tikz[baseline=(b.base)]\node[fill=uqoGris,text=white,font=\sffamily\bfseries\scriptsize,rounded corners=3pt,inner sep=2.5pt](b){\faIcon{flask}~NON TESTÉ PAR API · nécessite un dossier de travail};} \newcommand{\reqmeta}[9]{\par\vspace{12pt}\noindent \begin{tcolorbox}[enhanced,colback=uqoBleu!3,colframe=uqoBleu!35,boxrule=0.5pt,arc=4pt,left=8pt,right=8pt,top=5pt,bottom=5pt,before skip=0pt,after skip=-8pt] \tikz[baseline=(i.base)]\node[fill=uqoBleu,text=white,font=\sffamily\bfseries,rounded corners=3pt,inner sep=3.5pt](i){#1};~~{\large\bfseries\sffamily\color{uqoBleu}#2}\hfill #4\\[4pt] {\footnotesize\sffamily\color{uqoGris}\faIcon{tag}~#3}\hfill\testbadge\quad\crit{C1}{#5}\ \crit{C2}{#6}\ \crit{C3}{#7}\ \crit{C4}{#8}\ \crit{C5}{#9} \end{tcolorbox}} % Logos \newcommand{\logo}[2][0.95em]{\raisebox{-0.22\height}{\includegraphics[height=#1]{logos/#2.pdf}}} % Carte outil (grille) : nom, firme, fichier logo \newtcolorbox{toolcard}[3]{enhanced,colback=white,colframe=uqoBleu!60,boxrule=0.7pt,arc=5pt, drop shadow={uqoGris!35},left=7pt,right=7pt,top=5pt,bottom=6pt, colbacktitle=uqoBgClair,coltitle=uqoBleu,fonttitle=\sffamily,toptitle=5pt,bottomtitle=5pt, title={\raisebox{-0.3\height}{\includegraphics[height=1.3em]{logos/#3.pdf}}~~\textbf{\large #1}\hfill{\footnotesize\color{uqoGris}#2}},fontupper=\small} \newcommand{\cardline}[2]{\par\noindent{\color{uqoBleu}#1}~\textbf{\sffamily\footnotesize #2}\par\vspace{1pt}} \newcommand{\etape}[1]{\tikz[baseline=(e.base)]\node[circle,fill=uqoBleu,text=white,font=\sffamily\bfseries\footnotesize,inner sep=1.5pt,minimum size=15pt](e){#1};} % --- Pastilles de niveau et feux --- \newcommand{\niv}[2]{\tikz[baseline=(n.base)]\node[fill=#1,text=white,font=\bfseries\sffamily\footnotesize,rounded corners=2pt,inner sep=2.5pt](n){#2};} \newcommand{\nivun}{\niv{uqoRouge}{Niveau 1}} \newcommand{\nivdeux}{\niv{uqoOrange}{Niveau 2}} \newcommand{\nivtrois}{\niv{uqoBleuClair}{Niveau 3}} \newcommand{\nivquatre}{\niv{uqoGris}{Niveau 4}} \newcommand{\nivcinq}{\niv{uqoVert}{Niveau 5}} \newcommand{\feuvert}{\textcolor{uqoVert}{\faIcon{check-circle}}} \newcommand{\feujaune}{\textcolor{uqoOrange}{\faIcon{exclamation-triangle}}} \newcommand{\feurouge}{\textcolor{uqoRouge}{\faIcon{times-circle}}} % --- Styles TikZ communs aux schémas --- \tikzset{ bloc/.style={draw=uqoBleu,thick,rounded corners=3pt,fill=uqoBgClair,align=center,font=\small\sffamily,inner sep=5pt}, blocfonce/.style={draw=uqoBleu,thick,rounded corners=3pt,fill=uqoBleu,text=white,align=center,font=\small\sffamily\bfseries,inner sep=5pt}, blocor/.style={draw=uqoOr,thick,rounded corners=3pt,fill=uqoOr!15,align=center,font=\small\sffamily,inner sep=5pt}, blocrouge/.style={draw=uqoRouge,thick,rounded corners=3pt,fill=uqoRouge!8,align=center,font=\small\sffamily,inner sep=5pt}, blocvert/.style={draw=uqoVert,thick,rounded corners=3pt,fill=uqoVert!8,align=center,font=\small\sffamily,inner sep=5pt}, blocgris/.style={draw=uqoGris,thick,rounded corners=3pt,fill=black!4,align=center,font=\small\sffamily,inner sep=5pt}, fl/.style={-{Latex[length=2.2mm]},thick,uqoGris}, flb/.style={-{Latex[length=2.2mm]},thick,uqoBleu}, flo/.style={-{Latex[length=2.2mm]},thick,uqoOr!80!black}, flr/.style={-{Latex[length=2.2mm]},thick,uqoRouge}, etiq/.style={font=\footnotesize\sffamily\color{uqoGris},align=center}, losange/.style={diamond,draw=uqoOr!80!black,thick,fill=uqoOr!12,aspect=2.2,align=center,font=\footnotesize\sffamily,inner sep=1pt}, conteneur/.style={draw=uqoGris!60,dashed,rounded corners=6pt,inner sep=8pt,fill=black!2} } \renewcommand{\arraystretch}{1.25} \setlist{nosep,leftmargin=1.6em} % ============================================================================== % AJOUTS PROPRES AU GUIDE CLAUDE CODE % ============================================================================== % touche de clavier \newcommand{\kbd}[1]{\tikz[baseline=(k.base)]\node[draw=black!35,fill=black!4,rounded corners=2.5pt,inner xsep=3.5pt,inner ysep=1.8pt,font=\sffamily\footnotesize\bfseries,text=black!75](k){#1};} % étiquette « niveau » du lecteur \newcommand{\debutant}{\niv{uqoVert}{Débutant}} \newcommand{\intermediaire}{\niv{uqoBleuClair}{Intermédiaire}} \newcommand{\avance}{\niv{uqoViolet}{Avancé}} % boîte « astuce » (or, icône ampoule) et « piège » (rouge) \newtcolorbox{astuce}[1][Astuce]{enhanced,breakable,colback=uqoOr!7,colframe=uqoOr!7,boxrule=0pt,arc=4pt, borderline west={3.5pt}{0pt}{uqoOr},left=10pt,right=8pt,top=6pt,bottom=6pt,before skip=8pt,after skip=8pt, fontupper=\small,title={\faIcon{lightbulb}~#1},coltitle=uqoBleu,fonttitle=\bfseries\small\sffamily,colbacktitle=uqoOr!7,toptitle=4pt,bottomtitle=0pt} \newtcolorbox{piege}[1][Piège]{enhanced,breakable,colback=uqoRouge!5,colframe=uqoRouge!5,boxrule=0pt,arc=4pt, borderline west={3.5pt}{0pt}{uqoRouge},left=10pt,right=8pt,top=6pt,bottom=6pt,before skip=8pt,after skip=8pt, fontupper=\small,title={\faIcon{exclamation-triangle}~#1},coltitle=uqoRouge,fonttitle=\bfseries\small\sffamily,colbacktitle=uqoRouge!5,toptitle=4pt,bottomtitle=0pt} % chemin de fichier en prose \newcommand{\chemin}[1]{\texttt{#1}} % coche verte utilisable dans les Verbatim : §vok¡¿ \newcommand{\vok}{\textcolor{termGreen}{\faIcon{check}}}