summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/pictochrono/tex/pictochrono.sty
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/contrib/pictochrono/tex/pictochrono.sty')
-rw-r--r--graphics/pgf/contrib/pictochrono/tex/pictochrono.sty113
1 files changed, 113 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/pictochrono/tex/pictochrono.sty b/graphics/pgf/contrib/pictochrono/tex/pictochrono.sty
new file mode 100644
index 0000000000..d12e83ba0a
--- /dev/null
+++ b/graphics/pgf/contrib/pictochrono/tex/pictochrono.sty
@@ -0,0 +1,113 @@
+% 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{pictochrono}[2024/02/13 0.1.0 Inline chronometer, made with tikz]
+
+%====HISTORY
+% v 0.1.0 Initial version
+
+%====BASE
+\RequirePackage{tikz}
+\usetikzlibrary{calc}
+\RequirePackage{calc}
+\RequirePackage{simplekv}
+\RequirePackage{xstring}
+\RequirePackage{etoolbox}
+
+%====DIMENSIONS
+\newlength{\tmp@chrono@hauteur@totale}
+\newlength{\tmp@chrono@profondeur}
+\newlength{\tmp@chrono@offset}
+
+%====KEYS
+\defKV[chronotikz]{Color=\def\colchrono{#1},Height=\def\hautchrono{#1},Delta=\def\deltachrono{#1},ColTime=\def\coltimechrono{#1},Offset=\def\raisechrono{#1}}
+\setKVdefault[chronotikz]{Color=black,Height=auto,Delta=5,ColTime=lightgray,Offset=auto}
+
+%====INTERNAL MACRO
+\newcommand\tmp@chrono@draw{%
+ \draw[\colchrono,line width={\echellechronotraits\tmp@chrono@hauteur@totale}] (0,0) circle[radius=1] ;
+ %rules
+ \filldraw[line width={\echellechronotraits\tmp@chrono@hauteur@totale},\colchrono,rounded corners={\echellechronoarrondis\tmp@chrono@hauteur@totale}] (65:1)--(65:1.15)--(57.5:1.15)--(57.5:1)--cycle ;
+ \filldraw[line width={\echellechronotraits\tmp@chrono@hauteur@totale},\colchrono,rounded corners={\echellechronoarrondis\tmp@chrono@hauteur@totale}] (115:1)--(115:1.15)--(122.5:1.15)--(122.5:1)--cycle ;
+ \filldraw[line width={\echellechronotraits\tmp@chrono@hauteur@totale},\colchrono,line join=round,rounded corners={\echellechronoarrondis\tmp@chrono@hauteur@totale}] (-0.1,1)--++(0,0.2)-|++(-0.15,0.15)--++(0.5,0)|-++(-0.15,-0.15)--++(0,-0.2)--cycle ;
+}
+
+%====MAIN MACRO
+\NewDocumentCommand\pictochrono{ O{} m D<>{} }{%1:=options,2=durée,3=baseline tikz
+ \restoreKV[chronotikz]%
+ \setKV[chronotikz]{#1}%
+ %calcul des dimensions
+ \def\echellechronotraits{0.037}%
+ \def\echellechronoarrondis{0.003}%
+ \IfStrEqCase{\deltachrono}{%
+ {10}{\def\tmp@gen@traits{90,150,210,270,330,30}}%
+ {15}{\def\tmp@gen@traits{0,90,180,270}}%
+ {20}{\def\tmp@gen@traits{90,210,330}}%
+ {30}{\def\tmp@gen@traits{90,270}}%
+ }%
+ [\def\tmp@gen@traits{0,30,60,90,120,150,180,210,240,270,300,330}]%
+ %option tikz
+ \ifstrempty{#3}%
+ {%
+ \tikzset{chronoalign/.style={}}%
+ }%
+ {%
+ \IfStrEqCase{#3}{%
+ {vcenter}{\tikzset{chronoalign/.style={baseline=(current bounding box.center)}}}%
+ {vtop}{\tikzset{chronoalign/.style={baseline=(current bounding box.north)}}}%
+ {vbottom}{\tikzset{chronoalign/.style={baseline=(current bounding box.south)}}}%
+ }%
+ [\tikzset{chronoalign/.style={}}]%
+ }%
+ %hauteur auto ou non
+ \IfStrEq{\hautchrono}{auto}%
+ {%
+ \settototalheight{\tmp@chrono@hauteur@totale}{\hbox{qB}}%
+ \settodepth{\tmp@chrono@profondeur}{\hbox{q}}%
+ \IfStrEq{\raisechrono}{auto}%
+ {%
+ \setlength{\tmp@chrono@offset}{-\tmp@chrono@profondeur}%
+ }%
+ {%
+ \setlength{\tmp@chrono@offset}{-\raisechrono}%
+ }%
+ %envt
+ \raisebox{\tmp@chrono@offset}{%
+ \begin{tikzpicture}[x={0.4125\tmp@chrono@hauteur@totale},y={0.4125\tmp@chrono@hauteur@totale},transform shape,chronoalign]
+ %time
+ \IfEq{#2}{}{}{\filldraw[rounded corners={\echellechronoarrondis\tmp@chrono@hauteur@totale},\coltimechrono,draw=none] (0,0)--({90-6*(#2)}:0.9) arc ({90-6*(#2)}:90:0.9)--cycle ;}%
+ %rules
+ \IfStrEq{\deltachrono}{0}%
+ {}%
+ {\foreach \i in \tmp@gen@traits {\draw[\colchrono,line width={\echellechronotraits\tmp@chrono@hauteur@totale}] (\i:0.6)--(\i:0.85);}}%
+ %clock
+ \tmp@chrono@draw
+ \end{tikzpicture}%
+ }%
+ }%
+ {%
+ \IfStrEq{\raisechrono}{auto}%
+ {%
+ \setlength{\tmp@chrono@offset}{0pt}%
+ }%
+ {%
+ \setlength{\tmp@chrono@offset}{\raisechrono}%
+ }%
+ \setlength{\tmp@chrono@hauteur@totale}{\hautchrono}%
+ \raisebox{\tmp@chrono@offset}{%
+ \begin{tikzpicture}[x={0.4125\tmp@chrono@hauteur@totale},y={0.4125\tmp@chrono@hauteur@totale},transform shape,chronoalign]
+ %time
+ \IfEq{#2}{}{}{\filldraw[rounded corners={\echellechronoarrondis\tmp@chrono@hauteur@totale},\coltimechrono,draw=none] (0,0)--({90-6*(#2)}:0.9) arc ({90-6*(#2)}:90:0.9)--cycle ;}%
+ %rules
+ \IfStrEq{\deltachrono}{0}%
+ {}%
+ {\foreach \i in \tmp@gen@traits {\draw[\colchrono,line width={\echellechronotraits\tmp@chrono@hauteur@totale}] (\i:0.6)--(\i:0.85);}}%
+ %clock
+ \tmp@chrono@draw
+ \end{tikzpicture}%
+ }%
+ }%
+}
+
+\endinput \ No newline at end of file