From 7b492541e0141f4f7b84fbbc7a3b8b371766ec61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9o=20Baras?= Date: Mon, 5 Apr 2021 12:05:04 +0200 Subject: [PATCH] =?UTF-8?q?R=C3=A9sout=20des=20probl=C3=A8mes=20d'encodage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- latex/macros_formations.sty | 3 +- latex/modeles/affichages.tex | 7 +++ latex/modeles/tableau.tex | 5 +- latex/modeles/tableau_exemple.tex | 11 ++-- latex/modeles/tableau_sae.tex | 3 +- latex/pn_formation.tex | 56 +++++++++---------- latex/referentiel_BUT1.tex | 56 +++++++++---------- latex/ressources/R101.tex | 15 +++--- latex/ressources/R102.tex | 2 +- latex/ressources/R104.tex | 11 ++-- latex/ressources/R105.tex | 11 ++-- latex/ressources/R108.tex | 11 ++-- latex/ressources/R109.tex | 3 +- latex/ressources/R110.tex | 1 + latex/ressources/R111.tex | 11 ++-- latex/ressources/R112.tex | 2 +- latex/ressources/R113.tex | 18 +++---- latex/ressources/R114.tex | 3 +- latex/ressources/R115.tex | 15 +++--- latex/ressources/R201.tex | 4 +- latex/ressources/R203.tex | 1 + latex/ressources/R204.tex | 7 +-- latex/ressources/R205.tex | 1 + latex/ressources/R206.tex | 6 ++- latex/ressources/R208.tex | 2 +- latex/ressources/R210.tex | 5 +- latex/ressources/R211.tex | 16 +++--- latex/ressources/R212.tex | 5 +- latex/ressources/R213.tex | 1 + latex/ressources/R214.tex | 4 +- latex/saes/SAE11.tex | 4 +- latex/saes/SAE12.tex | 2 +- latex/saes/SAE13.tex | 4 +- latex/saes/SAE14.tex | 4 +- latex/saes/SAE15.tex | 4 +- latex/saes/SAE21.tex | 3 +- latex/saes/SAE22.tex | 2 +- latex/saes/SAE23.tex | 2 +- python/export_docx_to_yaml.py | 20 ++----- python/export_sae_docx_to_yaml.py | 14 +++-- python/export_yaml_to_latex.py | 87 ++++++++++++++++-------------- python/import/ressources_v0.docx | Bin 99663 -> 99646 bytes python/pn/modele_exemple_sae.tex | 4 +- python/pn/ressources.yml | 4 +- python/ressource.py | 18 +++---- python/ressourcedocx.py | 60 +++++++++++++++++---- python/tools.py | 9 ++-- python/yaml/R101.yml | 46 ---------------- yaml/ressources/R113.yml | 66 +++++++++++++++++++++++ yaml/ressources/R114.yml | 62 +++++++++++++++++++++ 50 files changed, 439 insertions(+), 272 deletions(-) delete mode 100644 python/yaml/R101.yml create mode 100644 yaml/ressources/R113.yml create mode 100644 yaml/ressources/R114.yml diff --git a/latex/macros_formations.sty b/latex/macros_formations.sty index 8f3e8fb..0c07975 100644 --- a/latex/macros_formations.sty +++ b/latex/macros_formations.sty @@ -253,7 +253,8 @@ \expandafter\xdef\csname ESsae\currentESsae\endcsname{\csname Sname\currentSsae\endcsname} % nom de la SAE \expandafter\xdef\csname ESname\currentESsae\endcsname{#1} % nom/intitule - \expandafter\xdef\csname EScode\currentESsae\endcsname{\csname Scode\currentSsae\endcsname} % nom de la SAE + \expandafter\xdef\csname EScode\currentESsae\endcsname{\csname Scode\currentSsae\endcsname} % le code de la SAE + \expandafter\xdef\csname EScodeE\currentESsae\endcsname{\currentESsae} % le code de l'exemple % \expandafter\xdef\csname ESsem\currentESsae\endcsname{\csname semestrenumero\currentsemestre\endcsname} % nom du semestre } diff --git a/latex/modeles/affichages.tex b/latex/modeles/affichages.tex index 5440177..7ba1a55 100644 --- a/latex/modeles/affichages.tex +++ b/latex/modeles/affichages.tex @@ -11,7 +11,14 @@ \forLoop{1}{\value{cptS\sem}}{nosae}{ % Pour chaque SAE %A\Alph{noressource} \xdef\currentSAE{\sem\Alph{nosae}} + + \xdef\saecode{\csname Scode\currentSAE\endcsname} + \xdef\saenom{\csname Sname\currentSAE\endcsname} + %\addtocontents{toc}{hihi} %\saecode : \saenom} + \addcontentsline{toc}{subsubsection}{SAÉ} + \tableauSAE{\currentSAE} + \forLoop{1}{\value{cptSexemple\currentSAE}}{noexemple}{ \tableauExempleSAE{\currentSAE}{\Alph{noexemple}} } diff --git a/latex/modeles/tableau.tex b/latex/modeles/tableau.tex index 308081f..5caa5d0 100644 --- a/latex/modeles/tableau.tex +++ b/latex/modeles/tableau.tex @@ -139,9 +139,10 @@ Aucun \begin{tabular}[t]{@{}T@{}} % {\bfseries Ancrage et contexte professionnel :} \\ \forLoop{1}{\value{cptSexemple\CODE}}{noligne}{ - \xdef\exemplecode{\CODE\Alph{noligne}} + \xdef\exemplecode{\csname EScodeE\CODE\Alph{noligne}\endcsname} \xdef\titreexemple{\csname ESname\exemplecode\endcsname} - Exemple \arabic{noligne}~: \titreexemple + \xdef\contenu{\titreexemple} + Exemple \arabic{noligne}~: \hyperlink{exemple:\exemplecode}{\contenu} \tabularnewline } \end{tabular} diff --git a/latex/modeles/tableau_exemple.tex b/latex/modeles/tableau_exemple.tex index 3c00550..2b12517 100644 --- a/latex/modeles/tableau_exemple.tex +++ b/latex/modeles/tableau_exemple.tex @@ -9,21 +9,19 @@ \setlength{\tabcolsep}{0.125cm} % Marge des colonnes \setlength{\extrarowheight}{2pt} % Marge des lignes +\xdef\exemplecode{\csname EScodeE\EXEMPLE\endcsname} % 1er tableau : Nom/Code/Semestre % 3ème tableau : descriptif \begin{tabular}[t]{|P|T|} \hline {\bfseries Titre} & - {\bfseries \csname ESname\EXEMPLE\endcsname} \\ + \multicolumn{1}{l|}{ \hypertarget{exemple:\exemplecode}{\bfseries \csname ESname\EXEMPLE\endcsname} } + \\ \hline \xdef\saecode{\csname EScode\EXEMPLE\endcsname} {\bfseries Exemple de la \saecode} & \hyperlink{sae:\saecode}{\csname ESsae\EXEMPLE\endcsname} \\ - -\hline - {\bfseries Description} & - \tableauChampLong{\csname ESdescription\EXEMPLE\endcsname} \\ \hline { \setlength{\extrarowheight}{0pt} \begin{tabular}[t]{@{}P@{}} @@ -33,6 +31,9 @@ \end{tabular} } & \tableauChampLong{\csname ESproblematique\EXEMPLE\endcsname} \\ +\hline + {\bfseries Description} & + \tableauChampLong{\csname ESdescription\EXEMPLE\endcsname} \\ \hline { \setlength{\extrarowheight}{0pt} \begin{tabular}[t]{@{}P@{}} diff --git a/latex/modeles/tableau_sae.tex b/latex/modeles/tableau_sae.tex index 193dc9b..77116c2 100644 --- a/latex/modeles/tableau_sae.tex +++ b/latex/modeles/tableau_sae.tex @@ -121,7 +121,8 @@ \end{tabular} } & - \tableauExemples{\CODE} \\ +\tableauExemples{\CODE} \\ + \hline \end{tabular} diff --git a/latex/pn_formation.tex b/latex/pn_formation.tex index abcf79e..c5cfa16 100644 --- a/latex/pn_formation.tex +++ b/latex/pn_formation.tex @@ -1,6 +1,7 @@ \documentclass[11pt,mathserif]{article} % mathserif %\usepackage[T1]{fontenc} +% \usepackage{libertinust1math} \usepackage[LUC,T2A,T1]{fontenc}% %\usepackage[utf8x]{inputenc}% \usepackage[utf8]{inputenc} @@ -11,7 +12,7 @@ \usepackage{textcomp} \usepackage{colortbl}% \usepackage{etoolbox} -\usepackage[french]{babel} +\usepackage[francais]{babel} \usepackage{hyperref} \usepackage{array} % Pour les tableaux \usepackage{multicol} @@ -19,8 +20,9 @@ \usepackage{forloop} \usepackage{xparse} \usepackage{enumitem} -\usepackage{longtable} +% \usepackage{longtable} \usepackage{hyperref} +\usepackage{amsmath} % pour les formules de maths \setlist{leftmargin=1em,topsep=0pt,partopsep=0pt,itemsep=0pt,itemindent=0em} @@ -103,11 +105,11 @@ \def\sem{A} \subsection{SAÉs du semestre 1} - +% \listeTitreSAE{\sem} - +% \subsection{Ressources du semestre 1} - +% \listeTitreRessource{\sem} \newpage @@ -117,27 +119,27 @@ % Les ressources du semestre 1 \affichageRessource{\sem} - -%%%%%%%%%%%%%%%% -%% SEMESTRE 2 %% -%%%%%%%%%%%%%%%% -\section{Semestre 2} -\def\sem{B} % Le semestre 2 - -\subsection{SAÉs du semestre 2} - -\listeTitreSAE{\sem} - -\subsection{Ressources du semestre 2} - -\listeTitreRessource{\sem} - -\newpage - -% Les SAE du semestre 2 + les exemples -\affichageSAE{\sem} - -% Les ressources du semestre 2 -\affichageRessource{\sem} +% +%%%%%%%%%%%%%%%%% +%%% SEMESTRE 2 %% +%%%%%%%%%%%%%%%%% +%\section{Semestre 2} +%\def\sem{B} % Le semestre 2 +% +%\subsection{SAÉs du semestre 2} +% +%\listeTitreSAE{\sem} +% +%\subsection{Ressources du semestre 2} +% +%\listeTitreRessource{\sem} +% +%\newpage +% +%% Les SAE du semestre 2 + les exemples +%\affichageSAE{\sem} +% +%% Les ressources du semestre 2 +%\affichageRessource{\sem} \end{document} diff --git a/latex/referentiel_BUT1.tex b/latex/referentiel_BUT1.tex index bc59427..a6db5b0 100644 --- a/latex/referentiel_BUT1.tex +++ b/latex/referentiel_BUT1.tex @@ -28,7 +28,7 @@ \input{saes/SAE15.tex} \input{saes/SAE15_exemple1.tex} - +% \input{ressources/R101.tex} \input{ressources/R102.tex} \input{ressources/R103.tex} @@ -53,30 +53,30 @@ \input{saes/SAE21.tex} \input{saes/SAE21_exemple1.tex} -\input{saes/SAE21_exemple2.tex} -\input{saes/SAE21_exemple3.tex} - -\input{saes/SAE22.tex} -\input{saes/SAE22_exemple1.tex} -\input{saes/SAE22_exemple2.tex} -\input{saes/SAE22_exemple3.tex} - -\input{saes/SAE23.tex} -\input{saes/SAE23_exemple1.tex} -\input{saes/SAE23_exemple2.tex} - - -\input{ressources/R201.tex} -\input{ressources/R202.tex} -\input{ressources/R203.tex} -\input{ressources/R204.tex} -\input{ressources/R205.tex} -\input{ressources/R206.tex} -\input{ressources/R207.tex} -\input{ressources/R208.tex} -\input{ressources/R209.tex} -\input{ressources/R210.tex} -\input{ressources/R211.tex} -\input{ressources/R212.tex} -\input{ressources/R213.tex} -\input{ressources/R214.tex} +%\input{saes/SAE21_exemple2.tex} +%\input{saes/SAE21_exemple3.tex} +% +%\input{saes/SAE22.tex} +%\input{saes/SAE22_exemple1.tex} +%\input{saes/SAE22_exemple2.tex} +%\input{saes/SAE22_exemple3.tex} +% +%\input{saes/SAE23.tex} +%\input{saes/SAE23_exemple1.tex} +%\input{saes/SAE23_exemple2.tex} +% +% +%\input{ressources/R201.tex} +%\input{ressources/R202.tex} +%\input{ressources/R203.tex} +%\input{ressources/R204.tex} +%\input{ressources/R205.tex} +%\input{ressources/R206.tex} +%\input{ressources/R207.tex} +%\input{ressources/R208.tex} +%\input{ressources/R209.tex} +%\input{ressources/R210.tex} +%\input{ressources/R211.tex} +%\input{ressources/R212.tex} +%\input{ressources/R213.tex} +%\input{ressources/R214.tex} diff --git a/latex/ressources/R101.tex b/latex/ressources/R101.tex index df788ce..d982ac5 100644 --- a/latex/ressources/R101.tex +++ b/latex/ressources/R101.tex @@ -34,16 +34,17 @@ l'Internet'' (RT1) et ``Connecter les entreprises et les usagers'' (RT2). Elle contribue aussi à la compétence ``Créer des outils et applications informatiques pour les R\&T'' (RT3) à travers la découverte du poste client et de son environnement logiciel. -Elle permet à l'étudiant de découvrir et déployer un premier +Cette ressource permet à l'étudiant de découvrir et déployer un premier système d'information au sein d'une entreprise. À travers des exercices de mise en place progressive de réseaux locaux, d'interconnection d'équipements et de prise en main des fonctions de base des systèmes d'exploitation, l'étudiant découvrira les principaux concepts utilisés dans les réseaux informatiques, et commencera à comprendre le rôle et -les principes des normes et protocoles essentiels, +les principes des normes et protocoles essentiels des réseaux locaux, comme Ethernet, TCP/IP, DHCP, DNS. -On introduira des notions de sécurité informatique (en s'appuyant sur les - recommandations de l'ANSSI, CyberEdu, CyberMalveillance).} +On introduira des notions de sécurité informatique (les ressources +associées aux recommandations de l'ANSSI, CyberEdu, CyberMalveillance +pourront servir de support).} % Contenus \ajoutRcontenudetaille{ @@ -77,13 +78,11 @@ On introduira des notions de sécurité informatique (en s'appuyant sur les \item Architecture client-serveur dans un réseau local \begin{itemize} - \item + \item Mise en place d'une architecture client/serveur simple (serveur d'authentification/de fichiers et + postes clients associés) \end{itemize} -\end{itemize} -postes clients associés) -\begin{itemize} \item Introduction à la sécurité informatique \end{itemize} diff --git a/latex/ressources/R102.tex b/latex/ressources/R102.tex index 3a26d57..aac92af 100644 --- a/latex/ressources/R102.tex +++ b/latex/ressources/R102.tex @@ -68,4 +68,4 @@ captures, la génération et analyse de trames. } % Mots-clés -\ajoutRmotscles{Architecture en couches, topologies, protocoles, modèle TCP/IP } +\ajoutRmotscles{Architecture en couches, topologies, protocoles, modèle TCP/IP} diff --git a/latex/ressources/R104.tex b/latex/ressources/R104.tex index 8990e23..30fd830 100644 --- a/latex/ressources/R104.tex +++ b/latex/ressources/R104.tex @@ -47,7 +47,8 @@ instruments de mesure et d'interpréter les résultats.} Lois de base de l'électricité, théorèmes fondamentaux, pont diviseur \item Résistance et Condensateur. Savoir réaliser un circuit simple et - savoir brancher les appareils de mesure sur platine d'expérimentation + savoir brancher les appareils de + mesure sur platine d'expérimentation \item Mesure de signaux avec calculs simples (voltmètre, tension moyenne, efficace\ldots) @@ -59,11 +60,13 @@ instruments de mesure et d'interpréter les résultats.} le calcul de la puissance maximale. \item Dimensionnement des puissances d'une installation télécom ou réseau. - Sensibilisation à la sécurité électrique et au Développement Durable. - Coût de fonctionnement des équipements. + Sensibilisation à la sécurité + électrique et au Développement Durable. Coût de fonctionnement des + équipements. \item Exemples : dimensionnement d'une alimentation pour des serveurs, - limite de puissance sur un câble (alternatif ou continu). + limite de puissance sur un câble + (alternatif ou continu). \end{itemize} } diff --git a/latex/ressources/R105.tex b/latex/ressources/R105.tex index 0e69066..873a61b 100644 --- a/latex/ressources/R105.tex +++ b/latex/ressources/R105.tex @@ -2,7 +2,7 @@ % Ressources %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\nouvelleressource{R105}{Supports de transmission pour les réseaux} +\nouvelleressource{R105}{Supports de transmission pour les réseaux locaux} \ajoutRheures{12}{6} @@ -41,13 +41,14 @@ transmission.} opérateur) \item Caractéristiques d'un ou plusieurs types de supports (exemples: retard - de propagation, atténuation, continuité, échos, bruit, perturbations, - identifier un défaut, bande passante,\ldots{} ) à partir de mesures et - d'analyse des signaux + de propagation, atténuation, + continuité, échos, bruit, perturbations, identifier un défaut, bande + passante,\ldots{} ) à partir de mesures + et d'analyse des signaux \item Prolongement possible : recettage, certification LAN. \end{itemize} } % Mots-clés -\ajoutRmotscles{Supports de transmission (fibre optique, cuivre, radio), mesures } +\ajoutRmotscles{Supports de transmission (fibre optique, cuivre, radio), mesures} diff --git a/latex/ressources/R108.tex b/latex/ressources/R108.tex index 725ac7a..495ae7e 100644 --- a/latex/ressources/R108.tex +++ b/latex/ressources/R108.tex @@ -28,11 +28,12 @@ % Le descriptif \ajoutRancrage{Cette ressource traite des bases de l'utilisation d'un poste client et -de son système d'exploitation. Elle est essentielle pour la prise en -main pratique d'un système informatique en abordant notamment la gestion -des données dans un espace de stockage (organisation, recherche, droits) -et la maîtrise d'un environnement numérique, deux thèmes attendus par le -référentiel PIX (https://pix.fr/competences). +de son système d'exploitation. +Elle est essentielle pour la prise en main pratique d'un système +informatique en abordant notamment la gestion des données dans un espace +de stockage (organisation, recherche, droits) et la maîtrise d'un +environnement numérique, deux thèmes attendus par le référentiel PIX +(https://pix.fr/competences). Cette ressource introduit également un usage avancé du système d'exploitation nécessaire au besoin d'un professionnel R\&T. Elle vise la maîtrise de commandes en ligne pour gérer l'arborescence de fichiers, diff --git a/latex/ressources/R109.tex b/latex/ressources/R109.tex index 4f1c53b..b9b0e00 100644 --- a/latex/ressources/R109.tex +++ b/latex/ressources/R109.tex @@ -48,7 +48,8 @@ navigateur Web.} Structure d'un site Web : client-serveur, arborescence, URL \item Structure d'une page : langage à balise, mise en forme et feuilles de - styles (notions élémentaires de CSS), notions de responsive design + styles (notions élémentaires + de CSS), notions de responsive design \item Contenu d'une page : éléments multimédia, encodage des caractères \item diff --git a/latex/ressources/R110.tex b/latex/ressources/R110.tex index 17a09bf..ab1324c 100644 --- a/latex/ressources/R110.tex +++ b/latex/ressources/R110.tex @@ -23,6 +23,7 @@ \ajoutRsae{SAÉ12}{S'initier aux réseaux informatiques} \ajoutRsae{SAÉ13}{Découvrir un dispositif de transmission} \ajoutRsae{SAÉ14}{Se présenter sur Internet} +\ajoutRsae{SAÉ15}{Traiter des données} % Les pre-requis diff --git a/latex/ressources/R111.tex b/latex/ressources/R111.tex index 54c5620..265a082 100644 --- a/latex/ressources/R111.tex +++ b/latex/ressources/R111.tex @@ -2,7 +2,7 @@ % Ressources %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\nouvelleressource{R111}{Expression-Culture-Communication Professionnelles (ECC1)} +\nouvelleressource{R111}{Expression-Culture-Communication Professionnelles 1} \ajoutRheures{30}{21} @@ -23,6 +23,7 @@ \ajoutRsae{SAÉ12}{S'initier aux réseaux informatiques} \ajoutRsae{SAÉ13}{Découvrir un dispositif de transmission} \ajoutRsae{SAÉ14}{Se présenter sur Internet} +\ajoutRsae{SAÉ15}{Traiter des données} % Les pre-requis @@ -47,8 +48,8 @@ l'importance des savoir-être et aux enjeux du développement durable.} Analyser et restituer des informations \item Produire des écrits courts, clairs, structurés, adaptés et répondant - aux normes de présentation professionnelle et académique (mail, - argumentation courte\ldots) + aux normes de présentation professionnelle + et académique (mail, argumentation courte\ldots) \item Réécrire et corriger ses documents \item @@ -68,8 +69,8 @@ l'importance des savoir-être et aux enjeux du développement durable.} Décrire et analyser l'image fixe et mobile \item Adopter des savoir-être professionnels essentiels dans le travail en - équipe (écoute, reformulation, transmission des informations, - explications\ldots) + équipe (écoute, reformulation, + transmission des informations, explications\ldots) \item S'initier aux objectifs du développement durable \item diff --git a/latex/ressources/R112.tex b/latex/ressources/R112.tex index 844daee..f232d9b 100644 --- a/latex/ressources/R112.tex +++ b/latex/ressources/R112.tex @@ -19,7 +19,7 @@ \ajoutRac{AC0311}{Utiliser un système informatique et ses outils} % Les SAE - +\ajoutRsae{SAÉ14}{Se présenter sur Internet} % Les pre-requis diff --git a/latex/ressources/R113.tex b/latex/ressources/R113.tex index e09debd..53f72a4 100644 --- a/latex/ressources/R113.tex +++ b/latex/ressources/R113.tex @@ -22,6 +22,7 @@ % Les SAE \ajoutRsae{SAÉ13}{Découvrir un dispositif de transmission} \ajoutRsae{SAÉ22}{Mesurer et caractériser un signal ou un système} +\ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis @@ -41,7 +42,7 @@ télécommunications.} \item Introduction aux signaux \begin{itemize} - \item + \item graphe d'un signal \item symétries : parité, imparité, \ldots{} @@ -52,16 +53,14 @@ télécommunications.} \item fonction définie par morceaux (ex. : valeur absolue) \item - signaux de base : (ex. : porte, triangle, échelon, rampe\ldots) + signaux de base (ex. : porte, triangle, échelon, rampe\ldots) \item opérations sur les signaux : avance, retard, dilatation, amplification, offset (interprétation géométrique + sur le graphe), somme de signaux Cette partie sera l'occasion de + réviser les règles de calculs de base par l'intermédiaire du calcul + d'images et d'antécédents. \end{itemize} -\end{itemize} -sur le graphe), somme de signaux -Cette partie sera l'occasion de réviser les règles de calculs de base -par l'intermédiaire du calcul d'images et d'antécédents. -\begin{itemize} \item Éléments de trigonométrie \begin{itemize} @@ -70,7 +69,8 @@ par l'intermédiaire du calcul d'images et d'antécédents. \item cercle trigonométrique \item - formules , , , et et idem avec sinus + formules \(\cos(-x)\), \(\cos(\pi\pm x)\) et + \(\cos(\frac{\pi}{2}\pm x)\) ; les même avec sinus \item angles remarquables \end{itemize} @@ -88,7 +88,7 @@ par l'intermédiaire du calcul d'images et d'antécédents. \item graphe des signaux avancés, retardés, dilatés\ldots{} \item - graphe de , + graphe de \(A\cos(\omega t + \phi)\), \(A\cos(\omega t + \phi)\) \end{itemize} \end{itemize} } diff --git a/latex/ressources/R114.tex b/latex/ressources/R114.tex index ce65dc9..06cbfa9 100644 --- a/latex/ressources/R114.tex +++ b/latex/ressources/R114.tex @@ -22,9 +22,10 @@ % Les SAE \ajoutRsae{SAÉ13}{Découvrir un dispositif de transmission} \ajoutRsae{SAÉ22}{Mesurer et caractériser un signal ou un système} +\ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis - +\ajoutRprerequis{R113}{Mathématiques du signal} % Le descriptif \ajoutRancrage{Les systèmes de transmission font intervenir des fonctions sinusoïdales diff --git a/latex/ressources/R115.tex b/latex/ressources/R115.tex index 8b34fa9..3266c1e 100644 --- a/latex/ressources/R115.tex +++ b/latex/ressources/R115.tex @@ -23,6 +23,7 @@ \ajoutRsae{SAÉ12}{S'initier aux réseaux informatiques} \ajoutRsae{SAÉ13}{Découvrir un dispositif de transmission} \ajoutRsae{SAÉ14}{Se présenter sur Internet} +\ajoutRsae{SAÉ15}{Traiter des données} % Les pre-requis @@ -38,16 +39,14 @@ Dans le cadre de cette ressource transversale, l'étudiant devra : \item Partager de façon collective l'information : \begin{itemize} - \item + \item Utilisation avancée du mail : création d'une adresse générique, utilisation du CC et du CCI . \item Utilisation d'outils collaboratifs adaptés (par exemple Mattermost, Slack, MSTeams, Google Drive, + OnlyOffice) \end{itemize} -\end{itemize} -OnlyOffice) -\begin{itemize} \item Organiser son travail et celui de l'équipe à partir d'outils de planification (Gantt, PERT) @@ -56,13 +55,15 @@ OnlyOffice) d'une équipe projet \item Conceptualiser les étapes des tâches à réaliser à l'aide d'outils - adaptés (cartes mentales, infographies, etc.) + adaptés (cartes mentales, infographies, + etc.) \item Prendre conscience des délais et échéances dans un travail en mode projet \item Savoir s'adapter à des profils professionnels différents (manager, - collaborateur, client) qui interviennent dans un projet + collaborateur, client) qui interviennent + dans un projet \item Apprendre à faire un bilan régulier sur l'avancée d'un projet : points bloquants, solutions apportées @@ -77,4 +78,4 @@ OnlyOffice) } % Mots-clés -\ajoutRmotscles{Planification, partage d'informations, organisation, conceptualisation, réunion} +\ajoutRmotscles{Planification, partage d'informations, organisation, conceptualisation, réunion} diff --git a/latex/ressources/R201.tex b/latex/ressources/R201.tex index 4da8c66..b1471ba 100644 --- a/latex/ressources/R201.tex +++ b/latex/ressources/R201.tex @@ -2,7 +2,7 @@ % Ressources %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\nouvelleressource{R201}{Technologies de l’Internet} +\nouvelleressource{R201}{Technologie de l'Internet} \ajoutRheures{60}{30} @@ -62,4 +62,4 @@ pourront servir de support)} } % Mots-clés -\ajoutRmotscles{Plan d'adressage, routage état de lien, stratégies de filtrage,, CIDR, VLSM, agrégation de routes, IPv6, NDP} +\ajoutRmotscles{Plan d'adressage, routage état de lien, stratégies de filtrage, , CIDR, VLSM, agrégation de routes, IPv6, NDP} diff --git a/latex/ressources/R203.tex b/latex/ressources/R203.tex index 613291c..4000a7e 100644 --- a/latex/ressources/R203.tex +++ b/latex/ressources/R203.tex @@ -22,6 +22,7 @@ % Les SAE \ajoutRsae{SAÉ21}{Construire un réseau informatique pour une petite structure} +\ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis \ajoutRprerequis{R101}{Initiation aux réseaux informatiques} diff --git a/latex/ressources/R204.tex b/latex/ressources/R204.tex index 510f691..8b0b772 100644 --- a/latex/ressources/R204.tex +++ b/latex/ressources/R204.tex @@ -50,11 +50,12 @@ téléphonique mixte (TDM/IP) ou TOIP.} Scénario d'un appel de base. \item Architectures des réseaux publics et privés (commutation, - signalisation, services, normes de câblage, PoE). + signalisation, services, normes de câblage, + PoE). \item Installation d'un système téléphonique d'entreprise - (insertion/raccordement de postes, connexion au réseau de - l'opérateur). + (insertion/raccordement de postes, connexion au + réseau de l'opérateur). \item Configuration d'un système téléphonique d'entreprise et de ses services associés. diff --git a/latex/ressources/R205.tex b/latex/ressources/R205.tex index 9df44b6..317ad3a 100644 --- a/latex/ressources/R205.tex +++ b/latex/ressources/R205.tex @@ -23,6 +23,7 @@ \ajoutRsae{SAÉ22}{Mesurer et caractériser un signal ou un système} % Les pre-requis +\ajoutRprerequis{R104}{Fondamentaux des systèmes électroniques} \ajoutRprerequis{R113}{Mathématiques du signal} \ajoutRprerequis{R114}{Mathématiques des transmissions} diff --git a/latex/ressources/R206.tex b/latex/ressources/R206.tex index 737f5a0..461bb49 100644 --- a/latex/ressources/R206.tex +++ b/latex/ressources/R206.tex @@ -25,6 +25,7 @@ % Les pre-requis \ajoutRprerequis{R113}{Mathématiques du signal} \ajoutRprerequis{R114}{Mathématiques des transmissions} +\ajoutRprerequis{R205}{Signaux et Systèmes pour les transmissions} % Le descriptif \ajoutRancrage{Cette ressource apporte le socle de connaissances et savoir-faire pour @@ -41,7 +42,8 @@ en téléphonie, ou en télécommunications numériques.} \begin{itemize} \item Comprendre la notion de signal numérique, et le principe de la - numérisation et de la restitution de signaux analogique + numérisation et de la restitution de + signaux analogique \item Échantillonnage des signaux : choix d'une fréquence adéquate d'échantillonnage @@ -53,4 +55,4 @@ en téléphonie, ou en télécommunications numériques.} } % Mots-clés -\ajoutRmotscles{Numérisation, échantillonnage, quantification, acquisition/restitution,CAN et CNA} +\ajoutRmotscles{Numérisation, échantillonnage, quantification, acquisition/restitution, CAN et CNA} diff --git a/latex/ressources/R208.tex b/latex/ressources/R208.tex index d167b9f..876cff3 100644 --- a/latex/ressources/R208.tex +++ b/latex/ressources/R208.tex @@ -27,7 +27,7 @@ \ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis - +\ajoutRprerequis{R010}{None} % Le descriptif \ajoutRancrage{Le professionnel R\&T est amené à développer différents outils diff --git a/latex/ressources/R210.tex b/latex/ressources/R210.tex index 78bc7d6..d8d52c4 100644 --- a/latex/ressources/R210.tex +++ b/latex/ressources/R210.tex @@ -26,7 +26,7 @@ \ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis - +\ajoutRprerequis{R110}{Anglais de communication et initiation au vocabulaire technique} % Le descriptif \ajoutRancrage{} @@ -37,7 +37,8 @@ Objectifs visés \begin{itemize} \item Savoir structurer son discours oral et écrit (courriel, conversation - téléphonique, visioconférence, réunion, débat) + téléphonique, visioconférence, + réunion, débat) \item Présenter son parcours professionnel à l'oral et à l'écrit (CV, lettre de motivation, entretien) diff --git a/latex/ressources/R211.tex b/latex/ressources/R211.tex index 56502cb..5744fbf 100644 --- a/latex/ressources/R211.tex +++ b/latex/ressources/R211.tex @@ -2,7 +2,7 @@ % Ressources %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\nouvelleressource{R211}{Expression-Culture-Communication Professionnelles (ECC2)} +\nouvelleressource{R211}{Expression-Culture-Communication Professionnelles 2} \ajoutRheures{30}{21} @@ -22,9 +22,10 @@ \ajoutRsae{SAÉ21}{Construire un réseau informatique pour une petite structure} \ajoutRsae{SAÉ22}{Mesurer et caractériser un signal ou un système} \ajoutRsae{SAÉ23}{Mettre en place une solution informatique pour l’entreprise} +\ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis - +\ajoutRprerequis{R111}{Expression-Culture-Communication Professionnelles 1} % Le descriptif \ajoutRancrage{} @@ -41,9 +42,10 @@ S'initier au résumé \item Produire des écrits longs et clairs, structurés, adaptés au - destinataire et répondant aux normes de présentation professionnelle - et académique (dossier, présentation longue, exploitation de la mise - en forme pour alléger les contenus et guider la lecture\ldots) + destinataire et répondant aux normes de + présentation professionnelle et académique (dossier, présentation + longue, exploitation de la mise en + forme pour alléger les contenus et guider la lecture\ldots) \item Réécrire et corriger ses documents ; \item @@ -66,8 +68,8 @@ Produire un document audiovisuel court \item Adopter des savoir-être professionnels essentiels dans le travail en - équipe (coopération, prise en compte de l'opinion d'autrui, - adaptation, prise d'initiative\ldots) + équipe (coopération, prise en + compte de l'opinion d'autrui, adaptation, prise d'initiative\ldots) \item S'initier à la gestion de projet : argumenter, défendre son point de vue diff --git a/latex/ressources/R212.tex b/latex/ressources/R212.tex index 2338223..82183ec 100644 --- a/latex/ressources/R212.tex +++ b/latex/ressources/R212.tex @@ -22,7 +22,7 @@ \ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis - +\ajoutRprerequis{R112}{Projet Personnel et Professionnel} % Le descriptif \ajoutRancrage{} @@ -36,7 +36,8 @@ se présenter, se définir; \item exprimer l'intérêt professionnel, valeurs, motivations, traits de - personnalité, expériences professionnelles ou personnelles; + personnalité, expériences professionnelles + ou personnelles; \item mettre en valeur et présenter son savoir-être; \item diff --git a/latex/ressources/R213.tex b/latex/ressources/R213.tex index 9277bfe..da2ae26 100644 --- a/latex/ressources/R213.tex +++ b/latex/ressources/R213.tex @@ -22,6 +22,7 @@ % Les SAE \ajoutRsae{SAÉ22}{Mesurer et caractériser un signal ou un système} \ajoutRsae{SAÉ23}{Mettre en place une solution informatique pour l’entreprise} +\ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis diff --git a/latex/ressources/R214.tex b/latex/ressources/R214.tex index 6e4e934..5578f6d 100644 --- a/latex/ressources/R214.tex +++ b/latex/ressources/R214.tex @@ -2,7 +2,7 @@ % Ressources %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\nouvelleressource{R214}{Analyse des signaux} +\nouvelleressource{R214}{Analyse mathématique des signaux} \ajoutRheures{30}{6} @@ -21,9 +21,11 @@ % Les SAE \ajoutRsae{SAÉ22}{Mesurer et caractériser un signal ou un système} +\ajoutRsae{SAÉ24}{Projet intégratif de S2} % Les pre-requis \ajoutRprerequis{R113}{Mathématiques du signal} +\ajoutRprerequis{R114}{Mathématiques des transmissions} % Le descriptif \ajoutRancrage{L'étude des signaux de transmission nécessite l'usage d'outils diff --git a/latex/saes/SAE11.tex b/latex/saes/SAE11.tex index 986fa8c..08afc34 100644 --- a/latex/saes/SAE11.tex +++ b/latex/saes/SAE11.tex @@ -2,7 +2,7 @@ % SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\nouvellesae{SAÉ11}{Sensibilisation à l'hygiène informatique et à la cybersécurité} +\nouvellesae{SAÉ11}{Se sensibiliser à l'hygiène informatique et à la cybersécurité} \ajoutSheures{7}{5}{12} @@ -48,4 +48,4 @@ destination des proches ou de la famille de l'étudiant. } % Mots-clés -\ajoutSmotscles{Sécurité numérique, utilisation d'internet} +\ajoutSmotscles{Sécurité numérique, utilisation d'internet} diff --git a/latex/saes/SAE12.tex b/latex/saes/SAE12.tex index 2801fef..8663563 100644 --- a/latex/saes/SAE12.tex +++ b/latex/saes/SAE12.tex @@ -59,4 +59,4 @@ stable. } % Mots-clés -\ajoutSmotscles{Réseau local, connexion internet, équipements actifs} +\ajoutSmotscles{Réseau local, connexion internet, équipements actifs} diff --git a/latex/saes/SAE13.tex b/latex/saes/SAE13.tex index 70c12af..5fd269b 100644 --- a/latex/saes/SAE13.tex +++ b/latex/saes/SAE13.tex @@ -41,7 +41,7 @@ un collaborateur. % Livrable \ajoutSlivrables{ -L'évaluation s'appuiera sur tout ou partie des éléments suivants~: +L'évaluation s'appuiera sur tout ou partie des éléments suivants : \begin{itemize} \item dossier ou rapport d'étude (compte rendu); @@ -57,4 +57,4 @@ L'évaluation s'appuiera sur tout ou partie des éléments suivants~: } % Mots-clés -\ajoutSmotscles{Mesures, supports de transmission (fibre optique, cuivre, radio)} +\ajoutSmotscles{Mesures, supports de transmission (fibre optique, cuivre, radio)} diff --git a/latex/saes/SAE14.tex b/latex/saes/SAE14.tex index 0fa907a..9c7b1d1 100644 --- a/latex/saes/SAE14.tex +++ b/latex/saes/SAE14.tex @@ -42,7 +42,7 @@ en mesurant l'importance et la portée des contenus qu'il diffuse \ajoutSressources{R109}{Introduction aux technologies Web} \ajoutSressources{R110}{Anglais de communication et initiation au vocabulaire technique} \ajoutSressources{R111}{Expression-Culture-Communication Professionnelles 1} -\ajoutSressources{R112}{PPP: Connaître son champ d'activité} +\ajoutSressources{R112}{Projet Personnel et Professionnel} \ajoutSressources{R115}{Gestion de projet} % Livrable @@ -59,4 +59,4 @@ en mesurant l'importance et la portée des contenus qu'il diffuse } % Mots-clés -\ajoutSmotscles{Identité numérique, site Web} +\ajoutSmotscles{Identité numérique, site Web} diff --git a/latex/saes/SAE15.tex b/latex/saes/SAE15.tex index cdb157d..ab90c7e 100644 --- a/latex/saes/SAE15.tex +++ b/latex/saes/SAE15.tex @@ -2,7 +2,7 @@ % SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\nouvellesae{SAÉ15}{Traitement de données} +\nouvellesae{SAÉ15}{Traiter des données} \ajoutSheures{10}{8}{20} @@ -58,4 +58,4 @@ et/ou Soutenance orale présentant le travail réalisé } % Mots-clés -\ajoutSmotscles{Algorithmique, programmation, script} +\ajoutSmotscles{Algorithmique, programmation, script} diff --git a/latex/saes/SAE21.tex b/latex/saes/SAE21.tex index 41e08cb..5ceb28f 100644 --- a/latex/saes/SAE21.tex +++ b/latex/saes/SAE21.tex @@ -38,6 +38,7 @@ fonctionnel et structuré. \ajoutSressources{R101}{Initiation aux réseaux informatiques} \ajoutSressources{R102}{Principes et architecture des réseaux} \ajoutSressources{R103}{Réseaux locaux et équipements actifs} +\ajoutSressources{R108}{Bases des systèmes d'exploitation} \ajoutSressources{R108|}{None} \ajoutSressources{R201}{Technologie de l'Internet} \ajoutSressources{R202}{Administration système et fondamentaux de la virtualisation} @@ -62,4 +63,4 @@ fonctionnel et structuré. } % Mots-clés -\ajoutSmotscles{Adressage IP, VLAN, VTP, routage inter-VLAN, NAT, PAT, ACL, DNS, HTTP, SSH, routage (vecteur de distance / état de lien), PXE, TFTP} +\ajoutSmotscles{Adressage IP, VLAN, VTP, routage inter-VLAN, NAT, PAT, ACL, DNS, HTTP, SSH, routage (vecteur de distance / état de lien), PXE, TFTP} diff --git a/latex/saes/SAE22.tex b/latex/saes/SAE22.tex index e71b29e..5622526 100644 --- a/latex/saes/SAE22.tex +++ b/latex/saes/SAE22.tex @@ -51,4 +51,4 @@ présenter sous forme d'un bilan à un client ou un collaborateur. } % Mots-clés -\ajoutSmotscles{Spectre, puissance, décibels, sensibilité, atténuation, gain} +\ajoutSmotscles{Spectre, puissance, décibels, sensibilité, atténuation, gain} diff --git a/latex/saes/SAE23.tex b/latex/saes/SAE23.tex index a7a680c..b50ea1e 100644 --- a/latex/saes/SAE23.tex +++ b/latex/saes/SAE23.tex @@ -75,4 +75,4 @@ informatique pour le compte de son entreprise. } % Mots-clés -\ajoutSmotscles{Algorithmique, programmation, développement web, documentation technique} +\ajoutSmotscles{Algorithmique, programmation, développement web, documentation technique} diff --git a/python/export_docx_to_yaml.py b/python/export_docx_to_yaml.py index 18d6340..002e2e0 100644 --- a/python/export_docx_to_yaml.py +++ b/python/export_docx_to_yaml.py @@ -46,7 +46,7 @@ for i in range(2, len(docu)): # A priori un tableau if est_ressource == True: res = docu[i] # la ressource - nom_ressource = res[0][1][0] + nom_ressource = tools.caracteres_recalcitrants(res[0][1][0]) # Création de la ressource r = RessourceDocx(nom_ressource, res) @@ -117,20 +117,10 @@ print(f"{nbre_ressources} ressources") # Post traitement des ressources => gestion des heures/des acs/ + tri par semestre ressources = {"S1" : [], "S2": []} -for r in liste_ressources: - r.nettoie_titre_ressource() - r.nettoie_heures() - r.nettoie_code() - r.nettoie_semestre() - r.nettoie_acs() - r.nettoie_sae() - r.nettoie_prerequis() - r.nettoie_mots_cles() - - - # Remet en forme le descriptif - r.split_description() - r.nettoie_contenu() +for (i, r) in enumerate(liste_ressources): + if r.nom.startswith("Projet "): + print("ici") + r.nettoie_champ() # Remet en forme les mots-clés # Tri dans le bon semestre diff --git a/python/export_sae_docx_to_yaml.py b/python/export_sae_docx_to_yaml.py index 5d24bce..e6df870 100644 --- a/python/export_sae_docx_to_yaml.py +++ b/python/export_sae_docx_to_yaml.py @@ -55,7 +55,7 @@ for i in range(1, len(docu)): # A priori un tableau if est_sae == True: res = docu[i] # la ressource - nom_sae = res[0][1][0] + nom_sae = caracteres_recalcitrants(res[0][1][0]) # Création de la ressource r = SAEDocx(nom_sae, res) @@ -74,7 +74,7 @@ for i in range(1, len(docu)): # A priori un tableau champ = "Titre de la" # corrige les noms/titres i = get_indice_sans_accent_ni_espace(champ, ENTETES_CHAPEAU) # l'indice de l'entete dans ENTETES if i != None: - data[i] = "\n".join(res[j][1]) + data[i] = caracteres_recalcitrants("\n".join(res[j][1])) else: non_interprete.append((champ, ligne[1][0])) else: # ligne de données soit chapeau (ex Compétences ciblées) soit détail par compétence @@ -105,15 +105,16 @@ for i in range(1, len(docu)): # A priori un tableau r.charge_ac(apprentissages) # nettoie le titre et le code - r.nettoie_titre_sae() r.nettoie_code() + r.nettoie_titre_sae() + last_sae = r.code liste_exemples[r.code] = [] elif est_exemple == True: res = docu[i] # la ressource - nom_exemple = res[0][1][0] + nom_exemple = caracteres_recalcitrants(res[0][1][0]) # Création de la ressource r = ExempleSAEDocx(nom_exemple, res, last_sae) @@ -130,7 +131,7 @@ for i in range(1, len(docu)): # A priori un tableau champ = caracteres_recalcitrants(ligne[0][0]) # le nom du champ i = get_indice_sans_accent_ni_espace(champ, ENTETES_EXEMPLES) # l'indice de l'entete dans ENTETES if i != None: - data[i] = "\n".join(res[j][1]) + data[i] = caracteres_recalcitrants("\n".join(res[j][1])) else: non_interprete.append((champ, ligne[1][0])) else: # ligne de données soit chapeau (ex Compétences ciblées) soit détail par compétence @@ -182,10 +183,13 @@ for s in liste_saes: exemples = {"S1" : {}, "S2" : {} } print(" > Exemples") for s in liste_exemples: # la sae + sem = get_officiel_sem_sae_by_code(s) exemples[sem][s] = [] for e in liste_exemples[s]: print(f"{s} : {e.nom}") + if e.nom.startswith("Caractériser un support radio"): + print("ici") e.nettoie_champs() # Tri dans le bon semestre diff --git a/python/export_yaml_to_latex.py b/python/export_yaml_to_latex.py index 9be42a6..161a3e7 100644 --- a/python/export_yaml_to_latex.py +++ b/python/export_yaml_to_latex.py @@ -6,49 +6,58 @@ import pypandoc import logging __LOGGER = logging.getLogger(__name__) -# Chargement des ressources -REPERTOIRE_RESSOURCES = "export" -REPERTOIRE_LATEX = "../latex/ressources" -fichiers = os.listdir(REPERTOIRE_RESSOURCES) -fichiers = sorted(fichiers) # tri par ordre alphabétique +REPERTOIRE_TEMP = "export" +REPERTOIRE_RESSOURCES_DEFINITIVES = "../yaml/ressources" +REPERTOIRE_SAE_DEFINITIVES = "../yaml/saes" +REPERTOIRE_LATEX_RESSOURCES = "../latex/ressources" +REPERTOIRE_LATEX_SAES = "../latex/saes" + +# Chargement des ressources : depuis les versions définitives du répertoire yaml d'abord, +# puis dans python/export si manquantes +fichiers_definitifs = os.listdir(REPERTOIRE_RESSOURCES_DEFINITIVES) +fichiers_temp = os.listdir(REPERTOIRE_TEMP) +fichiers_ressources = [REPERTOIRE_RESSOURCES_DEFINITIVES + "/" + f for f in fichiers_definitifs] +for f in fichiers_temp: + if f not in fichiers_definitifs and f.startswith("R"): + fichiers_ressources.append(REPERTOIRE_TEMP + "/" + f) +fichiers_ressources = sorted(fichiers_ressources) # tri par ordre alphabétique ressources = {"S1": [], "S2": []} -for file in fichiers: - fichieryaml = REPERTOIRE_RESSOURCES + "/" + file - if file.startswith("R"): # si c'est une ressources - r = Ressource(fichieryaml) # lecture du fichier - sem = "S" + str(r.ressource["semestre"]) - ressources[sem].append(r) +for fichieryaml in fichiers_ressources: + r = Ressource(fichieryaml) # lecture du fichier + sem = "S" + str(r.ressource["semestre"]) + ressources[sem].append(r) -# Chargement des ressources -REPERTOIRE_SAE = "export" -REPERTOIRE_LATEX = "../latex/saes" -fichiers = os.listdir(REPERTOIRE_RESSOURCES) -fichiers = sorted(fichiers) # tri par ordre alphabétique +# Chargement des saé et des exemples +fichiers_definitifs = os.listdir(REPERTOIRE_SAE_DEFINITIVES) +fichiers_temp = os.listdir(REPERTOIRE_TEMP) +fichiers_saes = [REPERTOIRE_SAE_DEFINITIVES + "/" + f for f in fichiers_definitifs if "exemple" not in f] +fichiers_exemples = [REPERTOIRE_SAE_DEFINITIVES + "/" + f for f in fichiers_definitifs if "exemple" in f] +for f in fichiers_temp: + if f not in fichiers_definitifs and f.startswith("S"): + if "exemple" not in f: + fichiers_saes.append(REPERTOIRE_TEMP + "/" + f) + elif "exemple" in f: + fichiers_exemples.append(REPERTOIRE_TEMP + "/" + f) +fichiers_saes = sorted(fichiers_saes) # tri par ordre alphabétique +fichiers_exemples = sorted(fichiers_exemples) saes = {"S1": [], "S2": []} +for fichieryaml in fichiers_saes: + s = SAE(fichieryaml) + sem = "S" + str(s.sae["semestre"]) + saes[sem].append(s) + + exemples = {"S1" : {}, "S2" : {} } -for file in fichiers: - fichieryaml = REPERTOIRE_RESSOURCES + "/" + file - if file.startswith("S") and "exemple" not in file: # si c'est le chapeau d'une sae - s = SAE(fichieryaml) - sem = "S" + str(s.sae["semestre"]) - saes[sem].append(s) - elif file.startswith("S") and "exemple" in file: # si c'est un exemple de sae - e = ExempleSAE(fichieryaml) - sem = "S" + str(e.exemple["semestre"]) - sae = e.exemple["code"] - if sae not in exemples[sem]: - exemples[sem][sae] = [] - exemples[sem][sae].append(e) - -# Eléments de tests -r1 = ressources["S1"][0] - -temp1 = r1.ressource["contenu"] -output1 = pypandoc.convert_text(temp1, 'tex', format='md', - extra_args=['--atx-headers']) +for fichieryaml in fichiers_exemples: + e = ExempleSAE(fichieryaml) + sem = "S" + str(e.exemple["semestre"]) + sae = e.exemple["code"] + if sae not in exemples[sem]: + exemples[sem][sae] = [] + exemples[sem][sae].append(e) print("ici") @@ -57,7 +66,7 @@ if True: for sem in ressources: for r in ressources[sem]: - fichierlatex = REPERTOIRE_LATEX + "/" + "{}.tex".format(r.ressource["code"]) + fichierlatex = REPERTOIRE_LATEX_RESSOURCES + "/" + "{}.tex".format(r.ressource["code"]) contenu = r.to_latex() with open(fichierlatex, "w", encoding="utf8") as fid: fid.write(contenu) @@ -68,7 +77,7 @@ if True: for sem in saes: for s in saes[sem]: - fichierlatex = REPERTOIRE_LATEX + "/" + "{}.tex".format(s.sae["code"].replace("É", "E")) + fichierlatex = REPERTOIRE_LATEX_SAES + "/" + "{}.tex".format(s.sae["code"].replace("É", "E")) contenu = s.to_latex() with open(fichierlatex, "w", encoding="utf8") as fid: fid.write(contenu) @@ -78,7 +87,7 @@ if True: for sem in exemples: for s in exemples[sem]: for (i, e) in enumerate(exemples[sem][s]): - fichierlatex = REPERTOIRE_LATEX + "/" + "{}_exemple{}.tex".format(e.exemple["code"].replace("É", "E"), i+1) + fichierlatex = REPERTOIRE_LATEX_SAES + "/" + "{}_exemple{}.tex".format(e.exemple["code"].replace("É", "E"), i+1) contenu = e.to_latex() with open(fichierlatex, "w", encoding="utf8") as fid: fid.write(contenu) diff --git a/python/import/ressources_v0.docx b/python/import/ressources_v0.docx index 7f008f835c0bd93a27a174da7f39d8bd49ffc173..7f25dd652786fc7fdadf76a6d085076418fe179d 100644 GIT binary patch delta 48200 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 bA^wZbbmY*l6Y}Ylp`c_?)`4G94Dx>gQ#@ej delta 48230 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 z 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℘EONVp$ixQ}1fk--py)rj%QB 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 Hx3T>%H`UJ@ diff --git a/python/pn/modele_exemple_sae.tex b/python/pn/modele_exemple_sae.tex index cd2d17e..e7188fb 100644 --- a/python/pn/modele_exemple_sae.tex +++ b/python/pn/modele_exemple_sae.tex @@ -4,12 +4,14 @@ \nouvelexemple{#titre} +\ajoutESproblematique{#problematique} + \ajoutESdescription{ #description } \ajoutESformes{#formes} -\ajoutESproblematique{#problematique} + \ajoutESmodalite{#modalite} \ No newline at end of file diff --git a/python/pn/ressources.yml b/python/pn/ressources.yml index 7111c6e..82361e6 100644 --- a/python/pn/ressources.yml +++ b/python/pn/ressources.yml @@ -10,7 +10,7 @@ S1: R109: "Introduction aux technologies Web" R110: "Anglais de communication et initiation au vocabulaire technique" R111: "Expression-Culture-Communication Professionnelles 1" - R112: "PPP: Connaître son champ d'activité" + R112: "Projet Personnel et Professionnel" R113: "Mathématiques du signal" R114: "Mathématiques des transmissions" R115: "Gestion de projet" @@ -26,6 +26,6 @@ S2: R209: "Initiation au développement Web" R210: "Anglais de communication et développement de l'anglais technique" R211: "Expression-Culture-Communication Professionnelles 2" - R212: "PPP: Formalisation du projet" + R212: "Projet Personnel et Professionnel" R213: "Mathématiques des systèmes numériques" R214: "Analyse mathématique des signaux" diff --git a/python/ressource.py b/python/ressource.py index 6d3978d..764e3b7 100644 --- a/python/ressource.py +++ b/python/ressource.py @@ -70,8 +70,8 @@ class Ressource(): output = pypandoc.convert_text(contexte, 'tex', format='md', extra_args=['--atx-headers']) output = output.replace("\r\n", "\n") - contexte = caracteres_recalcitrants(output) - contexte = remove_ligne_vide(contexte) + # contexte = caracteres_recalcitrants(output) + contexte = remove_ligne_vide(output) # contexte = remove_ligne_vide(contexte) # préparation du contenu @@ -82,8 +82,8 @@ class Ressource(): output = pypandoc.convert_text(contenu, 'tex', format='md', extra_args=['--atx-headers']) output = output.replace("\r\n", "\n") - contenu = caracteres_recalcitrants(output) - contenu = remove_ligne_vide(contenu) + # contenu = caracteres_recalcitrants(output) + contenu = remove_ligne_vide(output) chaine = "" chaine = TemplateLatex(modlatex).substitute(code=self.ressource["code"], @@ -94,9 +94,9 @@ class Ressource(): compRT2=compRT[1], compRT3=compRT[2], saes=saes, - motscles=caracteres_recalcitrants(self.ressource["motscles"]), + motscles=self.ressource["motscles"], prerequis=prerequis, - contexte=caracteres_recalcitrants(contexte), + contexte=contexte, contenu=contenu, ) # chaine = chaine.replace("&", "\&") @@ -164,10 +164,10 @@ class SAE(): compRT1=compRT[0], compRT2=compRT[1], compRT3=compRT[2], - description=caracteres_recalcitrants(descriptif), + description=descriptif, ressources=ressources, livrables= livrables, - motscles = caracteres_recalcitrants(self.sae["motscles"]), + motscles = self.sae["motscles"], ) # chaine = chaine.replace("&", "\&") @@ -241,7 +241,7 @@ def md_to_latex(contenu): contenu = pypandoc.convert_text(contenu, 'tex', format='md', extra_args=['--atx-headers']) contenu = contenu.replace("\r\n", "\n") - contenu = caracteres_recalcitrants(contenu) + # contenu = caracteres_recalcitrants(contenu) contenu = remove_ligne_vide(contenu) lignes = contenu.split("\n") # pour debug diff --git a/python/ressourcedocx.py b/python/ressourcedocx.py index 391b145..3e6dc45 100644 --- a/python/ressourcedocx.py +++ b/python/ressourcedocx.py @@ -69,7 +69,7 @@ class Docx(): mots = self.mots # .encode('utf8', 'ignore').decode('utf8') mots = mots.replace(".", "").replace(";", ",") liste_mots = mots.split(",") - liste_mots = [l.rstrip() for l in liste_mots] # supprime les espaces inutiles + liste_mots = [l.strip() for l in liste_mots] # supprime les espaces inutiles mots = ", ".join(liste_mots) self.mots = mots @@ -88,7 +88,7 @@ class Docx(): old = self.nom titre = devine_nom(self.nom) if titre and titre != old: - Docx.__LOGGER.warning(f"nettoie_titre : {old} => titre \"{titre}\"") + Docx.__LOGGER.warning(f"nettoie_titre : {old} => titre deviné \"{titre}\"") self.nom = titre def dico_to_yaml(self, dico): @@ -155,7 +155,12 @@ class RessourceDocx(Docx): def nettoie_titre_ressource(self): """Nettoie le titre d'une ressource ou d'une SAE en utilisant les titres officiels fournis dans le yaml (via le dictionnaire DATA_RESSOURCES)""" + old = self.nom self.nettoie_titre(DATA_RESSOURCES) + titre2 = get_officiel_ressource_name_by_code(self.code) + if titre2 != self.nom: + self.nom = titre2 + RessourceDocx.__LOGGER.warning(f"nettoie_titre : {old} => titre d'après PN \"{titre2}\"") def nettoie_code(self): """Recherche le code de la forme RXXX""" @@ -246,6 +251,21 @@ class RessourceDocx(Docx): contenu = self.contenu.replace(" / ", "/") self.contenu = convert_to_markdown(contenu) + def nettoie_champ(self): + """Lance le nettoyage des champs""" + self.nettoie_code() + self.nettoie_titre_ressource() + self.nettoie_heures() + + self.nettoie_semestre() + self.nettoie_acs() + self.nettoie_sae() + self.nettoie_prerequis() + self.nettoie_mots_cles() + + # Remet en forme le descriptif + self.split_description() + self.nettoie_contenu() def to_yaml(self): """Exporte la ressource en yaml""" @@ -283,7 +303,7 @@ def nettoie_liste_ressources(contenu): R_avec_code = devine_ressources_by_code(contenu) R_avec_nom = devine_code_by_nom_from_dict(contenu, DATA_RESSOURCES) liste = R_avec_code + R_avec_nom - liste = [l.rstrip().replace(",", "").replace(".", "") for l in liste] # supprime les espaces et les ponctuations restantes + liste = [l.strip().replace(",", "").replace(".", "") for l in liste] # supprime les espaces et les ponctuations restantes return sorted(list(set(liste))) @@ -297,14 +317,16 @@ def devine_acs_by_code(champ): codes3 = [c.rstrip() for c in codes3] codes4 = [c.rstrip() for c in codes4] codes4 += [ "AC0" + c[-3:] for c in codes3] # ajoute les 0 manquants des acs (codage AC0111) - + codes4 = [c.strip() for c in codes4] return sorted(list(set(codes4))) def devine_ressources_by_code(champ): """Recherche les codes ressources de la forme RXXX dans champ ; """ - codes = re.findall(r"(R\d{3}\D)", champ) # de code à 3 chiffres + codes1 = re.findall(r"(R\d{3})", champ) # de code à 3 chiffres + codes2 = re.findall(r"(R\d{3}\D)", champ) + codes = codes1 + [c.strip() for c in codes2] return sorted(list(set(codes))) def devine_ressources_by_nom(donnees): @@ -348,7 +370,8 @@ def get_marqueur_numerique(contenu): """Revoie la liste des marqueurs numériques""" m = re.findall(r"(\d/|\d\s/)", contenu) m += re.findall(r"(\d\s\)|\d\))", contenu) # les marqueurs de la forme 1) - m += re.findall(r"(--\s|--\t)", contenu) + m += re.findall(r"(--)\s", contenu) + m += re.findall(r"(--)\t", contenu) return m def get_marqueurs(contenu): @@ -400,8 +423,12 @@ def convert_to_markdown(contenu): m = get_marqueur_from_liste(ligne, marqueurs_finaux) # identifie la présence d'un marqueur dans la ligne if m: pos = marqueurs_finaux.index(m) - contenus_fin[i] = "\t" * (pos) + "* " + ligne.replace(m, "").replace("\t", "").rstrip() - + ligne = "\t" * (pos) + "* " + ligne.replace(m, "").replace("\t", "").rstrip() + # corrige les espaces après les marqueurs + champ = re.findall(r"(\*\s+)\w", ligne) + for c in champ: + ligne = ligne.replace(c, "* ") + contenus_fin[i] = ligne contenu = "\n\n".join(contenus_fin) @@ -426,7 +453,12 @@ class SAEDocx(Docx): def nettoie_titre_sae(self): """Nettoie le titre d'une SAE en utilisant les titres officiels fournis dans le yaml (via le dictionnaire DATA_RESSOURCES)""" + old = self.nom self.nettoie_titre(DATA_SAES) + titre2 = get_officiel_sae_name_by_code(self.code) + if titre2 != self.nom: + self.nom = titre2 + SAEDocx.__LOGGER.warning(f"nettoie_titre : {old} => titre d'après PN \"{titre2}\"") def nettoie_code(self): """Recherche les codes de la forme SAE|éXX """ @@ -536,11 +568,21 @@ class ExempleSAEDocx(Docx): else: self.modalite = f"Les même que les livrables et les productions de la {self.code}" + def nettoie_formes(self): + """Nettoie les modalités (d'évaluation) d'un exemple de SAE""" + if self.formes: + self.formes = convert_to_markdown(self.formes) + else: + self.formes = "" + + def nettoie_champs(self): """Déclenche le nettoyage des champs de l'exemple""" + self.nom = self.nom.strip() self.nettoie_modalite() self.nettoie_description() self.nettoie_problematique() + self.nettoie_formes() def to_yaml(self): """Exporte la ressource en yaml""" @@ -548,7 +590,7 @@ class ExempleSAEDocx(Docx): "code": self.code, "semestre": self.semestre, "description": folded(self.description), - "formes": self.formes, + "formes": folded(self.formes), "problematique": folded(self.problematique) if self.problematique !="" else "", "modalite": folded(self.modalite), } diff --git a/python/tools.py b/python/tools.py index 5354578..2cc48db 100644 --- a/python/tools.py +++ b/python/tools.py @@ -1,5 +1,5 @@ from officiel import supprime_accent_espace - +import unicodedata def get_indice(champ, entetes): """Récupère l'indice d'une entête""" @@ -20,11 +20,14 @@ def get_indice_sans_accent_ni_espace(champ, entetes): def caracteres_recalcitrants(contenu): - contenu = contenu.replace("\'", "'") + + # contenu = contenu.replace("\'", "'") contenu = contenu.replace("è", "è") contenu = contenu.replace("é", "é") - contenu = contenu.replace("’", "'").replace(b"\xe2\x80\x99".decode("utf8"), "'") contenu = contenu.replace("â", "â").replace(b'a\xcc\x82'.decode("utf8"), "â") + # contenu = unicodedata.normalize("NFKD", contenu) + contenu = contenu.replace("’", "'") #.replace(b"\xe2\x80\x99".decode("utf8"), "'") contenu = contenu.replace('\xa0', ' ') # le nbsp + # contenu = contenu.encode("utf8", "ignore").decode("utf8") return contenu \ No newline at end of file diff --git a/python/yaml/R101.yml b/python/yaml/R101.yml deleted file mode 100644 index a54d761..0000000 --- a/python/yaml/R101.yml +++ /dev/null @@ -1,46 +0,0 @@ -nom: Initiation aux réseaux informatiques -code: R101 -semestre: 1 -heures_formation: 46 -heures_tp: 24 -acs: -- - AC0113 - - AC0115 - - AC0116 -- - AC0213 -- - AC0311 -sae: -- SAÉ11 -- SAÉ12 -prerequis: Aucun -contexte: >- - Cette ressource apporte le socle de connaissances et savoirs-faire pour les compétences - de cœur de métier "Administrer les réseaux et l'Internet" (RT1) et "Connecter les - entreprises et les usagers" (RT2). Elle contribue aussi à la compétence "Créer des - outils et applications informatiques pour les R&T" (RT3) à travers la découverte - du poste client et de son environnement logiciel. - À travers des exercices de mise en place progressive de réseaux locaux, d'interconnection - d'équipements et de prise en main des fonctions de base des systèmes d'exploitation, - l'étudiant découvrira les principaux concepts utilisés dans les réseaux informatiques, - et commencera à comprendre le rôle et les principes des normes et protocoles essentiels - des réseaux locaux, comme Ethernet, TCP/IP, DHCP, DNS. - On introduira des notions de sécurité informatique (les ressources associées aux - recommandations de l’ANSSI, CyberEdu, CyberMalveillance pourront servir de support). -contenu: >- - * Initiation au réseau - * Découverte et prise en main du réseau local - * Adressage IPv4 : classes d'adresses, masques naturels, adressage statique, adressage - dynamique (DHCP) - * Notion de routage, de passerelle et de serveur DNS - * Bases du système d'exploitation - * Architecture d'un système d'exploitation - * Différents types de systèmes d'exploitation : les clients, les serveurs, les - systèmes embarqués, - * Systèmes d'exploitation commerciaux et Open Sources. - * Administration des systèmes d'exploitation - * Architectures réseaux et systèmes d'exploitation - * Architecture client-serveur dans un réseau local - * Mise en place d'une architecture client/serveur simple (serveur d'authentification/de - fichiers et postes clients associés) - * Introduction à la sécurité informatique -motscles: Réseau, système d'exploitation, TCP/IP, LAN, hygiène informatique. diff --git a/yaml/ressources/R113.yml b/yaml/ressources/R113.yml new file mode 100644 index 0000000..64c979f --- /dev/null +++ b/yaml/ressources/R113.yml @@ -0,0 +1,66 @@ +nom: Mathématiques du signal +code: R113 +semestre: 1 +heures_formation: 30 +heures_tp: 6 +acs: + RT1: + - AC0111 + RT2: + - AC0211 + - AC0212 + RT3: [] +sae: +- SAÉ13 +- SAÉ22 +- SAÉ24 +prerequis: Aucun +contexte: >- + Les systèmes de transmission font intervenir des fonctions sinusoïdales ainsi que des signaux de base + (périodiques ou non) soumis à des transformations (retard, dilatation, amplification, offset) qui sont + explicitées par cette ressource. On veillera à montrer l'intérêt des concepts présentés pour modéliser + les systèmes électroniques et on choisira de préférence des exercices en lien avec l'électronique et + les télécommunications. +contenu: >- + * Introduction aux signaux + + * graphe d'un signal + + * symétries : parité, imparité, ... + + * causalité, support temporel + + * équation de droite + + * fonction définie par morceaux (ex. : valeur absolue) + + * signaux de base (ex. : porte, triangle, échelon, rampe…) + + * opérations sur les signaux : avance, retard, dilatation, amplification, offset (interprétation géométrique + sur le graphe), somme de signaux + + Cette partie sera l'occasion de réviser les règles de calculs de base par l'intermédiaire du calcul + d'images et d'antécédents. + + * Éléments de trigonométrie + + * définition du radian + + * cercle trigonométrique + + * formules $\cos(-x)$, $\cos(\pi\pm x)$ et $\cos(\frac{\pi}{2}\pm x)$ ; les même avec sinus + + * angles remarquables + + * Signaux périodiques + + * période, fréquence, pulsation + + * signaux périodiques de base : créneau, dent de scie, sinus, cosinus... + + * fréquence/période/pulsation d'un signal dilaté, d'une combinaison linéaire de signaux périodiques + + * graphe des signaux avancés, retardés, dilatés… + + * graphe de $A\cos(\omega t + \phi)$, $A\cos(\omega t + \phi)$ +motscles: Signaux, signaux périodiques \ No newline at end of file diff --git a/yaml/ressources/R114.yml b/yaml/ressources/R114.yml new file mode 100644 index 0000000..4818c97 --- /dev/null +++ b/yaml/ressources/R114.yml @@ -0,0 +1,62 @@ +nom: Mathématiques des transmissions +code: R114 +semestre: 1 +heures_formation: 30 +heures_tp: 6 +acs: + RT1: + - AC0111 + RT2: + - AC0211 + - AC0212 + RT3: [] +sae: +- SAÉ13 +- SAÉ22 +- SAÉ24 +prerequis: +- R113 +contexte: >- + Les systèmes de transmission font intervenir des fonctions sinusoïdales et peuvent être modélisés à + l'aide de nombres complexes. De plus, l'échelle logarithmique est couramment utilisée pour représenter + certains signaux dont la puissance est mesurée en décibels qui nécessitent la connaissance des fonctions + exponentielle et logarithme. On veillera à montrer l'intérêt des concepts présentés pour modéliser + les systèmes électroniques et on choisira de préférence des exercices en lien avec l'électronique et + les télécommunications. +contenu: >- + * Trigonométrie + + * formules , idem avec sinus + + * lien avec les vecteurs et le produit scalaire + + * forme + + * fonctions trigonométriques réciproques (en particulier arctangente) + + * Fonctions logarithme et exponentielle, puissances + + * graphes + + * propriétés, retour sur les propriétés des puissances + + * application au dB + + * Nombres complexes + + * forme algébrique + + * addition, multiplication et division avec la forme algébrique + + * forme exponentielle (retour sur les propriétés de l'expo) + + * addition, multiplication et division avec la forme exponentielle + + * formules d'Euler + + * interprétation géométrique, lien avec les vecteurs + + * lien avec la trigonométrie + + * racines complexes d'un polynôme de degré 2 (à coefficients réels) +motscles: Trigonométrie, logarithme, exponentielle, complexes \ No newline at end of file