diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tikzbricks/tikzbricks.sty | 130 |
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}; |