summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-02-21 20:53:18 +0000
committerKarl Berry <karl@freefriends.org>2023-02-21 20:53:18 +0000
commit2fe97a2d1607083385fbddba42770750464a9eb6 (patch)
tree7d23684dfc0e78289825c6e0577a988bb5209f0e
parent307d931f6e784fa18a29b2675473afaa8a25aba1 (diff)
jigsaw (21feb23) (branch)
git-svn-id: svn://tug.org/texlive/branches/branch2022.final@66036 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/jigsaw/README.md2
-rw-r--r--Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdfbin176773 -> 183243 bytes
-rw-r--r--Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex15
-rw-r--r--Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty36
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
index 00f6b25cc8b..774686398ad 100644
--- a/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf
+++ b/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf
Binary files differ
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
+}