diff options
Diffstat (limited to 'graphics/pgf/contrib/pictochrono/tex/pictochrono.sty')
-rw-r--r-- | graphics/pgf/contrib/pictochrono/tex/pictochrono.sty | 113 |
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 |