diff options
author | Karl Berry <karl@freefriends.org> | 2023-02-21 20:43:52 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-02-21 20:43:52 +0000 |
commit | 93cc8f93f278f65eb21d9db2aeef31d38bf364aa (patch) | |
tree | a8bcb53f0ec98bbca2a43f5cc65adf50909fda27 | |
parent | 33a151c7817911e968e9d75bd32209509615c4b2 (diff) |
jigsaw (21feb23)
git-svn-id: svn://tug.org/texlive/trunk@66009 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/jigsaw/README.md | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf | bin | 176773 -> 183243 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex | 15 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty | 36 |
4 files changed, 33 insertions, 20 deletions
diff --git a/Master/texmf-dist/doc/latex/jigsaw/README.md b/Master/texmf-dist/doc/latex/jigsaw/README.md index bd493b23a7e..85fd24c58ac 100644 --- a/Master/texmf-dist/doc/latex/jigsaw/README.md +++ b/Master/texmf-dist/doc/latex/jigsaw/README.md @@ -2,7 +2,7 @@ A small LaTeX package to draw jigsaw pieces with TikZ. It is possible to draw individual pieces and adjust their shape, produce tile patterns or to automatically generate complete jigsaws. -Current version: 2022/07/18 version v0.3 +Current version: 2023/02/21 version v0.4 This project is licensed under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt diff --git a/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf b/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf Binary files differindex 00f6b25cc8b..774686398ad 100644 --- a/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf +++ b/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf diff --git a/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex b/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex index 9abda932054..18ff47f514d 100644 --- a/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex +++ b/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex @@ -10,9 +10,6 @@ % Released under the LaTeX Project Public License v1.3c or later % See http://www.latex-project.org/lppl.txt % -% Version 0.1a -% NOv 9, 2018 -% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[parskip=half]{scrartcl} @@ -98,7 +95,7 @@ \url{https://github.com/samcarter/jigsaw}\\ \url{https://www.ctan.org/pkg/jigsaw} }{samcarter}} -\date{Version v0.3 \textendash{} 2022/07/18} +\date{Version v0.4 \textendash{} 2023/02/21} \begin{document} \maketitle @@ -155,11 +152,15 @@ The piece shape is also available as \TikZ \verb|pic|: \begin{tcblisting}{title={\texttt{pic}}} \begin{tikzpicture} \path (2,-3) pic[ - fill=lightgray,draw=teal,thick + fill=lightgray, draw=teal, ultra thick, + scale=2, pic text={Some Text}, + pic text options={text=violet} ]{piece={1}{-1}{1}{0}}; \end{tikzpicture} \end{tcblisting} +Using the \TikZ \verb|pic| allows to apply various \TikZ option like \verb|scale| or add text in the centre of the piece via \verb|pic text={...}|. + The shapes of the jigsaw pieces are designed to seamlessly fit into each other which allows to produce tile patters in various ways: \begin{tcblisting}{title={Manual tile pattern}} @@ -187,7 +188,7 @@ The shapes of the jigsaw pieces are designed to seamlessly fit into each other w {piece={1}{0}{0}{-1}}; \pic at (0,0) [fill=teal] {piece={0}{-1}{-1}{0}}; -\pic at (1,0) [fill=lightgray] +\pic at (1,0) [fill=lightgray,draw] {piece={0}{0}{-1}{1}}; \end{tikzpicture} \end{tcblisting} @@ -196,7 +197,7 @@ The shapes of the jigsaw pieces are designed to seamlessly fit into each other w % \usetikzlibrary{matrix} \begin{tikzpicture} \matrix [nodes=draw]{ -\pic [fill=lightgray]{piece={-1}{-1}{0}{0}};& +\pic [fill=lightgray]{piece={-1}{1}{0}{0}};& \pic [fill=teal]{piece={1}{0}{0}{-1}}; \\ \pic [fill=teal]{piece={0}{-1}{1}{0}}; & \pic [fill=lightgray]{piece={0}{0}{-1}{1}};\\ diff --git a/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty b/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty index ad8bcc96743..49f2b618bed 100644 --- a/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty +++ b/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty @@ -12,7 +12,7 @@ % See http://www.latex-project.org/lppl.txt % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\ProvidesPackage{jigsaw}[2018/11/09 v0.1 Draw jigsaw pieces in TikZ] +\ProvidesPackage{jigsaw}[2023/02/21 version v0.4 Draw jigsaw pieces in TikZ] \RequirePackage{tikz} @@ -31,37 +31,45 @@ \pgfmathparse{int(random(1,120))} +% store the current scale factor +% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494 +\newcommand{\jigsaw@getscaling}{ + \pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}% + \pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf@xx/1cm)*(\pgf@yy/1cm)-(\pgf@xy/1cm)*(\pgf@yx/1cm)))}% +} + \newcommand{\side}[1]{ (0.0,#1*0.00) .. controls (0.0,#1*0.00) and (0.4,#1*-0.04) .. (0.4,#1*0.04) .. controls (0.4,#1*0.11) and (0.2,#1*0.26) .. (0.5,#1*0.26) .. controls (0.8,#1*0.26) and (0.6,#1*0.11) .. (0.6,#1*0.04) .. controls (0.6,#1*-0.04) and (1.0,#1*0.00) .. -(1.0,#1*0.00) -- ++(.5\pgflinewidth,0) +(1.0,#1*0.00) -- ++(.5\pgflinewidth/\scalingfactor,0) } -\newcommand{\halfpiece}[2]{ +\newcommand{\halfpiece}[2]{% + \jigsaw@getscaling% \draw \side{#1} [rotate around={90:(0.5,0.5)}] \side{#2}; } -\newcommand{\piece}[5][\@nil]{ - \def\tmp{#1}% - \ifx\tmp\@nnil - \else +\NewDocumentCommand{\piece}{ommmm}{% + \jigsaw@getscaling% + \IfValueT{#1}{% \fill[#1] \side{#2} [rotate around={90:(0.5,0.5)}] -- \side{#3} [rotate around={90:(0.5,0.5)}] -- \side{#4} [rotate around={90:(0.5,0.5)}] -- \side{#5} -- cycle; - \fi + }% \draw \side{#2} [rotate around={90:(0.5,0.5)}] -- \side{#3} [rotate around={90:(0.5,0.5)}] -- \side{#4} - [rotate around={90:(0.5,0.5)}] -- \side{#5}; + [rotate around={90:(0.5,0.5)}] -- \side{#5} + -- cycle; } -\newcommand{\tile}[5][\@nil]{% +\NewDocumentCommand{\tile}{ommmm}{% \begin{tikzpicture} \path (0,0) rectangle (1,0.97); \begin{pgfinterruptboundingbox} @@ -97,8 +105,10 @@ \tikzset{ pics/piece/.style n args={4}{ - inherit options/.code={\csname tikz@options\endcsname},inherit options, + inherit options/.code={\csname tikz@options\endcsname}, + inherit options, code = { + \jigsaw@getscaling% \path (0,0) rectangle (1,1); \begin{pgfinterruptboundingbox} \path[pic actions] @@ -107,8 +117,10 @@ [rotate around={90:(0.5,0.5)}] -- \side{#3} [rotate around={90:(0.5,0.5)}] -- \side{#4} -- cycle; + % expansion trick from https://topanswers.xyz/tex?q=3340#a3677 + \node[draw=none,fill=none,style/.expand once=\tikzpictextoptions] at (0.5,0.5) {\tikzpictext}; \end{pgfinterruptboundingbox} } }, piece/.search also={,/tikz,/pgf}, -}
\ No newline at end of file +} |