1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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
|