From 9eab5f03ac5dd7bd5b09d3db724f09ac6fb207e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9o=20Baras?= Date: Sat, 3 Apr 2021 14:55:05 +0200 Subject: [PATCH] Ajoute les macros latex et le rendu visuel pour les exemples de SAE --- latex/macros_formations.sty | 32 ++++++++++-- latex/modeles/tableau_exemple.tex | 55 ++++++++++++++++++++ latex/pn_formation.tex | 12 ++++- latex/referentiel_BUT1.tex | 17 +++++++ latex/saes/SAE11.tex | 2 +- latex/saes/SAE12.tex | 2 +- latex/saes/SAE13.tex | 2 +- latex/saes/SAE14.tex | 2 +- latex/saes/SAE15.tex | 2 +- latex/saes/SAE21.tex | 2 +- latex/saes/SAE22.tex | 2 +- latex/saes/SAE23.tex | 2 +- python/export_yaml_to_latex.py | 27 +++++++--- python/pn/modele_exemple_sae.tex | 15 ++++++ python/pn/modele_sae.tex | 2 +- python/ressource.py | 83 ++++++++++++++----------------- python/ressourcedocx.py | 2 +- 17 files changed, 193 insertions(+), 68 deletions(-) create mode 100644 latex/modeles/tableau_exemple.tex create mode 100644 python/pn/modele_exemple_sae.tex diff --git a/latex/macros_formations.sty b/latex/macros_formations.sty index 9a3be31..c15480d 100644 --- a/latex/macros_formations.sty +++ b/latex/macros_formations.sty @@ -245,15 +245,41 @@ % ********************************************* % Exemples de SAE % ********************************************* -\def\nouvelexemple#1#2{ +\def\nouvelexemple#1{ \addtocounter{cptSexemple\currentSsae}{1} % Ajoute un exemple (tous semestres confondu) \def\currentESsae{\currentSsae\Alph{cptSexemple\currentSsae}} % - \expandafter\xdef\csname EScode\currentESsae\endcsname{#1} % code - \expandafter\xdef\csname ESname\currentESsae\endcsname{#2} % nom/intitule + \expandafter\xdef\csname ESname\currentESsae\endcsname{#1} % nom/intitule % \expandafter\xdef\csname ESsem\currentESsae\endcsname{\csname semestrenumero\currentsemestre\endcsname} % nom du semestre } +% La description +\def\ajoutESdescription#1{ + \begingroup\let\+\relax + \expandafter\gdef\csname ESdescription\currentESsae\endcsname{\noexpand #1} % descriptif + \endgroup +} + +% Les formes pédagogique +\def\ajoutESformes#1{ + \begingroup\let\+\relax + \expandafter\gdef\csname ESformes\currentESsae\endcsname{\noexpand #1} % descriptif + \endgroup +} + +% La problématique +\def\ajoutESproblematique#1{ + \begingroup\let\+\relax + \expandafter\gdef\csname ESproblematique\currentESsae\endcsname{\noexpand #1} % descriptif + \endgroup +} + +% La modalité +\def\ajoutESmodalite#1{ + \begingroup\let\+\relax + \expandafter\gdef\csname ESmodalite\currentESsae\endcsname{\noexpand #1} % descriptif + \endgroup +} % ************************************* \definecolor{colormotscle}{RGB}{120, 185, 235} diff --git a/latex/modeles/tableau_exemple.tex b/latex/modeles/tableau_exemple.tex new file mode 100644 index 0000000..90095ef --- /dev/null +++ b/latex/modeles/tableau_exemple.tex @@ -0,0 +1,55 @@ + +% Le tableau complet présentant un exemple d'une SAE donné +\newcommand\tableauExempleSAE[2]{ + +\xdef\CODE{#1} % code de la sae (par ex: AA avec A=1er semestre, A=1ère ressource) +\xdef\NUMERO{#2} % numéro de l'exemple +\xdef\EXEMPLE{\CODE\NUMERO} % code de l'exemple pour latex + +\setlength{\tabcolsep}{0.125cm} % Marge des colonnes +\setlength{\extrarowheight}{2pt} % Marge des lignes + +% 1er tableau : Nom/Code/Semestre + +% 3ème tableau : descriptif +\begin{tabular}[t]{|P|T|} +\hline + {\bfseries Titre} & + {\csname ESname\EXEMPLE\endcsname} \\ +\hline + {\bfseries Description} & + \tableauChampLong{\csname ESdescription\EXEMPLE\endcsname} \\ +\hline + { \setlength{\extrarowheight}{0pt} + \begin{tabular}[t]{@{}P@{}} + {\bfseries Problématique} \\ + {\bfseries professionnelle} \\ + {\bfseries posée} \\ + \end{tabular} +} & + \tableauChampLong{\csname ESproblematique\EXEMPLE\endcsname} \\ +\hline +{ \setlength{\extrarowheight}{0pt} + \begin{tabular}[t]{@{}P@{}} + {\bfseries Formes} \\ + {\bfseries pédagogiques} \\ + \end{tabular} +} +& \tableauChampLong{\csname ESformes\EXEMPLE\endcsname} \\ +\hline +{ \setlength{\extrarowheight}{0pt} + \begin{tabular}[t]{@{}P@{}} + {\bfseries Modalités} \\ + {\bfseries d'évaluation} \\ + {\bfseries assurant l'acquisition} \\ + {\bfseries du niveau de compétence} \\ + {\bfseries visée} \\ + \end{tabular} +} +& \tableauChampLong{\csname ESmodalite\EXEMPLE\endcsname} \\ +\hline +\hline + +\end{tabular} + +} \ No newline at end of file diff --git a/latex/pn_formation.tex b/latex/pn_formation.tex index e1c5e59..037db96 100644 --- a/latex/pn_formation.tex +++ b/latex/pn_formation.tex @@ -65,6 +65,7 @@ bottom=15mm \input{modeles/tableau.tex} \input{modeles/tableau_ressource.tex} \input{modeles/tableau_sae.tex} +\input{modeles/tableau_exemple.tex} \begin{document} @@ -95,15 +96,22 @@ bottom=15mm \newcounter{noressource} \newcounter{nosae} +\newcounter{noexemple} %% SEMESTRE 1 +%\tableauExempleSAE{AA}{A} + % Les SAE du semestre 1 % **************************** % \tableauSAE{AA} -\forLoop{1}{\value{cptSA}}{nosae}{ +\forLoop{1}{\value{cptSA}}{nosae}{ % Pour chaque SAE %A\Alph{noressource} - \tableauSAE{A\Alph{nosae}} + \def\currentSAE{A\Alph{nosae}} + \tableauSAE{\currentSAE} + \forLoop{1}{\value{cptSexemple\currentSAE}}{noexemple}{ + \tableauExempleSAE{\currentSAE}{\Alph{noexemple}} + } \newpage } diff --git a/latex/referentiel_BUT1.tex b/latex/referentiel_BUT1.tex index d00e63e..f527dcf 100644 --- a/latex/referentiel_BUT1.tex +++ b/latex/referentiel_BUT1.tex @@ -4,10 +4,27 @@ \nouveausemestre{} \input{saes/SAE11.tex} +\input{saes/SAE11_exemple1.tex} +\input{saes/SAE11_exemple2.tex} +\input{saes/SAE11_exemple3.tex} + \input{saes/SAE12.tex} +\input{saes/SAE12_exemple1.tex} +\input{saes/SAE12_exemple2.tex} +\input{saes/SAE12_exemple3.tex} +\input{saes/SAE12_exemple4.tex} + \input{saes/SAE13.tex} +\input{saes/SAE13_exemple1.tex} +\input{saes/SAE13_exemple2.tex} +\input{saes/SAE13_exemple3.tex} +\input{saes/SAE13_exemple4.tex} + \input{saes/SAE14.tex} +\input{saes/SAE14_exemple1.tex} + \input{saes/SAE15.tex} +\input{saes/SAE15_exemple1.tex} \input{ressources/R101.tex} %\input{ressources/R102.tex} diff --git a/latex/saes/SAE11.tex b/latex/saes/SAE11.tex index ea0254e..0f43960 100644 --- a/latex/saes/SAE11.tex +++ b/latex/saes/SAE11.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ11}{Sensibilisation à l'hygiène informatique et à la cybersécurité} diff --git a/latex/saes/SAE12.tex b/latex/saes/SAE12.tex index 965a237..f841ec1 100644 --- a/latex/saes/SAE12.tex +++ b/latex/saes/SAE12.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ12}{S'initier aux réseaux informatiques} diff --git a/latex/saes/SAE13.tex b/latex/saes/SAE13.tex index 84060cc..cf01c77 100644 --- a/latex/saes/SAE13.tex +++ b/latex/saes/SAE13.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ13}{Découvrir un dispositif de transmission} diff --git a/latex/saes/SAE14.tex b/latex/saes/SAE14.tex index 4fc1045..74e50d3 100644 --- a/latex/saes/SAE14.tex +++ b/latex/saes/SAE14.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ14}{Se présenter sur Internet} diff --git a/latex/saes/SAE15.tex b/latex/saes/SAE15.tex index 75bb500..aaf419a 100644 --- a/latex/saes/SAE15.tex +++ b/latex/saes/SAE15.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ15}{Traitement de données} diff --git a/latex/saes/SAE21.tex b/latex/saes/SAE21.tex index 9ebfb4d..072c8b7 100644 --- a/latex/saes/SAE21.tex +++ b/latex/saes/SAE21.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ21}{Construire un réseau informatique pour une petite structure} diff --git a/latex/saes/SAE22.tex b/latex/saes/SAE22.tex index 770065c..6f3e9c2 100644 --- a/latex/saes/SAE22.tex +++ b/latex/saes/SAE22.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ22}{Mesurer et caractériser un signal ou un système} diff --git a/latex/saes/SAE23.tex b/latex/saes/SAE23.tex index 74fed09..bbb11c2 100644 --- a/latex/saes/SAE23.tex +++ b/latex/saes/SAE23.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{SAÉ23}{Mettre en place une solution informatique pour l’entreprise} diff --git a/python/export_yaml_to_latex.py b/python/export_yaml_to_latex.py index f9c9f95..50f36f7 100644 --- a/python/export_yaml_to_latex.py +++ b/python/export_yaml_to_latex.py @@ -63,12 +63,23 @@ if False: fid.write(contenu) print(f"Export de {fichierlatex} ") -# Export latex des ressources -for sem in saes: - for s in saes[sem]: +# Export latex des sae +if False: + for sem in saes: + for s in saes[sem]: - fichierlatex = REPERTOIRE_LATEX + "/" + "{}.tex".format(s.sae["code"].replace("É", "E")) - contenu = s.to_latex() - with open(fichierlatex, "w", encoding="utf8") as fid: - fid.write(contenu) - print(f"Export de {fichierlatex} ") \ No newline at end of file + fichierlatex = REPERTOIRE_LATEX + "/" + "{}.tex".format(s.sae["code"].replace("É", "E")) + contenu = s.to_latex() + with open(fichierlatex, "w", encoding="utf8") as fid: + fid.write(contenu) + print(f"Export de {fichierlatex} ") + +# Export latex des exemples +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) + contenu = e.to_latex() + with open(fichierlatex, "w", encoding="utf8") as fid: + fid.write(contenu) + print(f"Export de {fichierlatex} ") \ No newline at end of file diff --git a/python/pn/modele_exemple_sae.tex b/python/pn/modele_exemple_sae.tex new file mode 100644 index 0000000..cd2d17e --- /dev/null +++ b/python/pn/modele_exemple_sae.tex @@ -0,0 +1,15 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Exemple de SAE +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\nouvelexemple{#titre} + +\ajoutESdescription{ +#description +} + +\ajoutESformes{#formes} + +\ajoutESproblematique{#problematique} + +\ajoutESmodalite{#modalite} \ No newline at end of file diff --git a/python/pn/modele_sae.tex b/python/pn/modele_sae.tex index a72fdd3..b6c5bfd 100644 --- a/python/pn/modele_sae.tex +++ b/python/pn/modele_sae.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Ressources +% SAE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \nouvellesae{#code}{#titre} diff --git a/python/ressource.py b/python/ressource.py index 156da7e..2224b1b 100644 --- a/python/ressource.py +++ b/python/ressource.py @@ -188,60 +188,53 @@ class ExempleSAE(): except: Ressource.__LOGGER.warning(f"Pb de chargement de {fichieryaml}") - def to_latex(self, modele="pn/modele_sae_exemple.tex"): + def to_latex(self, modele="pn/modele_exemple_sae.tex"): """Génère le code latex décrivant la ressource""" modlatex = get_modele(modele) #"pn/modele_ressource.tex") - # Préparation des ac - ajoutac = "\\ajoutSac{%s}{%s}" - compRT = [] - for accomp in self.sae["acs"]: - comps = [] - for no_ac in range(len(self.sae["acs"][accomp])): # les ac de la comp - code_ac = self.sae["acs"][accomp][no_ac] - comps.append( ajoutac % (code_ac, DATA_ACS[accomp][code_ac]) ) - compRT.append("\n".join(comps)) - - # Préparation des ressources - ajoutressources = "\\ajoutSressources{%s}{%s}" - resRT = [] - for (i, res) in enumerate(self.sae["ressources"]): # in range(len(self.apprentissages)): - resRT.append(ajoutressources % (res, get_officiel_ressource_name_by_code(res))) - ressources = "\n".join(resRT) - - # préparation du descriptif - descriptif = self.sae["description"] - if descriptif == "Aucun": - descriptif = "" - SAE.__LOGGER.warning(f"{self.sae['titre']} n'a pas de description") + description = self.exemple["description"] + if not description: + description = "" + ExempleSAE.__LOGGER.warning(f"{self.exemple['titre']} n'a pas de description") else: - descriptif = descriptif.replace("\n", "\n\n").replace("\n" * 4, "\n") # corrige les suppressions de ligne à la relecture du yaml - descriptif = md_to_latex(descriptif) + description = description.replace("\n", "\n\n").replace("\n" * 4, "\n") # corrige les suppressions de ligne à la relecture du yaml + description = md_to_latex(description) - # préparation des livrables - livrables = self.sae["livrables"] - if livrables == "Aucun": - livrables = "" - SAE.__LOGGER.warning(f"{self.sae['titre']} n'a pas de livrables") + # préparation de la forme + formes = self.exemple["formes"] + if not formes: + formes = "" + ExempleSAE.__LOGGER.warning(f"{self.exemple['titre']} n'a pas de formes") else: - livrables = livrables.replace("\n", "\n\n").replace("\n" * 4, "\n") # corrige les suppressions de ligne à la relecture du yaml - livrables = md_to_latex(livrables) + formes = formes.replace("\n", "\n\n").replace("\n" * 4, "\n") # corrige les suppressions de ligne à la relecture du yaml + formes = md_to_latex(formes) + + # préparation de la problématique + problematique = self.exemple["problematique"] + if not formes: + problematique = "" + ExempleSAE.__LOGGER.warning(f"{self.exemple['titre']} n'a pas de problematique") + else: + problematique = problematique.replace("\n", "\n\n").replace("\n" * 4, "\n") # corrige les suppressions de ligne à la relecture du yaml + problematique = md_to_latex(problematique) + + # préparation des modalites + modalite = self.exemple["modalite"] + if not formes: + modalite = "" + ExempleSAE.__LOGGER.warning(f"{self.exemple['titre']} n'a pas de modalite") + else: + modalite = modalite.replace("\n", "\n\n").replace("\n" * 4, "\n") # corrige les suppressions de ligne à la relecture du yaml + modalite = md_to_latex(modalite) chaine = "" - chaine = TemplateLatex(modlatex).substitute(code=self.sae["code"], - titre=self.sae["titre"], - heures_encadrees=self.sae["heures_encadrees"], - heures_tp=self.sae["tp"], - heures_projet=self.sae["projet"], - compRT1=compRT[0], - compRT2=compRT[1], - compRT3=compRT[2], - description=caracteres_recalcitrants(descriptif), - ressources=ressources, - livrables= livrables, - motscles = caracteres_recalcitrants(self.sae["motscles"]), - ) + chaine = TemplateLatex(modlatex).substitute(titre=self.exemple["titre"], + description=description, + formes=formes, + problematique = problematique, + modalite=modalite + ) # chaine = chaine.replace("&", "\&") chaine = chaine.replace("\\tightlist\n", "") diff --git a/python/ressourcedocx.py b/python/ressourcedocx.py index 4d007ef..17b4162 100644 --- a/python/ressourcedocx.py +++ b/python/ressourcedocx.py @@ -496,7 +496,7 @@ class ExempleSAEDocx(): "semestre": self.semestre, "description": folded(self.description), "formes": self.formes, - "problematique": folded(self.problematique), + "problematique": folded(self.problematique) if self.problematique !="" else "", "modalite": folded(self.modalite), } output = ruamel.yaml.dump(dico, Dumper=ruamel.yaml.RoundTripDumper,