Compare commits

..

No commits in common. "8e0121e8a8cc3be80fa1d7b527326e3966beffb2" and "fbd4ce657997703fad5fba067ecb9acdfff252e3" have entirely different histories.

8 changed files with 48 additions and 324 deletions

2
.gitignore vendored
View File

@ -13,7 +13,6 @@
**/*.tdo **/*.tdo
**/*.amc **/*.amc
**/*.xsim **/*.xsim
**/*.tkzfonct.*
**/tmp/* **/tmp/*
@ -26,4 +25,3 @@ test/
.venv/ .venv/
venv/ venv/
video/ video/

118
tasks.py
View File

@ -1,118 +0,0 @@
from invoke import task
from pathlib import Path
from prompt_toolkit import prompt
from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.validation import Validator
from unidecode import unidecode
import jinja2
from pytex import texenv
import datetime
import locale
locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
TRIBES = [
{"name": "Première Technologique", "directory": "1ST"},
{"name": "Science numérique et technologique", "directory": "SNT"},
{"name": "Terminale L-ES", "directory": "TESL"},
{"name": "Terminale sti2d", "directory": "Tsti2d"},
]
AUTHOR = "Benjamin Bertrand"
def is_tribe(tribe):
return tribe in [t["directory"] for t in TRIBES]
def get_sequences(tribe):
p = Path(tribe)
return [x for x in p.iterdir() if (x.is_dir() and x.name[0:2].isdigit())]
def get_tags(tribe=""):
p = Path(tribe)
tags = set()
indexes = p.glob("**/index.rst")
for index_p in indexes:
with open(index_p, "r") as index:
line = index.readline()
while line:
if line.startswith(":tags"):
tags.update(line[7:].replace("\n", "").split(', '))
break
line = index.readline()
return {t.lower() for t in tags}
def next_weekday(date, day=0):
return date + datetime.timedelta(days=(day-date.weekday()+7)%7)
def sequence_prompt():
sequence = {}
print("Nouvelle séquence")
sequence["author"] = prompt("Auteur: ", default=AUTHOR)
sequence["date"] = datetime.date.today()
tribes = WordCompleter([t["directory"] for t in TRIBES])
sequence["tribe"] = prompt("Classe: ", completer=tribes, validator=Validator.from_callable(is_tribe))
sequences = get_sequences(sequence["tribe"])
print("Séquences trouvées:\n\t" + '\n\t'.join(sorted([s.name for s in sequences])))
sequence["num"] = len(sequences) + 1
sequence["title"] = prompt(f"Nom de la séquence (n°{sequence['num']}): ")
known_tags = get_tags()
sequence["tags"] = prompt("Tags (séparés par une virgule): ", completer=WordCompleter(known_tags))
sequence["summary"] = prompt("Résumé: ")
return sequence
def import_skel(dest, datas, skel="sequence", skel_path="./tools/skeleton"):
d = Path(dest)
d.mkdir()
p = Path(skel_path + "/" + skel)
files = [t.name for t in p.iterdir()]
template_loader = jinja2.FileSystemLoader(searchpath=p)
template_env = jinja2.Environment(loader=template_loader)
texenv.loader.loaders.append(template_loader)
print("")
for filename in files:
if filename.endswith(".tex"):
template = texenv.get_template(filename)
else:
template = template_env.get_template(filename)
output_text = template.render(**datas)
with open(d/filename, "w") as f:
f.write(output_text)
print(f"Importation de {filename} - OK")
@task
def sequence(c):
sequence = sequence_prompt()
dest = unidecode(("{tribe}/{num:0>2}_{title}/".format(**sequence)).replace(" ", "_"))
dest = Path(dest)
seq_summary = """\
Séquence: {num:0>2} {title}
Niveau: {tribe}
Auteur: {author}
Date: {date}
Tags: {tags}
Sommaire: {summary}
Dossier: {dest}
""".format(dest=dest, **sequence)
print(seq_summary)
validate = prompt("C'est ok? ")
if validate.lower() in ["o", "y", ""]:
sequence["title_under"] = '#'*len(sequence["title"])
import_skel(dest, sequence, "sequence")
else:
print("Tant pis. Ya plus qu'à recommencer.")

View File

@ -32,7 +32,7 @@
\item \verb+\vectCoord+ $\vectCoord{\#1}{\#2}$ \item \verb+\vectCoord+ $\vectCoord{\#1}{\#2}$
\item \verb+\e+ $\e$ \item \verb+\e+ $\e$
% \item \verb+\i+ $\i$ % \item \verb+\i+ $\i$
\item \verb+\coefBino+ $\coefBino{\#1}{\#2}$ \item \verb+\coefBino+ $\coefBino{\#1}{\#2}$
@ -57,39 +57,39 @@
\item \verb+\SignalBar+ \SignalBar{2} \item \verb+\SignalBar+ \SignalBar{2}
\item \verb+\Assesment+ \Assesment{3} \item \verb+\Assesment+ \Assesment{3}
\item \verb+\competencesStatement+ \competencesStatement \item \verb+\competencesStatement+ \competencesStatement
\end{itemize} \end{itemize}
\section{tikzpicture} \section{tikzpicture}
\begin{verbatim} \begin{verbatim}
\begin{tikzpicture}[scale=1] \begin{tikzpicture}[scale=1]
... ...
\end{tikzpicture} \end{tikzpicture}
\end{verbatim} \end{verbatim}
\begin{itemize} \begin{itemize}
\item \verb+\cercleTrigo+ \item \verb+\cercleTrigo+
\begin{tikzpicture}[scale=1] \begin{tikzpicture}[scale=1]
\cercleTrigo \cercleTrigo
\end{tikzpicture} \end{tikzpicture}
\item \verb+\cercleTrigoNoOIJ+ \item \verb+\cercleTrigoNoOIJ+
\begin{tikzpicture}[scale=1] \begin{tikzpicture}[scale=1]
\cercleTrigoNoOIJ \cercleTrigoNoOIJ
\end{tikzpicture} \end{tikzpicture}
\item \verb+\repere+ \item \verb+\repere+
\begin{tikzpicture}[scale=1] \begin{tikzpicture}[scale=1]
\repere{-2}{2}{-2}{2} \repere{-2}{2}{-2}{2}
\end{tikzpicture} \end{tikzpicture}
\item \verb+\repereNoGrid+ \item \verb+\repereNoGrid+
\begin{tikzpicture}[scale=1] \begin{tikzpicture}[scale=1]
\repereNoGrid{-2}{2}{-2}{2} \repereNoGrid{-2}{2}{-2}{2}
\end{tikzpicture} \end{tikzpicture}
\item \verb+\boxplot+ \item \verb+\boxplot+
\begin{tikzpicture}[scale=1] \begin{tikzpicture}[scale=1]
\boxplot{2}{0}{1}{2}{3}{4}{5} \boxplot{2}{0}{1}{2}{3}{4}{5}
\end{tikzpicture} \end{tikzpicture}
\item \verb+\boxplotNoNames+ \item \verb+\boxplotNoNames+
\begin{tikzpicture}[scale=1] \begin{tikzpicture}[scale=1]
\boxplotNoNames{2}{0}{1}{2}{3}{4}{5} \boxplotNoNames{2}{0}{1}{2}{3}{4}{5}
\end{tikzpicture} \end{tikzpicture}
\end{itemize} \end{itemize}
\section{Mise en avant} \section{Mise en avant}
@ -105,9 +105,7 @@
\end{itemize} \end{itemize}
\section{Algo} \section{Algo}
\begin{verbatim}
\begin{multicols}{2}
\begin{verbatim}
\begin{algorithm}[H] \begin{algorithm}[H]
\SetAlgoLined \SetAlgoLined
\Entree{n} \Entree{n}
@ -119,44 +117,37 @@
} }
\Sortie{u} \Sortie{u}
\end{algorithm} \end{algorithm}
\end{verbatim} \end{verbatim}
\columnbreak \begin{algorithm}[H]
\SetAlgoLined
\begin{algorithm}[H] \Entree{n}
\SetAlgoLined \Deb{
\Entree{n} $u \leftarrow 3$ \;
\Deb{ \Pour{$i$ de 1 à 3}{
$u \leftarrow 3$ \; $u \leftarrow u+2$ \;
\Pour{$i$ de 1 à 3}{
$u \leftarrow u+2$ \;
}
} }
\Sortie{u} }
\end{algorithm} \Sortie{u}
\end{multicols} \end{algorithm}
\section{Programmation} \section{Programmation}
\begin{multicols}{2} \begin{verbatim}
\begin{verbatim} \begin{lstlisting}[language=Python, basicstyle=\small, frame=]
\begin{lstlisting}[language=Python, basicstyle=\small, frame=]
x = ("Nombre de tirage?") x = ("Nombre de tirage?")
if x < 200: if x < 200:
print("Le tarif est ", x*0.11) print("Le tarif est ", x*0.11)
else: else:
print("Le tarif est ", x*0.8) print("Le tarif est ", x*0.8)
\end{lstlisting} \end{lstlisting}
\end{verbatim} \end{verbatim}
\begin{lstlisting}[language=Python, basicstyle=\small, frame=]
\columnbreak
\begin{lstlisting}[language=Python, basicstyle=\small, frame=]
x = ("Nombre de tirage?") x = ("Nombre de tirage?")
if x < 200: if x < 200:
print("Le tarif est ", x*0.11) print("Le tarif est ", x*0.11)
else: else:
print("Le tarif est ", x*0.8) print("Le tarif est ", x*0.8)
\end{lstlisting} \end{lstlisting}
\end{multicols}
\section{QRcode} \section{QRcode}
@ -164,98 +155,5 @@
\qrcode{phrase à coder} \qrcode{phrase à coder}
\section{Graphique et tableaux}
\subsection{Grahique}
\begin{multicols}{2}
\begin{verbatim}
\begin{tikzpicture}[baseline=(a.north),
xscale=1, yscale=0.5]
\tkzInit[xmin=-5,xmax=5,xstep=1,
ymin=-5,ymax=5,ystep=1]
\tkzGrid
\tkzAxeXY
\tkzFct[domain=-5:5,color=red,very thick]%
{ 0.4*x*x - 3 };
\end{tikzpicture}
\end{verbatim}
\columnbreak
\begin{tikzpicture}[baseline=(a.north),
xscale=1, yscale=0.5]
\tkzInit[xmin=-5,xmax=5,xstep=1,
ymin=-5,ymax=5,ystep=1]
\tkzGrid
\tkzAxeXY
\tkzFct[domain=-5:5,color=red,very thick]%
{ 0.4*x*x - 3 };
\end{tikzpicture}
\end{multicols}
Quand on change la valeur de \verb+xstep+, il faut replacer \verb+x+ par \verb+\x+.
\begin{multicols}{2}
\begin{verbatim}
\begin{tikzpicture}[baseline=(a.north),
xscale=0.5, yscale=0.4]
\tkzInit[xmin=-5,xmax=5,xstep=0.5,
ymin=-5,ymax=5,ystep=1]
\tkzGrid
\tkzAxeXY
\tkzFct[domain=-5:5,color=red,very thick]%
{ 0.4*\x*\x - 3 };
\end{tikzpicture}
\end{verbatim}
\columnbreak
\begin{tikzpicture}[baseline=(a.north),
xscale=0.5, yscale=0.4]
\tkzInit[xmin=-5,xmax=5,xstep=0.5,
ymin=-5,ymax=5,ystep=1]
\tkzGrid
\tkzAxeXY
\tkzFct[domain=-5:5,color=red,very thick]%
{ 0.4*\x*\x - 3 };
\end{tikzpicture}
\end{multicols}
\subsection{Tableau de signes et variations}
\begin{multicols}{2}
\begin{verbatim}
\begin{tikzpicture}[baseline=(a.north)]
\tkzTabInit[lgt=2,espcl=2]
{$ x $/1,$ f(x) $/2}{-1, 2, 3, 5}
\tkzTabLine{, +, z, +, z, -, d, + , }
\end{tikzpicture}
\end{verbatim}
\columnbreak
\begin{tikzpicture}[baseline=(a.north)]
\tkzTabInit[lgt=2,espcl=2]
{$ x $/1,$ f(x) $/2}{-1, 2, 3, 5}
\tkzTabLine{, +, z, +, z, -, d, + , }
\end{tikzpicture}
\end{multicols}
\begin{multicols}{2}
\begin{verbatim}
\begin{tikzpicture}[baseline=(a.north)]
\tkzTabInit[lgt=2,espcl=2]
{$ x $/1, $ f(x) $/2}{-2, 0, 1 }
\tkzTabVar{ +/3, -/1, +/5}
\end{tikzpicture}
\end{verbatim}
\columnbreak
\begin{tikzpicture}[baseline=(a.north)]
\tkzTabInit[lgt=2,espcl=2]
{$ x $/1, $ f(x) $/2}{-2, 0, 1 }
\tkzTabVar{ +/3, -/1, +/5}
\end{tikzpicture}
\end{multicols}
\end{document} \end{document}

View File

@ -1,14 +0,0 @@
\documentclass[a4paper,10pt]{article}
\usepackage{myXsim}
\author{\Var{ author }}
\title{\Var{title} - Cours}
\date{\Var{date.strftime("%B %Y")}
\pagestyle{empty}
\begin{document}
\maketitle
\end{document}

View File

@ -1,18 +0,0 @@
\documentclass[a4paper,10pt]{article}
\usepackage{myXsym}
\author{\Var{ author }}
\title{\Var{title} - Cours}
\date{\Var{date.strftime("%B %Y")}
\DeclareExerciseCollection{banque}
\xsimsetup{
step=1,
}
\begin{document}
\input{exercises.tex}
\printcollection{banque}
\end{document}

View File

@ -1,10 +0,0 @@
\collectexercises{banque}
\begin{exercise}[subtitle={<++>}, step={1}, origin={<++>}, topics={\Var{title}}, tags={\Var{tags}}]
<++>
\end{exercise}
\begin{solution}
<++>
\end{solution}
\collectexercisesstop{banque}

View File

@ -1,12 +0,0 @@
{{ title }}
{{ title_under }}
:date: 2020-08-14
:modified: 2020-08-14
:authors: {{ author }}
:tags: {{ tags }}
:category: {{ tribe }}
:summary: {{ summary }}
Étape 1:
========