summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-05-28 20:04:57 +0000
committerKarl Berry <karl@freefriends.org>2023-05-28 20:04:57 +0000
commitecd1cf8b86d8ef742e224faef1f9440ee6450eaf (patch)
tree3a8ab0da90020a71dd6cd939c185fb84d385511a /Master/texmf-dist/tex/latex
parent6380ceb7512d53475b8f5f245c62a8f0b8525ee8 (diff)
tikz2d-fr (28may23)
git-svn-id: svn://tug.org/texlive/trunk@67239 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/tikz2d-fr/tikz2d-fr.sty290
1 files changed, 290 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tikz2d-fr/tikz2d-fr.sty b/Master/texmf-dist/tex/latex/tikz2d-fr/tikz2d-fr.sty
new file mode 100644
index 00000000000..e8413a5bf47
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikz2d-fr/tikz2d-fr.sty
@@ -0,0 +1,290 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c
+% or later, see http://www.latex-project.org/lppl.txtf
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tikz2d-fr}[2023/05/28 0.1.1 Petites aides pour l'utilisation de TikZ 2D]
+%0.1.1 Ajout de [TaillePolice] + Commandes Point(s) par transformations (trans / rotat / sym)
+%0.1.0 Version initiale
+
+%------Packages utiles
+\RequirePackage{tikz,pgffor}
+\RequirePackage{xstring}
+\RequirePackage{xintexpr}
+\RequirePackage{simplekv}
+\RequirePackage{listofitems}
+%------Librairies tikz
+\usetikzlibrary{calc}
+\usetikzlibrary{decorations,decorations.pathmorphing}
+
+%------Style main levée (avant dans ProfLycee)
+\tikzset{%
+ mainlevee/.style args={#1et#2}{decorate,decoration={random steps,segment length=#1,amplitude=#2}},
+ mainlevee/.default={5mm et 0.6pt}
+}
+
+%------Points
+%%------Commandes internes pour les nœuds et points
+\NewDocumentCommand\TransfPosTikzDD{ m }{%défaut below
+ \def\PosTmpLabel{below}
+ \IfEq{#1}{b}{\def\PosTmpLabel{below}}{}
+ \IfEq{#1}{d}{\def\PosTmpLabel{right}}{}
+ \IfEq{#1}{h}{\def\PosTmpLabel{above}}{}
+ \IfEq{#1}{g}{\def\PosTmpLabel{left}}{}
+ \IfEq{#1}{bg}{\def\PosTmpLabel{below left}}{}
+ \IfEq{#1}{bd}{\def\PosTmpLabel{below right}}{}
+ \IfEq{#1}{hg}{\def\PosTmpLabel{above left}}{}
+ \IfEq{#1}{hd}{\def\PosTmpLabel{above right}}{}
+}
+\tikzset{pics/croixdd/.style args={#1/#2}{
+ code={
+ \draw[line width={0.4*#1},rotate=#2] (-#1,0) -- (#1,0);
+ \draw[line width={0.4*#1},rotate=#2] (0,-#1) -- (0, #1);
+ }
+ },
+ pics/croixdd/.default={4pt/0}
+}
+
+%%------Créer/Placer/Nommer Point(s) 2d
+\defKV[TkzTwoDimPoint]{%
+ PosLabel=\def\TwoDimLabel{#1},%
+ DecalLabel=\def\TwoDimDecalLabel{#1},%
+ StyleMarque=\def\TwoDimStylePt{#1},%
+ TailleMarque=\def\TwoDimtaillePt{#1},%
+ Couleur=\def\TwoDimCoul{#1},%
+ TaillePolice=\def\TwoDimFonte{#1}
+}
+
+\setKVdefault[TkzTwoDimPoint]{%
+ PosLabel={b},%
+ DecalLabel=2pt,%
+ StyleMarque=o,%
+ TailleMarque=2.5pt,%
+ Couleur=black,%
+ Math=false,%
+ TaillePolice=\normalsize
+}
+
+\NewDocumentCommand\DefinirPoint{ s O{} m m D<>{#3} }{%
+ %*=label
+ %2=clés
+ %3=nom nœud
+ %4=coordonnées x,y
+ %5=label si différent
+ \useKVdefault[TkzTwoDimPoint]%
+ \setKV[TkzTwoDimPoint]{#2}%
+ \TransfPosTikzDD{\TwoDimLabel}
+ \coordinate (#3) at (#4) ;
+ \IfBooleanTF{#1}%on désactive le label avec (*)
+ {}%
+ {\draw (#3) node[\TwoDimCoul,\PosTmpLabel=\TwoDimDecalLabel,font=\TwoDimFonte] {\ifboolKV[TkzTwoDimPoint]{Math}{$#5$}{#5}} ;}%
+}
+
+\NewDocumentCommand\DefinirPoints{ s O{} m }{%
+ %*=labels off
+ %2=clés
+ %3=liste nom/coordonnées/pos
+ %\useKVdefault[TkzTwoDimPoint]%
+ %\setKV[TkzTwoDimPoint]{#2}%
+ \setsepchar[.]{ ./}%
+ \readlist*\ListePtsPlan{#3}
+ \xintifboolexpr{\ListePtsPlanlen == 1}%
+ {%
+ \IfBooleanTF{#1}%on désactive le label avec (*)
+ {%
+ \DefinirPoint*[#2]{\ListePtsPlan[1,1]}{\ListePtsPlan[1,2]}
+ }%
+ {%
+ \DefinirPoint[#2,PosLabel={\ListePtsPlan[1,3]}]{\ListePtsPlan[1,1]}{\ListePtsPlan[1,2]}
+ }%
+ }%
+ {%
+ \foreach \i in {1,2,...,\ListePtsPlanlen}
+ {%
+ \IfBooleanTF{#1}%on désactive le label avec (*)
+ {%
+ \DefinirPoint*[#2]{\ListePtsPlan[\i,1]}{\ListePtsPlan[\i,2]}
+ }%
+ {%
+ \DefinirPoint[#2,PosLabel={\ListePtsPlan[\i,3]}]{\ListePtsPlan[\i,1]}{\ListePtsPlan[\i,2]}
+ }%
+ }%
+ }%
+}
+
+\NewDocumentCommand\MarquerPoint{ O{} m }{%
+ %1=clés
+ %2=nom nœud
+ \useKVdefault[TkzTwoDimPoint]%
+ \setKV[TkzTwoDimPoint]{#1}%
+ \IfStrEq{\TwoDimStylePt}{o}%
+ {\filldraw[\TwoDimCoul] (#2) circle[radius={\TwoDimtaillePt-0.5pt}] ;}{}%
+ \IfStrEq{\TwoDimStylePt}{x}%
+ {\draw[\TwoDimCoul] (#2) pic{croixdd=\TwoDimtaillePt/45} ;}{}%
+ \IfStrEq{\TwoDimStylePt}{+}%
+ {\draw[\TwoDimCoul] (#2) pic{croixdd=\TwoDimtaillePt/0} ;}{}%
+}
+
+\NewDocumentCommand\MarquerPoints{ O{} m }{%
+ %1=clés
+ %2=liste nom/coordonnées/pos
+ %\useKVdefault[TkzTwoDimPoint]%
+ %\setKV[TkzTwoDimPoint]{#1}%
+ \foreach \i in {#2}
+ {%
+ \MarquerPoint[#1]{\i}
+ }%
+}
+
+%------Tracer des segments
+\defKV[TraceSegments]{%
+ Cap=\xdef\TracSegCap{#1},%
+ Join=\xdef\TracSegJoin{#1},%
+ Couleurs=\xdef\TracSegCoul{#1}
+}
+
+\setKVdefault[TraceSegments]{%
+ Cap=round,%
+ Couleurs=black,%
+ Cycle=false,%
+ Join=miter,%
+ Suite=false
+}
+
+\NewDocumentCommand\TracerSegments{ O{} D<>{thick} m }{%
+ \useKVdefault[TraceSegments]%
+ \setKV[TraceSegments]{#1}%
+ \ifboolKV[TraceSegments]{Suite}%si on enchaîne les points A->B->C, sinon A/B A/C ...
+ {%
+ \setsepchar{ }%
+ \readlist*\LPTSEGM{#3}%
+ \IfSubStr{\TracSegCoul}{,}%si ',' := un par un, sinon enchaine
+ {%
+ \setsepchar{,}%
+ \readlist*\LCSEGM{\TracSegCoul}%
+ \ifboolKV[TraceSegments]{Cycle}%
+ {%
+ \foreach \i in {1,2,...,\inteval{\LPTSEGMlen-1}}%
+ {%
+ \draw[color={\LCSEGM[\i]},line cap={\TracSegCap},#2] (\LPTSEGM[\i]) -- (\LPTSEGM[\inteval{\i+1}]) ;
+ }%
+ \draw[color={\LCSEGM[-1]},line cap={\TracSegCap},#2] (\LPTSEGM[-1]) -- (\LPTSEGM[1]) ;
+ }%
+ {%
+ \foreach \i in {1,2,...,\inteval{\LPTSEGMlen-1}}%
+ {%
+ \draw[color={\LCSEGM[\i]},line cap={\TracSegCap},#2] (\LPTSEGM[\i]) -- (\LPTSEGM[\inteval{\i+1}]) ;
+ }%
+ }%
+ }%
+ {%
+ \StrSubstitute{#3}{ }{)--(}[\tmplstpts]%
+ \xdef\tmplstptsconv{(\tmplstpts)}%
+ \ifboolKV[TraceSegments]{Cycle}%
+ {%
+ \draw[color={\TracSegCoul},line join={\TracSegJoin},#2] \tmplstptsconv--cycle ;
+ }%
+ {%
+ \draw[color={\TracSegCoul},line join={\TracSegJoin},#2] \tmplstptsconv ;
+ }%
+ }%
+ }%
+ {%
+ \setsepchar[.]{ ./}%
+ \readlist*\LPTSEGM{#3}%
+ \IfSubStr{\TracSegCoul}{,}%si ',' := un par un, sinon enchaine
+ {%
+ \setsepchar{,}
+ \readlist*\LCSEGM{\TracSegCoul}%
+ \xintifboolexpr{\LPTSEGMlen == 1}%
+ {%
+ \draw[color={\LCSEGM[1]},line cap={\TracSegCap},#2] (\LPTSEGM[1,1]) -- (\LPTSEGM[1,2]) ;
+ }%
+ {%
+ \foreach \i in {1,2,...,\LPTSEGMlen}%
+ {%
+ \draw[color={\LCSEGM[\i]},line cap={\TracSegCap},#2] (\LPTSEGM[\i,1]) -- (\LPTSEGM[\i,2]) ;
+ }%
+ }%
+
+ }%
+ {%
+ \xintifboolexpr{\LPTSEGMlen == 1}%
+ {%
+ \draw[color={\TracSegCoul},line cap={\TracSegCap},#2] (\LPTSEGM[1,1]) -- (\LPTSEGM[1,2]) ;
+ }%
+ {%
+ \foreach \i in {1,2,...,\LPTSEGMlen}%
+ {%
+ \draw[color={\TracSegCoul},line cap={\TracSegCap},#2] (\LPTSEGM[\i,1]) -- (\LPTSEGM[\i,2]) ;
+ }%
+ }%
+ }%
+ }%
+}
+
+%------Définir des points par transformations
+\NewDocumentCommand\ImagePoint{ s O{} m D<>{\tmpptdef} }{%
+ \useKVdefault[TkzTwoDimPoint]%
+ \setKV[TkzTwoDimPoint]{#2}%
+ %si c'est un translation
+ \IfSubStr{#3}{t(}%
+ {%
+ \StrBefore{#3}{=}[\tmpptdef]%
+ \StrBetween{#3}{=}{+}[\tmpptdeb]%
+ \IfSubStr{#3}{,}%
+ {%
+ \StrBetween{#3}{t(}{,}[\tmpk]%
+ \StrBetween{#3}{,}{>}[\tmpvecdeb]%
+ \StrBetween{#3}{>}{)}[\tmpvecfin]%
+ }%
+ {%
+ \xdef\tmpk{1}%
+ \StrBetween{#3}{t(}{>}[\tmpvecdeb]%
+ }%
+ \StrBetween{#3}{>}{)}[\tmpvecfin]%
+ \TransfPosTikzDD{\TwoDimLabel}%
+ \coordinate (\tmpptdef) at ($(\tmpptdeb) + \tmpk*(\tmpvecfin) - \tmpk*(\tmpvecdeb)$) ;
+ }{}%
+ %si c'est une rotation
+ \IfSubStr{#3}{r(}%
+ {%
+ \StrBefore{#3}{=}[\tmpptdef]%
+ \StrBetween{#3}{=}{+}[\tmpptdeb]%
+ \StrBetween{#3}{r(}{,}[\tmpptcenter]%
+ \StrBetween{#3}{,}{)}[\tmpangle]%
+ \TransfPosTikzDD{\TwoDimLabel}%
+ \coordinate (\tmpptdef) at ([rotate around={\tmpangle:(\tmpptcenter)}]\tmpptdeb);
+ }{}%
+ %si c'est une symetrie
+ \IfSubStr{#3}{s(}%
+ {%
+ \StrBefore{#3}{=}[\tmpptdef]%
+ \StrBetween{#3}{=}{+}[\tmpptdeb]%
+ \StrBetween{#3}{s(}{)}[\tmpptcenter]%
+ \TransfPosTikzDD{\TwoDimLabel}%
+ \coordinate (\tmpptdef) at ([rotate around={180:(\tmpptcenter)}]\tmpptdeb);
+ }%
+ {}%
+ \IfBooleanTF{#1}%on désactive le label avec (*)
+ {}%
+ {\draw (\tmpptdef) node[\TwoDimCoul,\PosTmpLabel=\TwoDimDecalLabel,font=\TwoDimFonte] {\ifboolKV[TkzTwoDimPoint]{Math}{$#4$}{#4}} ;}%
+}
+
+\NewDocumentCommand\ImagesPoints{ s O{} m }{%
+ \useKVdefault[TkzTwoDimPoint]%
+ \setKV[TkzTwoDimPoint]{#2}%
+ \setsepchar{§}%
+ \readlist*\listetmptransf{#3}%
+ \foreachitem \formule \in \listetmptransf{%
+ \IfBooleanTF{#1}%
+ {%
+ \ImagePoint*[#2]{\formule}%
+ }%
+ {%
+ \ImagePoint[#2]{\formule}%
+ }%
+ }%
+}
+
+\endinput \ No newline at end of file