diff options
Diffstat (limited to 'macros/latex/contrib/proflabo/tex/ProfLabo.sty')
-rw-r--r-- | macros/latex/contrib/proflabo/tex/ProfLabo.sty | 305 |
1 files changed, 305 insertions, 0 deletions
diff --git a/macros/latex/contrib/proflabo/tex/ProfLabo.sty b/macros/latex/contrib/proflabo/tex/ProfLabo.sty new file mode 100644 index 0000000000..dafe673b7c --- /dev/null +++ b/macros/latex/contrib/proflabo/tex/ProfLabo.sty @@ -0,0 +1,305 @@ +%Author : Thomas Mounier +%email : thomgo.mounier@gmail.com +%Licence : LaTeX Project Public License + + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{proflabo}[2022/04/25 - Chemistry Lab stuff helper for teachers, V1.0] +\RequirePackage{pgf,tikz} +\RequirePackage{listofitems} +\RequirePackage{simplekv} +\RequirePackage{ifthen} + + +\setKVdefault[Dosage]{Titrant={Titrant},Titre={Titré},Echelle=1,CouleurTitrant={white},CouleurTitre={white}} +\setKVdefault[Chimie]{Couleurs={white},Echelle=0.5,Legende=false} +\defKV[Chimie]{Legendes=\setKV[Chimie]{Legende}} +\setKVdefault[Becher]{Couleurs={white},Echelle=0.5,Legende={}} +\setKVdefault[Tube]{Couleurs={white},Echelle=0.5,Legende={},Hauteur={29}} +\setKVdefault[Erlen]{Couleurs={white},Echelle=1.5,Legende={},LegendeDessous={},Hauteur={33}} +\setKVdefault[Fiole]{Couleurs={white},Echelle=1,Legende={},Hauteur={33}} + + +%%%%%%%%%% N TUBES pour échelle de teinte %%%%%%%%%%%%%%% +\newcommand\EchelleTube[2][]{% +\useKVdefault[Chimie]% +\setKV[Chimie]{#1}% +\xdef\ListeAvantCouleurs{\useKV[Chimie]{Couleurs}}% +\setsepchar{,} +\readlist*\ListeCouleurs{\ListeAvantCouleurs}% +\ifboolKV[Chimie]{Legende}{ +\xdef\ListeAvantLegendes{\useKV[Chimie]{Legendes}}% +\setsepchar{,} +\readlist*\ListeLegendes{\ListeAvantLegendes}% +}{}% +\pgfmathsetmacro{\nombretube}{#2} +\xdef\EchelleActuelle{\useKV[Chimie]{Echelle}} +\scalebox{\EchelleActuelle}{ +\begin{tikzpicture} +\foreach \pos in {1,...,\nombretube}{% +\xdef\CouleurActuelle{\ListeCouleurs[\pos]} +\node at (5*\pos,0) { +\tikz\draw[fill=\CouleurActuelle] +(0,0) arc (0:-180:1)-- ++(0,4) -- (0,4) +(-2,4) -- ++ (0,4) +(0,0) -- ++ (0,8) +%(-2,4) -- ++ (2,0) +; +}; +\ifboolKV[Chimie]{Legende}{% +\xdef\LegendeActuelle{\ListeLegendes[\pos]} +\draw[<-] (5*\pos,-3)--(5*\pos,-9); +\node at (5*\pos,-10){\LegendeActuelle}; +}{} +} +\draw[rounded corners = 2mm] (1,4)--(2,4)--(2,-5)--(5*\nombretube+2,-5) +-- (5*\nombretube+2,4)--(5*\nombretube+3,4)--(5*\nombretube+3,-7)--(1,-7)--cycle; +\draw[] (2,3)--(5*\nombretube+2,3)--(5*\nombretube+2,2.75)--(2,2.75) +--cycle; +\end{tikzpicture} +} +} + +%%%%%%%%%%%%% Montage d'un dosage %%%%%%%%%%%%% + +\newcommand{\Dosage}[2][]{% +\useKVdefault[Dosage]% +\setKV[Dosage]{#1}% +\xdef\EchelleActuelle{\useKV[Dosage]{Echelle}} +\scalebox{\EchelleActuelle}{ + \begin{tikzpicture} + \xdef\CouleurTitrant{\useKV[Dosage]{CouleurTitrant}} + \xdef\CouleurTitre{\useKV[Dosage]{CouleurTitre}} + + + \fill[color=\CouleurTitre] %bécher + (0.3,1.7)--++(1.4,0)--++(0,-0.7)--++(-1.4,0) + ; + \draw %bécher + (1.7,3) -- ++ (0,-2) + (0.3,3) -- ++ (0,-2) + (0.3,1.7) -- ++ (1.4,0) + + ; + \draw %pastille + (1,1.11)ellipse (0.25 and 0.10) + ; + \draw %support + (0,0) -- ++ (2,0) -- ++ (0,1) -- ++ (-2,0) -- ++ (0,-1) + (0.3,0.3) circle(0.1) + + ; + \draw[fill=\CouleurTitrant] %burette + (0.6,3.3) -- ++ (0.7,0) + (1,6) -- ++ (0,-3) -- ++ (-0.2,0.1) -- ++ (0,2.9) + ; + \draw %haut burette sans couleur + (1,6.5)--(1,6)--++(-0.2,0)--++(0,0.5) + ; + \draw + [<-,>=stealth, thick] (1,4.4) -- ++ (2,0) node[right] { + \begin{minipage}{0.4\textwidth} + {\useKV[Dosage]{Titrant}} + \end{minipage} + } + ; + \draw + [<-,>=stealth, thick] (1,1.5) -- ++ (2,0) node[right] { + \begin{minipage}{0.4\textwidth} + {\useKV[Dosage]{Titre}} + \end{minipage} + } + + ; + \node at (1.5,-0.75){{\small \useKV[Dosage]{legendeschema}}}; + \node[color=white] at (-2,0){a}; %hack temporaire pour décaler la figure au centre ... + \end{tikzpicture} +} +} + +%%%%%%%%%%%%%% Bécher avec liquide et éventuellement légende %%%%%%%%%% +\newcommand\Becher[2][]{% +\useKVdefault[Becher]% +\setKV[Becher]{#1}% +\xdef\LegendeActuelleB{\useKV[Becher]{Legende}} +\newif\iflegende +\legendefalse +\ifthenelse{\equal{\LegendeActuelleB}{}}{\legendefalse}{\legendetrue} +\newif\iftraitnoirbecher +\xdef\CouleurBecherd{\useKV[Becher]{Couleurs}} +\ifthenelse{\equal{\CouleurBecherd}{white}}{\traitnoirbechertrue}{} +\xdef\EchelleActuelle{\useKV[Becher]{Echelle}} +\scalebox{\EchelleActuelle}{ +\begin{tikzpicture} +\xdef\CouleurBecher{\useKV[Becher]{Couleurs}} +\fill[color=\CouleurBecher] (0,0)--(0,2)--(2,2)--(2,0)--cycle; +\draw (0,0)--++(0,3); +\draw (0,0)--++(2,0); +\draw (2,0)--++(0,3); +\iftraitnoirbecher +\draw (0,2)--(2,2); +\fi +\iflegende +\draw[<-] (1,1)--(3,2) node[at end, right]{\begin{minipage}{0.25\textwidth}\begin{center} +\useKV[Becher]{Legende} +\end{center} \end{minipage}}; +\fi +\end{tikzpicture}% +}% +}% + + +%%%%%%%%%% TUBE A ESSAI SIMPLE avec legende %%%%%%%%%%%%%%% +\newcommand\TubeAEssai[2][]{% +\useKVdefault[Tube]% +\setKV[Tube]{#1}% +\xdef\LegendeActuelleT{\useKV[Tube]{Legende}} +\newif\iflegendetube +\legendetubefalse +\ifthenelse{\equal{\LegendeActuelleT}{}}{\legendetubefalse}{\legendetubetrue} +\newif\iftrait +\xdef\CouleurTube{\useKV[Tube]{Couleurs}} +\ifthenelse{\equal{\CouleurTube}{white}}{\traittrue}{} +\pgfmathsetmacro{\hauteurmaxtube}{\useKV[Tube]{Hauteur}} +\ifthenelse{\hauteurmaxtube>100}{\setKV[Tube]{Hauteur=100}}{} +\xdef\EchelleActuelle{\useKV[Tube]{Echelle}} +\scalebox{\EchelleActuelle}{ + \begin{tikzpicture}[scale=1] + + \xdef\HauteurTube{\useKV[Tube]{Hauteur}} + \coordinate (H) at (-2,7*\HauteurTube/100); + \coordinate (K) at (0,7*\HauteurTube/100); + \fill[\CouleurTube] (H)--(K)--(0,0) arc (0:-180:1)--(-2,0)--(H) ; + \draw (0,0) arc (0:-180:1); + \draw (-2,0) -- ++ (0,8); + \draw (0,0) -- ++ (0,8); + \draw[color=\CouleurTube] (H) -- (K); + \iftrait + \draw(H) -- (K); + \fi + \iflegendetube + \draw (-1,-1.5) node[below] + { + \begin{minipage}{0.25\textwidth} + \begin{center} + \useKV[Tube]{Legende} + \end{center} + \end{minipage} + } + \fi + ; + \end{tikzpicture} +} +} + +%%%%% Erlenmeyer %%%%% +\newcommand\Erlen[2][]{% +\useKVdefault[Erlen]% +\setKV[Erlen]{#1}% +\xdef\LegendeActuelleT{\useKV[Erlen]{Legende}} +\xdef\LegendeActuelleD{\useKV[Erlen]{LegendeDessous}} +\newif\iflegendeerlen +\newif\iflegendesouserlen +\legendeerlenfalse +\newif\iferlenplein +\newif\iferlenpartiel +\newif\iferlenvide +\erlenvidetrue \erlenpleinfalse \erlenpartielfalse +\ifthenelse{\equal{\LegendeActuelleT}{}}{\legendeerlenfalse}{\legendeerlentrue} +\ifthenelse{\equal{\LegendeActuelleD}{}}{\legendesouserlenfalse}{\legendesouserlentrue} +\pgfmathsetmacro{\hauteurerlen}{\useKV[Erlen]{Hauteur}} +\ifthenelse{\hauteurerlen>100}{\erlenpleintrue\erlenvidefalse\erlenpartielfalse}{} +\ifthenelse{\equal{\hauteurerlen}{100}}{\erlenpleintrue\erlenvidefalse\erlenpartielfalse}{} +\ifthenelse{\equal{\hauteurerlen}{33}}{\erlenpleinfalse\erlenvidefalse\erlenpartieltrue}{} +\newif\iftraitnoirerlen +\xdef\CouleurErlen{\useKV[Erlen]{Couleurs}} +\ifthenelse{\equal{\CouleurErlen}{white}}{\traitnoirerlentrue}{} +\xdef\EchelleActuelle{\useKV[Erlen]{Echelle}} +\scalebox{\EchelleActuelle}{ +\begin{tikzpicture} +\coordinate (A) at (-0.35,1.5); +\coordinate (B) at (0.35,1.5); +\coordinate (C) at (-1,0); +\coordinate (D) at (1,0); +\coordinate (E) at (-0.79,0.49); +\coordinate (F) at (0.79,0.49); +\iferlenplein +\fill[rounded corners,color=\CouleurErlen] (A) --(C)--(D)--(B); +\fill[color=\CouleurErlen] (A)--++(0,0.25)--++(0.7,0)--++(0,-0.25)--cycle; +\iftraitnoirerlen +\draw ($(A)+(0,0.25)$)--($(B)+(0,0.25)$); +\fi +\fi +\iferlenpartiel +\fill[rounded corners,color=\CouleurErlen] (E) --(C)--(D)--(F); +\iftraitnoirerlen +\draw (E)--(F); +\fi +\fi +\draw[rounded corners] (A) --(C)--(D)--(B); +\draw (A)--++(0,0.75); +\draw (B)--++(0,0.75); +\iflegendeerlen +\draw[<-] (1,1)--(2,2) node[at end, right]{\begin{minipage}{0.15\textwidth}\begin{center} +\useKV[Erlen]{Legende} +\end{center} \end{minipage}}; +\fi +\iflegendesouserlen +\draw (0,-0.25) node[below] + { + \begin{minipage}{0.25\textwidth} + \begin{center} + \useKV[Erlen]{LegendeDessous} + \end{center} + \end{minipage} + } + \fi + ; + ; +\end{tikzpicture} +}} + +%%%%%%%%FIOLE JAUGEE%%%%%%%%%% +\newcommand\FioleJaugee[2][]{% +\useKVdefault[Fiole]% +\setKV[Fiole]{#1}% +\xdef\LegendeActuelleF{\useKV[Fiole]{Legende}} +\newif\iflegendefiole +\legendefiolefalse +\newif\iffiolepleine +\newif\iffiolevide +\fiolevidetrue \fiolepleinefalse +\ifthenelse{\equal{\LegendeActuelleF}{}}{\legendefiolefalse}{\legendefioletrue} +\pgfmathsetmacro{\hauteurfiole}{\useKV[Fiole]{Hauteur}} +\ifthenelse{\hauteurfiole>100}{\fiolepleinetrue\fiolevidefalse}{} +\ifthenelse{\equal{\hauteurfiole}{100}}{\fiolepleinetrue\fiolevidefalse}{} +\ifthenelse{\hauteurfiole<100}{\fiolevidetrue\fiolepleinefalse}{} +\xdef\EchelleActuelle{\useKV[Fiole]{Echelle}} +\scalebox{\EchelleActuelle}{ +\begin{tikzpicture} +\xdef\CouleurFiole{\useKV[Fiole]{Couleurs}} +\coordinate (A) at (-0.05,1.75); +\coordinate (B) at (0.05,1.75); +\coordinate (C) at (-0.8,0); +\coordinate (D) at (0.8,0); +\coordinate (E) at (-0.05,2.5); +\coordinate (F) at (0.05,2.5); + +\iffiolepleine +\fill[rounded corners,color=\CouleurFiole] (A) --(C)--(D)--(B); +\fill[color=\CouleurFiole] (A)--(E)--(F)--(B)--cycle; +\fi + +\draw[rounded corners] (A) --(C)--(D)--(B); +\draw (A)--++(0,0.75*2); +\draw (B)--++(0,0.75*2); +\draw (E)--(F); +\iflegendefiole +\draw[<-] (1,1)--(2,2) node[at end, right]{\begin{minipage}{0.15\textwidth}\begin{center} +\useKV[Fiole]{Legende} +\end{center} \end{minipage}}; +\fi + \end{tikzpicture} +} +} + |