% !TeX root = ./examples/tikzlings.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This is the main part of the TikZlings package % A package to bring cute little animals and other beings into tikz % Maintained by samcarter % % Project repository and bug tracker: % https://github.com/samcarter/tikzlings % % Released under the LaTeX Project Public License v1.3c or later % See https://www.latex-project.org/lppl.txt % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ProvidesPackage{tikzlings}[2024/12/11 version v2.0 Collection of packages to draw animals and other beings in TikZ] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % List of all TikZlings % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{tikzlings-list} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % load sub-packages % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{tikz} \ExplSyntaxOn \cs_new_eq:NN \tikzlings@clistMapInlineNn \clist_map_inline:Nn \ExplSyntaxOff \tikzlings@clistMapInlineNn{\tikzlings@packages@clist}{% \RequirePackage{tikzlings-#1}} \RequirePackage{tikzlings-addons} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Drawing a random tikzling % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \RequirePackage{expl3} \ExplSyntaxOn \ifdefined\sys_rand_seed: \pgfmathsetseed {\sys_rand_seed:} \else \ifdefined\pdfrandomseed % pdflatex \else \ifdefined\randomseed \let\pdfrandomseed\randomseed % post TL19 xelatex and lualatex \else \let\pdfrandomseed\time % pre TL19 xelatex \fi \fi \pgfmathsetseed{\number\pdfrandomseed} \fi % #1: tikzling name. % The second argument of \__tikzlings_show_tikzling:nn will be provided % by \tikzling. \cs_new:Npn \__tikzlings_brace_item:n #1 { { \__tikzlings_show_tikzling:nn {#1} } } % #1: tikzling name % #2: options passed to its command \cs_new_protected:Npn \__tikzlings_show_tikzling:nn #1#2 { \group_begin: \pgfkeys { /#1/.search~also/.expanded = { /tikz, /pgf, /thing, \tikzlings@search@paths@clist } } \use:c {#1} [{#2}] \group_end: } \cs_new_protected:Npn \__tikzlings_declare_pgfmath_random_list:n #1 { \pgfmathdeclarerandomlist { tikzlings } {#1} } % Variant that uses \edef on the argument, then passes the result to % \__tikzlings_declare_pgfmath_random_list:n \cs_generate_variant:Nn \__tikzlings_declare_pgfmath_random_list:n { x } % Works because \clist_map_function:NN is expandable \__tikzlings_declare_pgfmath_random_list:x { \clist_map_function:NN \g__tikzlings_names_clist \__tikzlings_brace_item:n } \ExplSyntaxOff \newcommand{\tikzling}[1][]{% \pgfmathrandomitem{\tikzlings@random}{tikzlings}% % #1 is passed as second argument to \__tikzlings_show_tikzling:nn \tikzlings@random{#1}% }