summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-07-21 20:13:56 +0000
committerKarl Berry <karl@freefriends.org>2022-07-21 20:13:56 +0000
commitdac3a8539c5d67eb472e6718ba16b1b46221460b (patch)
treed15db67e28e97015d3be9c5f7fc19c115ecb117a /Master/texmf-dist/tex/latex
parent0848974e73fc0712f8e3fe0f76fd3209bc1c8fab (diff)
tikzbricks (21jul22)
git-svn-id: svn://tug.org/texlive/trunk@63952 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty130
1 files changed, 91 insertions, 39 deletions
diff --git a/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty b/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty
index 5cc38d67a0a..bc8889a9717 100644
--- a/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty
+++ b/Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty
@@ -12,14 +12,32 @@
% See http://www.latex-project.org/lppl.txt
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\ProvidesPackage{tikzbricks}[2021/08/13 version v0.3 Drawing bricks with TikZ]
+\ProvidesPackage{tikzbricks}[2022/07/21 v0.4 Drawing bricks with TikZ]
\RequirePackage{tikz}
\RequirePackage{tikz-3dplot}
+\RequirePackage{xkeyval}
% setting a default viewpoint
\tdplotsetmaincoords{70}{160}
+% setting default values
+\DeclareOptionX{color}[red]{\def\brick@default@color{#1}}
+\DeclareOptionX{frontcolor}[\brick@color!60]{\def\brick@default@frontcolor{#1}}
+\DeclareOptionX{topcolor}[\brick@color!40]{\def\brick@default@topcolor{#1}}
+\DeclareOptionX{sidecolor}[\brick@color]{\def\brick@default@sidecolor{#1}}
+\DeclareOptionX{studcolor}[\brick@color]{\def\brick@default@studcolor{#1}}
+\DeclareOptionX{brickheight}[1.3]{\def\brick@default@height{#1}}
+\DeclareOptionX{bricklength}[1.0]{\def\brick@default@length{#1}}
+\DeclareOptionX{brickwidth}[1.0]{\def\brick@default@width{#1}}
+\DeclareOptionX{studradius}[0.35]{\def\brick@default@radius{#1}}
+\DeclareOptionX{studheight}[0.3]{\def\brick@default@studheight{#1}}
+\DeclareOptionX{studtext}[]{\def\brick@default@text{#1}}
+
+\ExecuteOptionsX{color,frontcolor,topcolor,sidecolor,studcolor,brickheight,bricklength,brickwidth,studradius,studheight,studtext}
+
+\ProcessOptionsX
+
% counter to dermine the position of a brick in a wall
\newcounter{brickx}
\newcounter{bricky}
@@ -80,27 +98,27 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
color/.code = \def\brick@color{#1},
- color = red,
+ color = \brick@default@color,
frontcolor/.code = \def\brick@frontcolor{#1},
- frontcolor = \brick@color!60,
+ frontcolor = \brick@default@frontcolor,
topcolor/.code = \def\brick@topcolor{#1},
- topcolor = \brick@color!40,
+ topcolor = \brick@default@topcolor,
sidecolor/.code = \def\brick@sidecolor{#1},
- sidecolor = \brick@color,
+ sidecolor = \brick@default@sidecolor,
studcolor/.code = \def\brick@studcolor{#1},
- studcolor = \brick@color,
+ studcolor = \brick@default@studcolor,
brickheight/.code = \def\brick@height{#1},
- brickheight = 1.3,
+ brickheight = \brick@default@height,
bricklength/.code = \def\brick@length{#1},
- bricklength = 1.0,
+ bricklength = \brick@default@length,
brickwidth/.code = \def\brick@width{#1},
- brickwidth = 1.0,
+ brickwidth = \brick@default@width,
studradius/.code = \def\brick@radius{#1},
- studradius = 0.35,
+ studradius = \brick@default@radius,
studheight/.code = \def\brick@studheight{#1},
- studheight = 5,
+ studheight = \brick@default@studheight,
studtext/.code = \def\brick@text{#1},
- studtext = {},
+ studtext = \brick@default@text,
}
\newcommand{\brick@draw}[2]{%
@@ -121,19 +139,63 @@
\begin{scope}[tdplot_main_coords]
% Drawing faces
+ \pgfmathparse{sign(sin(\tdplotmainphi))}
+ \let\brick@sin\pgfmathresult
+ \pgfmathparse{sign(cos(\tdplotmainphi))}
+ \let\brick@cos\pgfmathresult
- % Front
- \fill[\brick@frontcolor,thick]
- (
- \brick@length*\value{brickx},
- {\brick@width*(#2+\value{bricky})},
- \brick@height*\value{brickz}
- )
- -- ++(\brick@length*#1,0,0)
- -- ++(0,0,\brick@height)
- -- ++(-\brick@length*#1,0,0)
- -- cycle;
-
+ \ifnum\brick@sin<0
+ % Right
+ \fill[\brick@sidecolor,thick]
+ (
+ \brick@length*\value{brickx},
+ \brick@width*\value{bricky},
+ \brick@height*\value{brickz}
+ )
+ -- ++(0,0,\brick@height)
+ -- ++(0,\brick@width*#2,0)
+ -- ++(0,0,-\brick@height)
+ -- cycle;
+ \else
+ % Left
+ \fill[\brick@sidecolor,thick]
+ (
+ {\brick@length*(#1+\value{brickx})},
+ \brick@width*\value{bricky},
+ \brick@height*\value{brickz}
+ )
+ -- ++(0,0,\brick@height)
+ -- ++(0,\brick@width*#2,0)
+ -- ++(0,0,-\brick@height)
+ -- cycle;
+ \fi
+
+ \ifnum\brick@cos<0
+ % Front
+ \fill[\brick@frontcolor,thick]
+ (
+ \brick@length*\value{brickx},
+ {\brick@width*(#2+\value{bricky})},
+ \brick@height*\value{brickz}
+ )
+ -- ++(\brick@length*#1,0,0)
+ -- ++(0,0,\brick@height)
+ -- ++(-\brick@length*#1,0,0)
+ -- cycle;
+ \else
+ % Back
+ \fill[\brick@frontcolor,thick]
+ (
+ \brick@length*\value{brickx},
+ \brick@width*\value{bricky},
+ \brick@height*\value{brickz}
+ )
+ -- ++(\brick@length*#1,0,0)
+ -- ++(0,0,\brick@height)
+ -- ++(-\brick@length*#1,0,0)
+ -- cycle;
+ \fi
+
% Top
\fill[\brick@topcolor,thick]
(
@@ -145,18 +207,8 @@
-- ++(\brick@length*#1,0,0)
-- +(0,-\brick@width*#2,0)
-- cycle;
-
- % Left
- \fill[\brick@sidecolor,thick]
- (
- {\brick@length*(#1+\value{brickx})},
- \brick@width*\value{bricky},
- \brick@height*\value{brickz}
- )
- -- ++(0,0,\brick@height)
- -- ++(0,\brick@width*#2,0)
- -- ++(0,0,-\brick@height)
- -- cycle;
+
+
% Drawing studs
\foreach \x in {1,...,#1}{
@@ -179,9 +231,9 @@
{\brick@height*(1+\value{brickz})}
)
++(canvas cs:x=-\brick@radius/0.35*10)
- -- ++(canvas cs:y=\brick@studheight)
+ -- ++(canvas cs:y=\brick@studheight*17.8)
-- ++(canvas cs:x=\brick@radius/0.35*20)
- -- ++(canvas cs:y=-\brick@studheight);
+ -- ++(canvas cs:y=-\brick@studheight*17.8);
% Top circle with text
\fill[\brick@topcolor]
@@ -190,7 +242,7 @@
{\brick@width*(\y-0.5+\value{bricky})},
{\brick@height*(1+\value{brickz})}
)
- ++(canvas cs:y=\brick@studheight)
+ ++(canvas cs:y=\brick@studheight*17.8)
circle [radius=\brick@radius]
node[\brick@color,scale=\scalingfactor*0.5, font=\sffamily] {\brick@text};