texlive[66009] Master/texmf-dist: jigsaw (21feb23)
commits+karl at tug.org
commits+karl at tug.org
Tue Feb 21 21:43:52 CET 2023
Revision: 66009
http://tug.org/svn/texlive?view=revision&revision=66009
Author: karl
Date: 2023-02-21 21:43:52 +0100 (Tue, 21 Feb 2023)
Log Message:
-----------
jigsaw (21feb23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/jigsaw/README.md
trunk/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf
trunk/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex
trunk/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty
Modified: trunk/Master/texmf-dist/doc/latex/jigsaw/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jigsaw/README.md 2023-02-21 20:43:36 UTC (rev 66008)
+++ trunk/Master/texmf-dist/doc/latex/jigsaw/README.md 2023-02-21 20:43:52 UTC (rev 66009)
@@ -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
Modified: trunk/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex 2023-02-21 20:43:36 UTC (rev 66008)
+++ trunk/Master/texmf-dist/doc/latex/jigsaw/jigsaw-doc.tex 2023-02-21 20:43:52 UTC (rev 66009)
@@ -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 @@
\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 @@
{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 @@
% \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}};\\
Modified: trunk/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty 2023-02-21 20:43:36 UTC (rev 66008)
+++ trunk/Master/texmf-dist/tex/latex/jigsaw/jigsaw.sty 2023-02-21 20:43:52 UTC (rev 66009)
@@ -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,22 +31,29 @@
\pgfmathparse{int(random(1,120))}
+% store the current scale factor
+% from https://github.com/samcarter/tikzlings/issues/3#issuecomment-461373494
+\newcommand{\jigsaw at getscaling}{
+ \pgfgettransformentries{\tmpscaleA}{\tmpscaleB}{\tmpscaleC}{\tmpscaleD}{\tmp}{\tmp}%
+ \pgfmathsetmacro{\scalingfactor}{sqrt(abs(\tmpscaleA*\tmpscaleD-\tmpscaleB*\tmpscaleC))*sqrt(abs((\pgf at xx/1cm)*(\pgf at yy/1cm)-(\pgf at xy/1cm)*(\pgf at 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 at 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 at getscaling%
+ \IfValueT{#1}{%
\fill[#1]
\side{#2}
[rotate around={90:(0.5,0.5)}] -- \side{#3}
@@ -53,15 +60,16 @@
[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 at options\endcsname},inherit options,
+ inherit options/.code={\csname tikz at options\endcsname},
+ inherit options,
code = {
+ \jigsaw at 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
+}
More information about the tex-live-commits
mailing list.