%!TEX lualatex
\documentclass[a4paper,french]{article}
\usepackage[table,svgnames]{xcolor}
\usepackage{listofitems}
\usepackage{simplekv}
\usepackage{xinttools}
\usepackage{xfp}
\usepackage{tabularray}
%===============================mise en forme
\usepackage[margin=1.5cm]{geometry}
\setlength{\parindent}{0em}
\usepackage{codehigh}
%=========================tableau compétences
\defKV[tblcomp]{%
liste=\def\COMPETliste{#1},%
largeurs=\def\COMPETlargeurs{#1},%
eval=\def\COMPETtitre{#1},%
poltitre=\def\COMPETlegende{#1},%
polcomp=\def\COMPETcomp{#1},%
lignesep=\def\COMPETsep{#1}
}
\setKVdefault[tblcomp]{%
liste={Compétence A § Compétence B § Compétence C § Compétence D § Compétence E},%
largeurs={8.5cm § 0.5cm § 1.5cm},%comp + niv + note
eval=DS01,%
poltitre=\small\sffamily\bfseries,%
polcomp=\small\sffamily,%
lignesep=2pt,%
centre=false
}
%pour créer le body du tableau (j'ai encore un peu de mal avec ça...)
\long\def\CPaddto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
\newcommand\tblrcomp[1][]{%
\useKVdefault[tblcomp]
\setKV[tblcomp]{#1}% on paramètres les nouvelles clés et on les simplifie
\setsepchar{§}
\readlist*\ListeCompetences\COMPETliste
\readlist*\ListeLargeurs\COMPETlargeurs
%création du "body" grâce au compteur de lignes \rownum et boucle xintfor
\def\CPtabledatacomp{}
\xintFor* ##1 in {\xintSeq{1}{\ListeCompetenceslen}}\do{%
\CPaddto\CPtabledatacomp{\ListeCompetences[\the\numexpr\therownum-1\relax] & & & & \\}%
}
%le tableau
\ifboolKV[tblcomp]{centre}{\begin{center}}{}
\begin{tblr}[expand=\CPtabledatacomp]%
{%
hlines,vlines,colspec={Q[l,m,\ListeLargeurs[1]]*{3}{Q[c,m,\ListeLargeurs[2]]}Q[c,m,\ListeLargeurs[3]]},%
rowsep=\COMPETsep,%
row{1}={font=\COMPETlegende,bg=lightgray!50},%
row{2-Y}={font=\COMPETcomp},%
row{Z}={font=\COMPETlegende,bg=white,fg=blue},%
cell{2}{Z}={r=\the\numexpr\ListeCompetenceslen+1\relax}{},%
cell{Z}{1}={c=4}{}
}
\COMPETtitre & NA & PA & A & Note \\
\CPtabledatacomp
NA : Non acquis / PA : Partiellement acquis / A : Acquis & & & & \\
\end{tblr}
\ifboolKV[tblcomp]{centre}{\end{center}}{}
}
\newcommand\tblrcompbis[1][]{%
\useKVdefault[tblcomp]
\setKV[tblcomp]{#1}% on paramètres les nouvelles clés et on les simplifie
\setsepchar{§}
\readlist*\ListeCompetences\COMPETliste
\readlist*\ListeLargeurs\COMPETlargeurs
%création du "body" grâce au compteur de lignes \rownum et boucle xintfor
\def\CPtabledatacomp{}
\xintFor* ##1 in {\xintSeq{1}{\ListeCompetenceslen}}\do{%
\CPaddto\CPtabledatacomp{\ListeCompetences[\the\numexpr\therownum-1\relax] & & & & \\}%
}
%le tableau
%on trace les bordures := hlines,vlines
%5 colonnes := 1ère (largeur n°1) + n°2/3/4/5 (largeur n°2)
%1ère ligne := fond gris clair
%dernière ligne := écriture bleue + fusion des 5 colonnes
\ifboolKV[tblcomp]{centre}{\begin{center}}{}
\begin{tblr}[expand=\CPtabledatacomp]%
{%
hlines,vlines,colspec={Q[l,m,\ListeLargeurs[1]]*{4}{Q[c,m,\ListeLargeurs[2]]}},%
rowsep=\COMPETsep,%
row{1}={font=\COMPETlegende,bg=lightgray!50},%
row{2-Y}={font=\COMPETcomp},%
row{Z}={font=\COMPETlegende,bg=white,fg=blue},%
cell{Z}{1}={c=5}{}
}
\COMPETtitre & N1 & N2 & N3 & N4 \\
\CPtabledatacomp
N1 : Niv1 / N2 : Niv2 / N3 : Niv3 / N4 : Niv4 & & & & \\
\end{tblr}
\ifboolKV[tblcomp]{centre}{\end{center}}{}
}
\begin{document}
\part*{Tableau de compétences}
\begin{codehigh}[language=latex/latex2]
%rendu par défaut
\tblrcomp
\end{codehigh}
\tblrcomp
\medskip
\begin{codehigh}[language=latex/latex2]
%personnalisation des compétences, du titre et des largeurs
\tblrcomp[%
eval={Classe - Évaluation 01},%
liste={Je sais calculer § Je sais rédiger § Je sais représenter},%
largeurs={6cm § 1cm § 2cm},%
centre]
\end{codehigh}
\tblrcomp[eval={Classe - Évaluation 01},liste={Je sais calculer § Je sais rédiger § Je sais représenter},largeurs={6cm § 1cm § 2cm},centre]
\medskip
\begin{codehigh}[language=latex/latex2]
%rendu par défaut
\tblrcompbis
\end{codehigh}
\tblrcompbis
\end{document}