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
|
%%
%% This is file `pgf-soroban.sty',
%%
%%% ====================================================================
%%% @LaTeX-file{
%%% filename = "pgf-soroban.sty",
%%% version = "1.0",
%%% date = "2007/12/10",
%%% author = "Alain Delmotte",
%%% address = "Alain Delmotte,
%%% avenue du Marathon, 6,
%%% B-1348 Louvain-la-Neuve
%%% BELGIUM",
%%% email = "esperanto@swing.be",
%%% codetable = "ISO/ASCII",
%%% keywords = "soroban, abacus, japanese",
%%% supported = "yes",
%%% }
%
\RequirePackage{calc,ifthen}
\RequirePackage{tikz}
\definecolor{brun}{rgb}{.55 .27 .08} % nouvelle couleur brune
\newcommand{\colbil}{yellow} % couleur par défaut des billes
\newcommand{\coltig}{brun} % couleur par défaut des billes
\newcounter{xx}
\newcounter{yy}
\newlength{\unba}\setlength{\unba}{1mm} % unité de base, par défaut 1mm
\newlength{\eplia}\setlength{\eplia}{3.9mm} % support et ligne centrale
\newlength{\eplib}\setlength{\eplib}{2pt} % deux barres autour ligne centrale
\newlength{\eplic}\setlength{\eplic}{6pt} % cadre et barres extérieures
\newlength{\eplid}\setlength{\eplid}{1pt} % arrondi des billes
\newcommand{\ladj}[1]{% ajustement des longueurs
\setlength{\unba}{1mm * \real{#1}}
\setlength{\eplia}{3.9mm * \real{#1}}
\setlength{\eplib}{2pt * \real{#1}}
\setlength{\eplic}{6pt * \real{#1}}
\setlength{\eplid}{1pt * \real{#1}}
}
\newcommand{\bille}[2]{\filldraw[fill=#2, draw=\coltig, line width=\eplib,x=\unba, y=\unba,rounded corners=\eplid ](#1)+(-8.7,0){-- +(-2.2,5.3)-- +(2.2,5.3)}-- +(8.7,0){-- +(2.2,-5.3)-- +(-2.2,-5.3)}--cycle; %[rounded corners, very thick]
\draw[draw=\coltig, cap=round, line width=\eplib,x=\unba, y=\unba ] (#1)+(-8.6,0)-- +(8.6,0);
}
\newcommand{\support}[1]{%
\draw[line width=\eplia, \coltig,x=\unba, y=\unba ](#1,0)-- +(0,74);
\draw[line width=\eplia, white,x=\unba, y=\unba ](#1,0)+(-10,54.4)-- +(10,54.4);
\draw[line width=\eplib, x=\unba, y=\unba ](#1,0)+(-11,52.8)-- +(11,52.8);
\draw[line width=\eplib, x=\unba, y=\unba ](#1,0)+(-11,56.1)-- +(11,56.1);
}
\newcommand{\tige}[4][1]{\setcounter{xx}{20*(#2-1+#1) - 10}%
\support{\value{xx}}
\ifthenelse{#3>4}{\bille{\value{xx},62}{\colbil}}{\bille{\value{xx},68.2}{\colbil}}
\ifthenelse{\(#3=0\)\or\(#3=5\)}{\foreach \m in {5.3,16,26.7,37.4} {\bille{\value{xx},\m}{\colbil};}}{%
\ifthenelse{\(#3=1\)\or\(#3=6\)}{\foreach \m in {5.3,16,26.7,46.9} {\bille{\value{xx},\m}{\colbil};}}{%
\ifthenelse{\(#3=2\)\or\(#3=7\)}{\foreach \m in {5.3,16,36.3,46.9} {\bille{\value{xx},\m}{\colbil};}}{%
\ifthenelse{\(#3=3\)\or\(#3=8\)}{\foreach \m in {5.3,25.6,36.3,46.9} {\bille{\value{xx},\m}{\colbil};}}{%
\ifthenelse{\(#3=4\)\or\(#3=9\)}{\foreach \m in {14.9,25.6,36.3,46.9} {\bille{\value{xx},\m}{\colbil};}}{%
}}}}}
\ifthenelse{#4=1}{\draw[fill=black,x= \unba, y= \unba] (\value{xx},54.4) circle(\unba);}{}
}
\newcommand{\binoire}[4][1]{%
\setcounter{xx}{20*(#2-1+#1)-10}
\ifthenelse{#3=1}{\bille{\value{xx},5.3}{#4};}{% 1 en bas xooo o
\ifthenelse{#3=2}{\bille{\value{xx},16}{#4};}{% 2 oxoo o
\ifthenelse{#3=3}{\bille{\value{xx},26.7}{#4};}{% 3 ooxo o
\ifthenelse{#3=4}{\bille{\value{xx},37.4}{#4};}{% 4 ooox o
\ifthenelse{#3=5}{\bille{\value{xx},46.9}{#4};}{% 6 ooo x o
\ifthenelse{#3=6}{\bille{\value{xx},36.3}{#4};}{% 7 oo xo o
\ifthenelse{#3=7}{\bille{\value{xx},25.6}{#4};}{% 8 o xoo o
\ifthenelse{#3=8}{\bille{\value{xx},14.9}{#4};}{% 9 xooo o
\ifthenelse{#3=9}{\bille{\value{xx},68.2}{#4};}{% 5 * 0 oooo x
\ifthenelse{#3=10}{\bille{\value{xx},62}{#4};}{% 5 * 1 oooo x
}}}}}}}}}}
}
\newcommand{\barbil}[3][1]{%
\setcounter{xx}{20*(#2-1+#1)-10}
\ifthenelse{#3=1}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},5.3)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 1 = 1 en bas xooo oo
\ifthenelse{#3=2}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},16)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 2 = 2 oxoo oo
\ifthenelse{#3=3}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},26.7)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 3 = 3 ooxo oo
\ifthenelse{#3=4}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},37.4)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 4 = 4 ooox oo
\ifthenelse{#3=5}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},46.9)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 5 = 6 ooo x oo
\ifthenelse{#3=6}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},36.3)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 6 = 7 oo xo oo
\ifthenelse{#3=7}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},25.6)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 7 = 8 o xoo oo
\ifthenelse{#3=8}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},14.9)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 8 = 9 xooo oo
\ifthenelse{#3=9}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},68.2)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 9 = 5 * 0 oooo ox
\ifthenelse{#3=10}{\draw[draw=\coltig, cap=round, line width=\unba,x=\unba, y=\unba ] (\value{xx},62)+(-8.6,-5.3)-- +(8.6,5.3);}{ % 10 = 5 * 1 oooo xo
}}}}}}}}}}
}
\newcommand{\cadre}[2][1]{\setcounter{xx}{20*(#2-1+#1) + 1}%
\draw[black, line width=\eplic,x=\unba, y=\unba, rounded corners=\eplia](-1,-1.2)-- (\value{xx},-1.2)-- (\value{xx},74.65)-- (-1, 74.65)--cycle;
}
\newcommand{\barres}[2][1]{%
\setcounter{xx}{20*(#1) -21}%
\setcounter{yy}{20*(#2-1+#1) + 2}%
\draw[black, line width=\eplic,x=\unba, y=\unba](\value{xx},-1.2) -- (\value{yy},-1.2);
\draw[black, line width=\eplic,x=\unba, y=\unba](\value{xx}, 74.65) -- (\value{yy}, 74.65);
}
|