\ProvidesPackage{open-everyday-symbols}[2025/04/20 v1.0 The OPEN Everyday Symbols Library] \RequirePackage{tikz} \RequirePackage{etoolbox} % used for conditionals \RequirePackage{xstring} % used for the main command we provide \tikzset{every picture/.append style={baseline=(current bounding box.south)}} \makeatletter \NewDocumentCommand{\everydaySymbol}{O{} m m}{% \pgfkeys{/everydaySymbol/#2/.cd, default}% \def\everydaySymbol@color{black}% \IfStrEq{#1}{}{% % nothing }{% \IfSubStr{#1}{=}{% \pgfkeys{/everydaySymbol/#2/.cd, #1}% }{% \def\everydaySymbol@color{#1}% }% }% \csname everydaySymbol@#2@#3\endcsname{\everydaySymbol@color}% } % --- BEGIN symbols/door/floorplan--pascal.tex --- % --- door definitions --- \pgfkeys{ /everydaySymbol/door/.cd, color/.code = {\def\everydaySymbol@color{#1}}, default/.code={} } % 01 \expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-01\endcsname[1]{% \tikz{% \fill[#1!20!white] (0.3,0.3) rectangle (0.65,0.7);% \fill[#1] (0.35,0.5) circle (0.02);% }% } % 02 \expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-02\endcsname[1]{% \tikz{% \fill[#1!20!white] (0.3,0.3) -- (0.3,0.6) arc[start angle=180,end angle=0,radius=0.2] -- (0.7,0.3) -- cycle;% \fill[#1] (0.41,0.51) circle (0.02);% }% } % 03 \expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-03\endcsname[1]{% \tikz{% \fill[#1!20!white] (0.3,0.3) rectangle (0.5,0.7);% \draw[#1] (0.3,0.3) rectangle (0.5,0.7);% \fill[#1!60!white] (0.5,0.3) -- (0.65,0.45) -- (0.65,0.85) -- (0.5,0.7) -- cycle;% \draw[#1] (0.5,0.3) -- (0.65,0.45) -- (0.65,0.85) -- (0.5,0.7) -- cycle;% }% } % 04 \expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-04\endcsname[1]{% \tikz{% % closed door (same base size, left panel only) \fill[#1!20!white] (0.3,0.3) rectangle (0.5,0.7);% \draw[#1] (0.3,0.3) rectangle (0.5,0.7);% \fill[#1] (0.35,0.5) circle (0.02);% }% } %05 \expandafter\newcommand\csname everydaySymbol@door@floorplan--pascal-05\endcsname[1]{% \tikz{% \fill[#1!20!white] (0.3,0.3) rectangle (0.7,0.7);% \draw[#1, thick] (0.5,0.3) -- (0.5,0.7);% \fill[#1] (0.43,0.5) circle (0.015);% \fill[#1] (0.57,0.5) circle (0.015);% }% } % --- END symbols/door/floorplan--pascal.tex --- % --- BEGIN symbols/house/iconic--pascal.tex --- % --- keys for house options --- \pgfkeys{ /everydaySymbol/house/.cd, config/.estore in=\everydaySymbol@houseconfig, color/.code = {\def\everydaySymbol@color{#1}}, default/.code={} } \expandafter\newcommand\csname everydaySymbol@house@iconic--pascal\endcsname[1]{% \tikz[baseline]{% \providecommand\everydaySymbol@houseconfig{}% ← ensures defined % base house \fill[#1!20!white] (0,0) rectangle (0.8,0.5); \fill[#1!40!white] (0,0.5) -- (0.4,0.8) -- (0.8,0.5) -- cycle; \draw[#1, thick] (0,0) rectangle (0.8,0.5); \draw[#1, thick] (0,0.5) -- (0.4,0.8) -- (0.8,0.5); % right door \IfSubStr{\everydaySymbol@houseconfig}{rightDoor}{% \fill[#1] (0.37,0) rectangle (0.57,0.3); \draw[white, thick] (0.42,0.15) circle (0.02); }{} % middle door \IfSubStr{\everydaySymbol@houseconfig}{middleDoor}{% \fill[#1] (0.30,0) rectangle (0.50,0.3); \draw[white, thick] (0.35,0.15) circle (0.02); }{} % left window \IfSubStr{\everydaySymbol@houseconfig}{leftWindow}{% \draw[#1, thick] (0.1,0.25) rectangle (0.25,0.4); }{} % two windows \IfSubStr{\everydaySymbol@houseconfig}{twoWindows}{% \draw[#1, thick] (0.1,0.27) rectangle (0.25,0.42); \draw[#1, thick] (0.175,0.27) -- (0.175,0.42); \draw[#1, thick] (0.1,0.345) -- (0.25,0.345); \draw[#1, thick] (0.55,0.27) rectangle (0.7,0.42); \draw[#1, thick] (0.625,0.27) -- (0.625,0.42); \draw[#1, thick] (0.55,0.345) -- (0.7,0.345); }{} % chimney \IfSubStr{\everydaySymbol@houseconfig}{chimney}{% \fill[#1] (0.55,0.7) rectangle (0.6,0.9); \draw[#1, thick] (0.55,0.5) -- (0.55,0.7) -- (0.6,0.7) -- (0.6,0.9); }{} }% } % --- END symbols/house/iconic--pascal.tex --- \makeatother \endinput