texlive[69188] trunk: pagelayout (21dec23)

commits+karl at tug.org commits+karl at tug.org
Thu Dec 21 22:06:10 CET 2023


Revision: 69188
          https://tug.org/svn/texlive?view=revision&revision=69188
Author:   karl
Date:     2023-12-21 22:06:09 +0100 (Thu, 21 Dec 2023)
Log Message:
-----------
pagelayout (21dec23)

Modified Paths:
--------------
    trunk/Build/source/texk/texlive/linked_scripts/pagelayout/pagelayoutapi
    trunk/Build/source/texk/texlive/linked_scripts/pagelayout/textestvis
    trunk/Master/texmf-dist/doc/latex/pagelayout/README.md
    trunk/Master/texmf-dist/doc/latex/pagelayout/pagelayout-manual.pdf
    trunk/Master/texmf-dist/doc/latex/pagelayout/pagelayout-manual.tex
    trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart-1.svg
    trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart.pdf
    trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart.tex
    trunk/Master/texmf-dist/doc/latex/pagelayout/tests.zip
    trunk/Master/texmf-dist/doc/man/man1/pagelayoutapi.1
    trunk/Master/texmf-dist/doc/man/man1/pagelayoutapi.man1.pdf
    trunk/Master/texmf-dist/doc/man/man1/textestvis.1
    trunk/Master/texmf-dist/doc/man/man1/textestvis.man1.pdf
    trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi
    trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi.1.md
    trunk/Master/texmf-dist/scripts/pagelayout/textestvis
    trunk/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls

Modified: trunk/Build/source/texk/texlive/linked_scripts/pagelayout/pagelayoutapi
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/pagelayout/pagelayoutapi	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Build/source/texk/texlive/linked_scripts/pagelayout/pagelayoutapi	2023-12-21 21:06:09 UTC (rev 69188)
@@ -13,7 +13,7 @@
 # LaTeX version 2008/05/04 or later.
 #
 
-version=1.0.4
+version=1.0.5
 
 _convert() {
   turbo=$1
@@ -100,6 +100,17 @@
   fi
 }
 
+getheight() {
+  if command -v magick >/dev/null 2>&1; then
+    filename=$1
+
+    originalheight=$( magick identify -ping -format %h "$filename" )
+    echo $originalheight
+  else
+    echo errormagicknotinstalled
+  fi
+}
+
 optimize() {
   if command -v magick >/dev/null 2>&1; then
     filenamecache=$2
@@ -299,6 +310,7 @@
 usage() {
   cat <<HELP_USAGE
 usage: pagelayoutapi getwidth % FILE
+       pagelayoutapi getheight % FILE
        pagelayoutapi optimize % FILE % FILENAME % EXTENSION % ORIGINALWIDTH
          % ORIGINALHEIGHT % CROPLEFT % CROPRIGHT % CROPTOP % CROPBOTTOM
          % DENSITY % WIDTH % HEIGHT % DOWNSAMPLETHRESHOLD % UNSHARP % QUALITY
@@ -327,6 +339,11 @@
 
   getwidth "$1"
   ;;
+getheight)
+  shift
+
+  getheight "$1"
+  ;;
 optimize)
   shift
 

Modified: trunk/Build/source/texk/texlive/linked_scripts/pagelayout/textestvis
===================================================================
--- trunk/Build/source/texk/texlive/linked_scripts/pagelayout/textestvis	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Build/source/texk/texlive/linked_scripts/pagelayout/textestvis	2023-12-21 21:06:09 UTC (rev 69188)
@@ -13,7 +13,7 @@
 # LaTeX version 2008/05/04 or later.
 #
 
-version=1.0.4
+version=1.0.5
 
 OK="$( tput setaf 2 )•$( tput sgr0 )"
 FAILED="$( tput setaf 1 )$( tput bold )x$( tput sgr0 )"

Modified: trunk/Master/texmf-dist/doc/latex/pagelayout/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pagelayout/README.md	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/doc/latex/pagelayout/README.md	2023-12-21 21:06:09 UTC (rev 69188)
@@ -15,7 +15,7 @@
 Generic templates are the easiest way to put content on a page. The template name describes the layout. You can arrange [l]andscape, [p]ortrait, [s]quare, [w]ide, [g]olden ratio, g[o]lden upright ratio or [f]lexible placeholders in rows [-]. A valid template name for example is `sg-ff`. Notice you cannot combine flexible with fixed aspect ratio placeholders within a row.
 
 ```latex
-\template{ss}{
+\template{ff}{
   \text{
     This text fills the first placeholder.
   }
@@ -73,7 +73,7 @@
 
 In general, you should use the package manager shipped with your TeX distribution to install the pagelayout package.
 
-To install manually, copy the contents of [pagelayout.tds.zip](https://github.com/friedemannbartels/latex-pagelayout/releases/download/v1.0.4/pagelayout.tds.zip) to your local TeX directory tree and run the command `texhash`.
+To install manually, copy the contents of [pagelayout.tds.zip](https://github.com/friedemannbartels/latex-pagelayout/releases/download/v1.0.5/pagelayout.tds.zip) to your local TeX directory tree and run the command `texhash`.
 
 To enable image optimization, shadow creation, and preflight, perform these installation steps:
 
@@ -88,3 +88,7 @@
 ## Development
 
 Run visual regression tests inside the _tests_ directory with the command `textestvis`.
+
+## License
+
+Copyright (c) 2022-2023 Friedemann Bartels. Free use of this software is granted under the terms of the LaTeX Project Public License version 1.3c or later.

Modified: trunk/Master/texmf-dist/doc/latex/pagelayout/pagelayout-manual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/pagelayout/pagelayout-manual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pagelayout/pagelayout-manual.tex	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/doc/latex/pagelayout/pagelayout-manual.tex	2023-12-21 21:06:09 UTC (rev 69188)
@@ -18,7 +18,7 @@
 \usepackage{tikz}
 \OnlyDescription
 \hypersetup{pdfborder={0 0 0}}
-\def\pagelayoutversion{1.0.4}
+\def\pagelayoutversion{1.0.5}
 
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart-1.svg
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart-1.svg	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart-1.svg	2023-12-21 21:06:09 UTC (rev 69188)
@@ -1 +1 @@
-<svg width="320" height="239" viewBox="0 0 240 179.25" version="1.2" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><defs><symbol overflow="visible" id="a"><path style="stroke:none" d="M.14-4.563h3.485v.532H2.187V0h-.609v-4.031H.141zm0 0"/></symbol><symbol overflow="visible" id="b"><path style="stroke:none" d="M3.203-2.125V0h-.562v-2.125c0-.3-.059-.523-.172-.672-.106-.144-.274-.219-.5-.219-.262 0-.465.094-.61.282-.136.187-.203.453-.203.796V0H.594v-4.75h.562v1.844a1.03 1.03 0 0 1 .407-.438c.164-.101.367-.156.609-.156.344 0 .598.117.765.344.176.23.266.574.266 1.031zm0 0"/></symbol><symbol overflow="visible" id="c"><path style="stroke:none" d="M.969-3.406h1.437v2.969h1.11V0H.719v-.438h1.125v-2.53H.969zm.875-1.328h.562v.703h-.562zm0 0"/></symbol><symbol overflow="visible" id="d"><path style="stroke:none" d="M2.969-3.297v.547a1.853 1.853 0 0 0-.485-.203 1.731 1.731 0 0 0-.5-.078c-.25 0-.437.043-.562.125a.427.427 0 0 0-.188.375c0 .156.047.273.141.344.094.074.32.148.688.218l.234.047c.281.055.488.156.625.313.144.156.219.367.219.625 0 .336-.121.601-.36.796-.242.188-.574.282-1 .282-.168 0-.343-.024-.531-.063a3.437 3.437 0 0 1-.594-.156v-.578c.207.105.406.187.594.25.188.055.367.078.547.078.25 0 .441-.05.578-.156a.505.505 0 0 0 .203-.422c0-.258-.25-.442-.75-.547h-.031l-.203-.047c-.324-.062-.563-.164-.719-.312-.148-.157-.219-.36-.219-.61 0-.332.11-.586.328-.765.227-.176.547-.266.954-.266.187 0 .363.016.53.047.165.031.333.086.5.156zm0 0"/></symbol><symbol overflow="visible" id="e"><path style="stroke:none" d="M1.875-4.39v.968h1.281v.438H1.875v1.859c0 .25.047.43.14.531.094.094.258.14.5.14h.641V0H2.47c-.43 0-.73-.082-.906-.25-.168-.164-.25-.457-.25-.875v-1.86H.405v-.437h.906v-.969zm0 0"/></symbol><symbol overflow="visible" id="f"><path style="stroke:none" d="M3.422-1.984v.265H.984v.016c-.011.469.079.808.266 1.016.195.199.473.296.828.296.176 0 .363-.023.563-.078.195-.062.406-.148.625-.265v.562a3.72 3.72 0 0 1-.625.188c-.2.05-.391.078-.579.078-.53 0-.949-.157-1.25-.469C.52-.695.376-1.141.37!
 6-1.703c0-.55.145-.988.438-1.313.289-.32.68-.484 1.171-.484.438 0 .782.152 1.032.453.25.293.382.649.406 1.063zm-.563-.172a1.14 1.14 0 0 0-.265-.61c-.149-.175-.356-.265-.625-.265a.879.879 0 0 0-.672.281.943.943 0 0 0-.297.594Zm0 0"/></symbol><symbol overflow="visible" id="g"><path style="stroke:none" d="m3.406-3.422-1.219 1.64L3.532 0h-.656l-1-1.375L.875 0h-.64l1.343-1.781-1.234-1.64h.625l.906 1.233.906-1.234Zm0 0"/></symbol><symbol overflow="visible" id="h"><path style="stroke:none" d="M3.25-4.75v.469h-.64c-.212 0-.356.043-.438.125-.074.086-.11.23-.11.437v.297H3.25v.438H2.062V0H1.5v-2.984H.594v-.438H1.5v-.234c0-.375.082-.649.25-.828.176-.176.445-.266.813-.266Zm0 0"/></symbol><symbol overflow="visible" id="i"><path style="stroke:none" d="M2.188-1.234c0 .25.046.445.14.578.094.125.235.187.422.187h.656V0h-.719c-.335 0-.593-.102-.78-.313-.188-.218-.282-.523-.282-.921v-3.094h-.89v-.438h1.453Zm0 0"/></symbol><symbol overflow="visible" id="j"><path style="stroke:none" d="M3.531-2.719a1.364 1.364 0 0 0-.375-.203 1.361 1.361 0 0 0-.406-.062c-.355 0-.625.109-.813.328-.18.219-.265.539-.265.953V0h-.563v-3.422h.563v.672c.094-.238.234-.422.422-.547a1.22 1.22 0 0 1 .703-.203c.133 0 .258.023.375.063.125.03.242.085.36.156zm0 0"/></symbol><symbol overflow="visible" id="k"><path style="stroke:none" d="M1.14-.438v1.735H.579v-4.719h.563v.438a.961.961 0 0 1 .375-.375c.156-.094.336-.141.546-.141.407 0 .723.164.954.484.238.313.359.758.359 1.329 0 .554-.121.992-.36 1.312-.23.313-.546.469-.953.469-.21 0-.39-.043-.546-.125a.996.996 0 0 1-.375-.406zm1.657-1.265c0-.438-.074-.766-.219-.984a.67.67 0 0 0-.61-.344.7.7 0 0 0-.624.344c-.137.218-.203.546-.203.984 0 .43.066.758.203.984a.702.702 0 0 0 .625.328c.27 0 .472-.109.61-.328.144-.219.218-.547.218-.984zm0 0"/></symbol><symbol overflow="visible" id="l"><path style="stroke:none" d="M2.14-1.719h-.187c-.324 0-.57.059-.734.172-.168.117-.25.29-.25.516 0 .21.062.37.187.484.125.117.297.172.516.172.312 0 .555-.11.734-.328.176-.219.266-.516.266-.89v-.126zm1.094-.234V0h-.562v-.5c-.125.2-.281.352-.469.45!
 3a1.4 1.4 0 0 1-.656.14c-.344 0-.621-.097-.828-.296C.508-.398.406-.664.406-1c0-.375.125-.66.375-.86.258-.195.633-.296 1.125-.296h.766v-.094c0-.27-.074-.469-.219-.594-.137-.125-.351-.187-.64-.187-.2 0-.399.031-.594.094a2.867 2.867 0 0 0-.563.234v-.563a6.11 6.11 0 0 1 .594-.171c.188-.04.375-.063.563-.063.28 0 .519.043.718.125.196.086.36.21.485.375a.92.92 0 0 1 .171.375c.032.148.047.371.047.672zm0 0"/></symbol><symbol overflow="visible" id="m"><path style="stroke:none" d="M3.234-.172a1.732 1.732 0 0 1-.468.188c-.157.05-.32.078-.485.078-.531 0-.949-.157-1.25-.469-.293-.32-.437-.766-.437-1.328 0-.563.144-1 .437-1.313.301-.32.719-.484 1.25-.484.164 0 .328.023.485.063.156.042.312.109.468.203v.578a1.665 1.665 0 0 0-.453-.281 1.268 1.268 0 0 0-.5-.094c-.355 0-.625.117-.812.344-.188.23-.282.558-.282.984 0 .418.094.742.282.969.195.23.468.343.812.343.196 0 .375-.023.531-.078.157-.062.297-.156.422-.281Zm0 0"/></symbol><symbol overflow="visible" id="n"><path style="stroke:none" d="M.313-2.203h3.234v.515H.312Zm0 0"/></symbol><symbol overflow="visible" id="o"><path style="stroke:none" d="M1.875-3.031a.716.716 0 0 0-.64.344c-.15.218-.22.546-.22.984 0 .43.07.758.22.984.144.219.359.328.64.328.29 0 .508-.109.656-.328.145-.226.219-.554.219-.984 0-.438-.074-.766-.219-.984a.738.738 0 0 0-.656-.344Zm0-.469c.477 0 .844.156 1.094.469.25.304.375.746.375 1.328 0 .586-.125 1.031-.375 1.344-.25.304-.617.453-1.094.453-.469 0-.828-.149-1.078-.453-.25-.313-.375-.758-.375-1.344 0-.582.125-1.024.375-1.328.25-.313.61-.469 1.078-.469Zm0 0"/></symbol><symbol overflow="visible" id="p"><path style="stroke:none" d="M2.625-2.984V-4.75h.563V0h-.563v-.438a.996.996 0 0 1-.375.407c-.156.082-.34.125-.547.125-.406 0-.73-.16-.969-.485C.492-.71.375-1.156.375-1.719c0-.55.117-.984.36-1.297a1.15 1.15 0 0 1 .968-.484 1.046 1.046 0 0 1 .922.516zM.969-1.704c0 .438.066.766.203.985.133.219.336.328.61.328a.71.71 0 0 0 .624-.328c.145-.226.219-.554.219-.984 0-.438-.074-.766-.219-.984a.708.708 0 0 0-.625-.344.662.662 0 0 0-.61.344c-.136.218-.202.546-.202.984zm0 0"/></symbo!
 l><symbol overflow="visible" id="q"><path style="stroke:none" d="M1.188-1.234h1.078V0H1.187Zm0 0"/></symbol><symbol overflow="visible" id="r"><path style="stroke:none" d="M5.984-3.578h8.672V0H1.578v-3.469l2.219-2.344C6.41-8.601 8-10.316 8.562-10.953c.688-.79 1.18-1.492 1.485-2.11.3-.613.453-1.218.453-1.812 0-.914-.277-1.625-.828-2.125-.555-.5-1.34-.75-2.36-.75-.73 0-1.546.148-2.453.438-.906.28-1.851.699-2.828 1.25v-3.797a20.224 20.224 0 0 1 2.875-.813 13.977 13.977 0 0 1 2.719-.281c2.176 0 3.883.512 5.125 1.531 1.25 1.012 1.875 2.39 1.875 4.14A6.37 6.37 0 0 1 14.219-13c-.274.71-.735 1.496-1.39 2.36-.493.624-1.829 2.03-4.017 4.218a517.956 517.956 0 0 0-2.828 2.844zm0 0"/></symbol></defs><path style="fill:#fff;stroke-width:1.43381" d="M4.065.004h231.869a4.056 4.056 0 0 1 4.065 4.065v170.906a4.056 4.056 0 0 1-4.065 4.064H4.064A4.056 4.056 0 0 1 0 174.975V4.07A4.056 4.056 0 0 1 4.065.004Z"/><path style="fill:#a6a6a6;fill-opacity:.2;stroke-width:1.43381" d="M0 179.037v-.203h239.999v.203zm0-4.06v-.204h239.999v.204zm0-4.066v-.204h239.999v.204zm0-4.068v-.2h239.999v.2zm0-4.058v-.205h239.999v.204zm0-4.066v-.205h239.999v.205zm0-4.066v-.205h239.999v.205zm0-4.061v-.205h239.999v.205zm0-4.066v-.205h239.999v.205zm0-4.067v-.205h239.999v.205zm0-4.06v-.205h239.999v.205zm0-4.066v-.205h239.999v.205zm0-4.067v-.205h239.999v.205zm0-4.06V126h239.999v.205zm0-4.067v-.205h239.999v.205zm0-4.069v-.2h239.999v.2zm0-4.06v-.201h239.999v.2zm0-4.067v-.2h239.999v.2zm0-4.066v-.2h239.999v.2zm0-4.058v-.205h239.999v.205zm0-4.069v-.2h239.999v.2zm0-4.066v-.2h239.999v.2zm0-4.066v-.201h239.999v.2zm0-4.058v-.204h239.999v.204zm0-4.07v-.2h239.999v.2zm0-4.063v-.2h239.999v.2zm0-4.06v-.204h239.999v.204ZM0 69.3v-.204h239.999v.204zm0-4.067v-.203h239.999v.203zm0-4.06v-.204h239.999v.204zm0-4.067v-.203h239.999v.203zm0-4.066v-.204h239.999v.204zm0-4.06v-.204h239.999v.204zm0-4.067v-.203h239.999v.203zm0-4.066v-.204h239.999v.204zm0-4.06v-.204h239.999v.203zm0-4.066v-.205h239.999v.205zm0-4.066v-.205h239.999v.205zm0-4.06v-.205h239.999v.205zm0-4.067v-.205h239.999v.205zm0-4.06!
 6v-.205h239.999v.205zm0-4.06v-.206h239.999v.205zm0-4.067V8.13h239.999v.205zM0 4.27v-.205h239.999v.205zM0 .21V.003h239.999V.21z"/><path style="fill:#a6a6a6;fill-opacity:.2;stroke-width:1.43381" d="M0 179.035V0h.2v179.033zm4.065 0V0h.2v179.033zm4.06 0V0h.2v179.033zm4.065 0V0h.202v179.033zm4.066 0V0h.202v179.033zm4.06 0V0h.203v179.033zm4.067 0V0h.202v179.033zm4.066 0V0h.203v179.033zm4.061 0V0h.202v179.033zm4.066 0V0h.201v179.033zm4.067 0V0h.205v179.033zm4.06 0V0h.2v179.033zm4.066 0V0h.205v179.033zm4.067 0V0h.205v179.033zm4.06 0V0h.205v179.033zm4.067 0V0h.205v179.033zm4.066 0V0h.2v179.033zm4.06 0V0h.208v179.033h-.2Zm4.067 0V0h.2v179.033zm4.066 0V0h.2v179.033zm4.06 0V0h.201v179.033zm4.067 0V0h.2v179.033zm4.066 0V0h.2v179.033zm4.066 0V0h.201v179.033zm4.061 0V0h.2v179.033zm4.066 0V0h.201v179.033zm4.067 0V0h.2v179.033zm4.06 0V0h.204v179.033zm4.066 0V0h.201v179.033zm4.067 0V0h.2v179.033zm4.06 0V0h.201v179.033zm4.067 0V0h.203v179.033zm4.066 0V0h.2v179.033zm4.06 0V0h.201v179.033zm4.067 0V0h.2v179.033zm4.065 0V0h.202v179.033zm4.057 0V0h.205v179.033zm4.07 0V0h.202v179.033zm4.066 0V0h.202v179.033zm4.06 0V0h.203v179.033zm4.064 0V0h.205v179.033zm4.069 0V0h.205v179.033zm4.06 0V0h.201v179.033zm4.067 0V0h.205v179.033zm4.063 0V0h.205v179.033zm4.064 0V0h.205v179.033zm4.066 0V0h.205v179.033zm4.066 0V0h.201v179.033zm4.06 0V0h.202v179.033zm4.067 0V0h.205v179.033zm4.066 0V0h.201v179.033zm4.061 0V0h.2v179.033zm4.066 0V0h.201v179.033zm4.067 0V0h.2v179.033zm4.06 0V0h.2v179.033zm4.066 0V0h.201v179.033zm4.067 0V0h.2v179.033zm4.06 0V0h.208v179.033h-.2zm4.067 0V0h.2v179.033zm4.066 0V0h.2v179.033z"/><path style="fill:#000;stroke-width:1.43381" d="M7.94.004v4.163h.57V.004zm223.546 0v4.163h.572V.004ZM0 7.946v.57h4.164v-.568H0Zm235.833 0v.57H240v-.568h-4.167zM0 170.525v.57h4.164v-.572H0Zm235.833 0v.57H240v-.572h-4.168zm-227.896 4.35v4.164h.571v-4.164zm223.546 0v4.164h.572v-4.164h-.57z"/><path style="fill:#a6a6a6;fill-opacity:.2;stroke-width:1.43381" d="M0 170.91v-.203h239.999v.204zm0-20.318v-.205h239.999v.205zm0-20.326v-.205h239.999v.205zm0-20.323!
 v-.2h239..999v.2zm0-20.325v-.201h239.999v.2zM0 69.3v-.204h239.999v.204zm0-20.32v-.204h239.999v.204zm0-20.325v-.205h239.999v.205zm0-20.32V8.13h239.999v.205z"/><path style="fill:#a6a6a6;fill-opacity:.2;stroke-width:1.43381" d="M8.125 179.035V0h.2v179.033zm20.324 0V0h.203v179.033zm20.32 0V0h.205v179.033zm20.32 0V0h.208v179.033h-.2Zm20.326 0V0h.2v179.033zm20.32 0V0h.204v179.033zm20.326 0V0h.2v179.033zm20.318 0V0h.203v179.033zm20.32 0V0h.201v179.033zm20.326 0V0h.201v179.033zm20.32 0V0h.201v179.033zm20.32 0V0h.208v179.033h-.2z"/><use xlink:href="#a" x="19.654" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#b" x="23.431" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#c" x="27.208" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#d" x="30.984" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#e" x="38.644" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#f" x="42.421" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#g" x="46.198" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#e" x="49.981" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#h" x="57.635" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#c" x="61.412" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/!
 ><use xlink:href="#i" x="65.195" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#i" x="68.971" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#d" x="72.748" y="38.799" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#e" x="19.842" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#b" x="23.619" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#f" x="27.396" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#h" x="34.018" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#c" x="37.794" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#j" x="41.571" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#d" x="45.348" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#e" x="49.131" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#k" x="55.747" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#i" x="59.524" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#l" x="63.3" y="47.366" width="100%" height="100%" st!
 yle="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#m" x="67.083" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#f" x="70.86" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#n" x="74.637" y="47.366" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#b" x="19.842" y="55.934" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#o" x="23.619" y="55.934" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#i" x="27.396" y="55.934" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#p" x="31.172" y="55.934" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#f" x="34.956" y="55.934" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#j" x="38.732" y="55.934" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><use xlink:href="#q" x="42.509" y="55.934" width="100%" height="100%" style="fill:#000;fill-opacity:1" transform="translate(.102 .102) scale(1.43381)"/><path style="fill:#b3e6fa;fill-opacity:.3;fill-rule:nonzero;stroke:#66ccf5;stroke-width:.28346;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:.3" d="M.002.002v56.691h56.691V.002Zm0 0" transform="matrix(1.43381 0 0 -1.43381 130.162 130.156)"/><use xlink:href="#r" x="110.523" y="72.878" width="100%" height="100%" style="fill:#66ccf5;fill-opacity:.3" transform="translate(.102 .102) scale(1.43381)"/></svg>
\ No newline at end of file
+<svg width="320" height="239" viewBox="0 0 167.24 124.72" version="1.2" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><defs><symbol overflow="visible" id="b"><path style="stroke:none" d="M.14-4.563h3.485v.532H2.187V0h-.609v-4.031H.141Zm0 0"/></symbol><symbol overflow="visible" id="c"><path style="stroke:none" d="M3.203-2.125V0h-.562v-2.125c0-.3-.059-.523-.172-.672-.106-.144-.274-.219-.5-.219-.262 0-.465.094-.61.282-.136.187-.203.453-.203.796V0H.594v-4.75h.562v1.844a1.03 1.03 0 0 1 .407-.438c.164-.101.367-.156.609-.156.344 0 .598.117.765.344.176.23.266.574.266 1.031Zm0 0"/></symbol><symbol overflow="visible" id="d"><path style="stroke:none" d="M.969-3.406h1.437v2.969h1.11V0H.719v-.438h1.125v-2.53H.969Zm.875-1.328h.562v.703h-.562Zm0 0"/></symbol><symbol overflow="visible" id="e"><path style="stroke:none" d="M2.969-3.297v.547a1.853 1.853 0 0 0-.485-.203 1.731 1.731 0 0 0-.5-.078c-.25 0-.437.043-.562.125a.427.427 0 0 0-.188.375c0 .156.047.273.141.344.094.074.32.148.688.218l.234.047c.281.055.488.156.625.313.144.156.219.367.219.625 0 .336-.121.601-.36.796-.242.188-.574.282-1 .282-.168 0-.343-.024-.531-.063a3.437 3.437 0 0 1-.594-.156v-.578c.207.105.406.187.594.25.188.055.367.078.547.078.25 0 .441-.05.578-.156a.505.505 0 0 0 .203-.422c0-.258-.25-.442-.75-.547h-.031l-.203-.047c-.324-.062-.563-.164-.719-.312-.148-.157-.219-.36-.219-.61 0-.332.11-.586.328-.765.227-.176.547-.266.954-.266.187 0 .363.016.53.047.165.031.333.086.5.156Zm0 0"/></symbol><symbol overflow="visible" id="f"><path style="stroke:none" d="M1.875-4.39v.968h1.281v.438H1.875v1.859c0 .25.047.43.14.531.094.094.258.14.5.14h.641V0H2.47c-.43 0-.73-.082-.906-.25-.168-.164-.25-.457-.25-.875v-1.86H.405v-.437h.906v-.969Zm0 0"/></symbol><symbol overflow="visible" id="g"><path style="stroke:none" d="M3.422-1.984v.265H.984v.016c-.011.469.079.808.266 1.016.195.199.473.296.828.296.176 0 .363-.023.563-.078.195-.062.406-.148.625-.265v.562a3.72 3.72 0 0 1-.625.188c-.2.05-.391.078-.579.078-.53 0-.949-.157-1.25-.469C.52-.695.376-1.141!
 .376-1.703c0-.55.145-.988.438-1.313.289-.32.68-.484 1.171-.484.438 0 .782.152 1.032.453.25.293.382.649.406 1.063Zm-.563-.172a1.14 1.14 0 0 0-.265-.61c-.149-.175-.356-.265-.625-.265a.879.879 0 0 0-.672.281.943.943 0 0 0-.297.594Zm0 0"/></symbol><symbol overflow="visible" id="h"><path style="stroke:none" d="m3.406-3.422-1.219 1.64L3.532 0h-.656l-1-1.375L.875 0h-.64l1.343-1.781-1.234-1.64h.625l.906 1.233.906-1.234Zm0 0"/></symbol><symbol overflow="visible" id="i"><path style="stroke:none" d="M3.25-4.75v.469h-.64c-.212 0-.356.043-.438.125-.074.086-.11.23-.11.437v.297H3.25v.438H2.062V0H1.5v-2.984H.594v-.438H1.5v-.234c0-.375.082-.649.25-.828.176-.176.445-.266.813-.266Zm0 0"/></symbol><symbol overflow="visible" id="j"><path style="stroke:none" d="M2.188-1.234c0 .25.046.445.14.578.094.125.235.187.422.187h.656V0h-.719c-.335 0-.593-.102-.78-.313-.188-.218-.282-.523-.282-.921v-3.094h-.89v-.438h1.453Zm0 0"/></symbol><symbol overflow="visible" id="k"><path style="stroke:none" d="M3.531-2.719a1.364 1.364 0 0 0-.375-.203 1.361 1.361 0 0 0-.406-.062c-.355 0-.625.109-.813.328-.18.219-.265.539-.265.953V0h-.563v-3.422h.563v.672c.094-.238.234-.422.422-.547.195-.133.43-.203.703-.203.133 0 .258.023.375.063.125.03.242.085.36.156Zm0 0"/></symbol><symbol overflow="visible" id="l"><path style="stroke:none" d="M1.14-.438v1.735H.579v-4.719h.563v.438a.961.961 0 0 1 .375-.375c.156-.094.336-.141.546-.141.407 0 .723.164.954.484.238.313.359.758.359 1.329 0 .554-.121.992-.36 1.312-.23.313-.546.469-.953.469-.21 0-.39-.043-.546-.125a.996.996 0 0 1-.375-.406Zm1.657-1.265c0-.438-.074-.766-.219-.984a.67.67 0 0 0-.61-.344.7.7 0 0 0-.624.344c-.137.218-.203.546-.203.984 0 .43.066.758.203.984a.702.702 0 0 0 .625.328c.27 0 .472-.109.61-.328.144-.219.218-.547.218-.984Zm0 0"/></symbol><symbol overflow="visible" id="m"><path style="stroke:none" d="M2.14-1.719h-.187c-.324 0-.57.059-.734.172-.168.117-.25.29-.25.516 0 .21.062.37.187.484.125.117.297.172.516.172.312 0 .555-.11.734-.328.176-.219.266-.516.266-.89v-.126Zm1.094-.234V0h-.562v-.5c-.125.2-.281.352-.469.!
 453-.18.094-.398.14-.656.14-.344 0-.621-.097-.828-.296C.508-.398.406-.664.406-1c0-.375.125-.66.375-.86.258-.195.633-.296 1.125-.296h.766v-.094c0-.27-.074-.469-.219-.594-.137-.125-.351-.187-.64-.187-.2 0-.399.031-.594.094a2.867 2.867 0 0 0-.563.234v-.563a6.11 6.11 0 0 1 .594-.171c.188-.04.375-.063.563-.063.28 0 .519.043.718.125.196.086.36.21.485.375a.92.92 0 0 1 .171.375c.032.148.047.371.047.672Zm0 0"/></symbol><symbol overflow="visible" id="n"><path style="stroke:none" d="M3.234-.172a1.732 1.732 0 0 1-.468.188c-.157.05-.32.078-.485.078-.531 0-.949-.157-1.25-.469-.293-.32-.437-.766-.437-1.328 0-.563.144-1 .437-1.313.301-.32.719-.484 1.25-.484.164 0 .328.023.485.063.156.042.312.109.468.203v.578a1.665 1.665 0 0 0-.453-.281 1.268 1.268 0 0 0-.5-.094c-.355 0-.625.117-.812.344-.188.23-.282.558-.282.984 0 .418.094.742.282.969.195.23.468.343.812.343.196 0 .375-.023.531-.078.157-.062.297-.156.422-.281Zm0 0"/></symbol><symbol overflow="visible" id="o"><path style="stroke:none" d="M.313-2.203h3.234v.515H.312Zm0 0"/></symbol><symbol overflow="visible" id="p"><path style="stroke:none" d="M1.875-3.031a.716.716 0 0 0-.64.344c-.15.218-.22.546-.22.984 0 .43.07.758.22.984.144.219.359.328.64.328.29 0 .508-.109.656-.328.145-.226.219-.554.219-.984 0-.438-.074-.766-.219-.984a.738.738 0 0 0-.656-.344Zm0-.469c.477 0 .844.156 1.094.469.25.304.375.746.375 1.328 0 .586-.125 1.031-.375 1.344-.25.304-.617.453-1.094.453-.469 0-.828-.149-1.078-.453-.25-.313-.375-.758-.375-1.344 0-.582.125-1.024.375-1.328.25-.313.61-.469 1.078-.469Zm0 0"/></symbol><symbol overflow="visible" id="q"><path style="stroke:none" d="M2.625-2.984V-4.75h.563V0h-.563v-.438a.996.996 0 0 1-.375.407c-.156.082-.34.125-.547.125-.406 0-.73-.16-.969-.485C.492-.71.375-1.156.375-1.719c0-.55.117-.984.36-1.297a1.15 1.15 0 0 1 .968-.484 1.046 1.046 0 0 1 .922.516ZM.969-1.704c0 .438.066.766.203.985.133.219.336.328.61.328.269 0 .476-.109.624-.328.145-.226.219-.554.219-.984 0-.438-.074-.766-.219-.984a.708.708 0 0 0-.625-.344.662.662 0 0 0-.61.344c-.136.218-.202.546-.202.984Zm0 0"/></s!
 ymbol><symbol overflow="visible" id="r"><path style="stroke:none" d="M1.188-1.234h1.078V0H1.187Zm0 0"/></symbol><symbol overflow="visible" id="s"><path style="stroke:none" d="M5.984-3.578h8.672V0H1.578v-3.469l2.219-2.344C6.41-8.601 8-10.316 8.562-10.953c.688-.79 1.18-1.492 1.485-2.11.3-.613.453-1.218.453-1.812 0-.914-.277-1.625-.828-2.125-.555-.5-1.34-.75-2.36-.75-.73 0-1.546.148-2.453.438-.906.28-1.851.699-2.828 1.25v-3.797a20.224 20.224 0 0 1 2.875-.813 13.977 13.977 0 0 1 2.719-.281c2.176 0 3.883.512 5.125 1.531 1.25 1.012 1.875 2.39 1.875 4.14 0 .813-.137 1.575-.406 2.282-.274.71-.735 1.496-1.39 2.36-.493.624-1.829 2.03-4.017 4.218a517.956 517.956 0 0 0-2.828 2.844Zm0 0"/></symbol><clipPath id="a"><path d="M0 0h167.238v124.719H0Zm0 0"/></clipPath><clipPath id="t"><path d="M5 121h1v3.719H5Zm0 0"/></clipPath><clipPath id="u"><path d="M164 118h3.238v2H164Zm0 0"/></clipPath><clipPath id="v"><path d="M161 121h1v3.719h-1Zm0 0"/></clipPath><clipPath id="w"><path d="M164 5h3.238v1H164Zm0 0"/></clipPath></defs><g clip-path="url(#a)"><path style="fill:none;stroke-width:.14172;stroke-linecap:square;stroke-linejoin:miter;stroke:#a6a6a6;stroke-opacity:.2;stroke-miterlimit:10" d="M0 .001h175.75M0 2.833h175.75M0 5.67h175.75M0 8.505h175.75M0 11.337h175.75M0 14.173h175.75M0 17.01h175.75M0 19.841h175.75M0 22.677h175.75M0 25.513h175.75M0 28.345h175.75M0 31.181h175.75M0 34.017h175.75M0 36.849h175.75M0 39.685h175.75M0 42.52h175.75M0 45.353h175.75M0 48.189h175.75M0 51.025h175.75M0 53.857h175.75M0 56.693h175.75M0 59.529h175.75M0 62.36h175.75M0 65.197h175.75M0 68.033h175.75M0 70.869h175.75M0 73.7h175.75M0 76.537h175.75M0 79.371h175.75M0 82.204h175.75M0 85.04h175.75M0 87.876h175.75M0 90.708h175.75M0 93.544h175.75M0 96.38h175.75M0 99.212h175.75M0 102.048h175.75M0 104.884h175.75M0 107.716h175.75M0 110.552h175.75M0 113.388h175.75M0 116.22h175.75M0 119.056h175.75M0 121.892h175.75M0 124.724h175.75M0 127.56h175.75M0 130.396h175.75M0 133.228h175.75M0 0v133.23M2.836.002v133.23M5.668.002v133.23M8.504.002v133.23M11.34.002v133.23M14.172.002v13!
 3.23M17.008.002v133.23M19.844.002v133.23M22.676.002v133.23M25.512.002v133.23M28.348.002v133.23M31.18.002v133.23M34.016.002v133.23M36.852.002v133.23M39.684.002v133.23M42.52.002v133.23M45.356.002v133.23M48.188.002v133.23M51.024.002v133.23M53.859.002v133.23M56.691.002v133.23M59.527.002v133.23M62.363.002v133.23M65.195.002v133.23M68.031.002v133.23M70.867.002v133.23M73.703.002v133.23M76.535.002v133.23M79.371.002v133.23M82.207.002v133.23M85.04.002v133.23M87.875.002v133.23M90.711.002v133.23M93.543.002v133.23M96.38.002v133.23M99.215.002v133.23M102.047.002v133.23M104.883.002v133.23M107.719.002v133.23M110.55.002v133.23M113.387.002v133.23M116.223.002v133.23M119.055.002v133.23M121.89.002v133.23M124.727.002v133.23M127.559.002v133.23M130.395.002v133.23M133.23.002v133.23M136.063.002v133.23M138.899.002v133.23M141.734.002v133.23M144.566.002v133.23M147.403.002v133.23M150.238.002v133.23M153.07.002v133.23M155.906.002v133.23M158.742.002v133.23M161.574.002v133.23M164.41.002v133.23M167.246.002v133.23M170.078.002v133.23M172.914.002v133.23M175.75.002v133.23M0 .001h175.75M0 14.173h175.75M0 28.345h175.75M0 42.521h175.75M0 56.693h175.75M0 70.869h175.75M0 85.04h175.75M0 99.212h175.75M0 113.388h175.75M0 127.56h175.75M0 0v133.23M14.172.002v133.23M28.348.002v133.23M42.52.002v133.23M56.695.002v133.23M70.867.002v133.23M85.04.002v133.23M99.215.002v133.23M113.387.002v133.23M127.559.002v133.23M141.734.002v133.23M155.906.002v133.23M170.082.002v133.23" transform="matrix(1 0 0 -1 -8.504 133.224)"/></g><use xlink:href="#b" x="19.654" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#c" x="23.431" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#d" x="27.208" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#e" x="30.984" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#f" x="38.644" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#g" x="42.421" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#h" x="46.198" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#f" x!
 ="49.981" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#i" x="57.635" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#d" x="61.412" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#j" x="65.195" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#j" x="68.971" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#e" x="72.748" y="24.625" style="fill:#000;fill-opacity:1"/><use xlink:href="#f" x="19.842" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#c" x="23.619" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#g" x="27.396" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#i" x="34.018" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#d" x="37.794" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#k" x="41.571" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#e" x="45.348" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#f" x="49.131" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#l" x="55.747" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#j" x="59.524" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#m" x="63.3" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#n" x="67.083" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#g" x="70.86" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#o" x="74.637" y="33.193" style="fill:#000;fill-opacity:1"/><use xlink:href="#c" x="19.842" y="41.761" style="fill:#000;fill-opacity:1"/><use xlink:href="#p" x="23.619" y="41.761" style="fill:#000;fill-opacity:1"/><use xlink:href="#j" x="27.396" y="41.761" style="fill:#000;fill-opacity:1"/><use xlink:href="#q" x="31.172" y="41.761" style="fill:#000;fill-opacity:1"/><use xlink:href="#g" x="34.956" y="41.761" style="fill:#000;fill-opacity:1"/><use xlink:href="#k" x="38.732" y="41.761" style="fill:#000;fill-opacity:1"/><use xlink:href="#r" x="42.509" y="41.761" style="fill:#000;fill-opaci!
 ty:1"/><path style="fill-rule:nonzero;fill:#b3e6fa;fill-opacity:.3;stroke-width:.28346;stroke-linecap:butt;stroke-linejoin:miter;stroke:#66cef5;stroke-opacity:.3;stroke-miterlimit:10" d="M.002 0v85.042h56.691V0Zm0 0" transform="matrix(1 0 0 -1 90.709 104.878)"/><use xlink:href="#s" x="110.523" y="72.877" style="fill:#66cef5;fill-opacity:.3"/><path style="fill:none;stroke-width:.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:#000;stroke-opacity:1;stroke-miterlimit:10" d="M-2.836 5.67h5.672" transform="matrix(1 0 0 -1 0 124.72)"/><g clip-path="url(#t)"><path style="fill:none;stroke-width:.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:#000;stroke-opacity:1;stroke-miterlimit:10" d="M5.668-2.835v5.668" transform="matrix(1 0 0 -1 0 124.72)"/></g><path style="fill:none;stroke-width:.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:#000;stroke-opacity:1;stroke-miterlimit:10" d="M-2.836 119.056h5.672M5.668 127.56v-5.668" transform="matrix(1 0 0 -1 0 124.72)"/><g clip-path="url(#u)"><path style="fill:none;stroke-width:.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:#000;stroke-opacity:1;stroke-miterlimit:10" d="M170.082 5.67h-5.672" transform="matrix(1 0 0 -1 0 124.72)"/></g><g clip-path="url(#v)"><path style="fill:none;stroke-width:.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:#000;stroke-opacity:1;stroke-miterlimit:10" d="M161.578-2.835v5.668" transform="matrix(1 0 0 -1 0 124.72)"/></g><g clip-path="url(#w)"><path style="fill:none;stroke-width:.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:#000;stroke-opacity:1;stroke-miterlimit:10" d="M170.082 119.056h-5.672" transform="matrix(1 0 0 -1 0 124.72)"/></g><path style="fill:none;stroke-width:.3985;stroke-linecap:butt;stroke-linejoin:miter;stroke:#000;stroke-opacity:1;stroke-miterlimit:10" d="M161.578 127.56v-5.668" transform="matrix(1 0 0 -1 0 124.72)"/></svg>
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart.tex	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/doc/latex/pagelayout/quickstart.tex	2023-12-21 21:06:09 UTC (rev 69188)
@@ -28,7 +28,7 @@
   \fontsize{6.3pt}{8.6pt}\selectfont
 
   % generic template
-  \template{ss}{
+  \template{ff}{
     \text{
       This text fills the first placeholder.
     }

Modified: trunk/Master/texmf-dist/doc/latex/pagelayout/tests.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/pagelayoutapi.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/pagelayoutapi.1	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/doc/man/man1/pagelayoutapi.1	2023-12-21 21:06:09 UTC (rev 69188)
@@ -1,7 +1,7 @@
 .\" generated with Ronn/v0.7.3
 .\" http://github.com/rtomayko/ronn/tree/0.7.3
 .
-.TH "PAGELAYOUTAPI" "1" "January 2023" "" ""
+.TH "PAGELAYOUTAPI" "1" "December 2023" "" ""
 .
 .SH "NAME"
 \fBpagelayoutapi\fR \- API for the pagelayout LaTeX class
@@ -10,6 +10,9 @@
 \fBpagelayoutapi getwidth\fR % FILE
 .
 .P
+\fBpagelayoutapi getheight\fR % FILE
+.
+.P
 \fBpagelayoutapi optimize\fR % FILE % FILENAME % EXTENSION % ORIGINALWIDTH % ORIGINALHEIGHT % CROPLEFT % CROPRIGHT % CROPTOP % CROPBOTTOM % DENSITY % WIDTH % HEIGHT % DOWNSAMPLETHRESHOLD % UNSHARP % QUALITY
 .
 .P
@@ -29,6 +32,10 @@
 Returns the width in pixels for the given image file\.
 .
 .TP
+\fBpagelayoutapi getheight\fR
+Returns the height in pixels for the given image file\.
+.
+.TP
 \fBpagelayoutapi optimize\fR
 Creates a cropped, rezised, sharpend and compressed image and stores it in the cache directory\.
 .
@@ -122,4 +129,4 @@
 \fBpagelayoutapi\fR was written by Friedemann Bartels\. \fIhttps://github\.com/friedemannbartels\fR
 .
 .SH "LICENSE"
-Copyright (c) 2022-2023 Friedemann Bartels\. Free use of this software is granted under the terms of the LaTeX Project Public License version 1\.3c or later\.
+Copyright (c) 2022\-2023 Friedemann Bartels\. Free use of this software is granted under the terms of the LaTeX Project Public License version 1\.3c or later\.

Modified: trunk/Master/texmf-dist/doc/man/man1/pagelayoutapi.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/man/man1/textestvis.1
===================================================================
--- trunk/Master/texmf-dist/doc/man/man1/textestvis.1	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/doc/man/man1/textestvis.1	2023-12-21 21:06:09 UTC (rev 69188)
@@ -1,7 +1,7 @@
 .\" generated with Ronn/v0.7.3
 .\" http://github.com/rtomayko/ronn/tree/0.7.3
 .
-.TH "TEXTESTVIS" "1" "January 2023" "" ""
+.TH "TEXTESTVIS" "1" "December 2023" "" ""
 .
 .SH "NAME"
 \fBtextestvis\fR \- visual regression tests for LaTeX
@@ -70,4 +70,4 @@
 \fBtextestvis\fR was written by Friedemann Bartels\. \fIhttps://github\.com/friedemannbartels\fR
 .
 .SH "LICENSE"
-Copyright (c) 2022-2023 Friedemann Bartels\. Free use of this software is granted under the terms of the LaTeX Project Public License version 1\.3c or later\.
+Copyright (c) 2022\-2023 Friedemann Bartels\. Free use of this software is granted under the terms of the LaTeX Project Public License version 1\.3c or later\.

Modified: trunk/Master/texmf-dist/doc/man/man1/textestvis.man1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi
===================================================================
--- trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi	2023-12-21 21:06:09 UTC (rev 69188)
@@ -13,7 +13,7 @@
 # LaTeX version 2008/05/04 or later.
 #
 
-version=1.0.4
+version=1.0.5
 
 _convert() {
   turbo=$1
@@ -100,6 +100,17 @@
   fi
 }
 
+getheight() {
+  if command -v magick >/dev/null 2>&1; then
+    filename=$1
+
+    originalheight=$( magick identify -ping -format %h "$filename" )
+    echo $originalheight
+  else
+    echo errormagicknotinstalled
+  fi
+}
+
 optimize() {
   if command -v magick >/dev/null 2>&1; then
     filenamecache=$2
@@ -299,6 +310,7 @@
 usage() {
   cat <<HELP_USAGE
 usage: pagelayoutapi getwidth % FILE
+       pagelayoutapi getheight % FILE
        pagelayoutapi optimize % FILE % FILENAME % EXTENSION % ORIGINALWIDTH
          % ORIGINALHEIGHT % CROPLEFT % CROPRIGHT % CROPTOP % CROPBOTTOM
          % DENSITY % WIDTH % HEIGHT % DOWNSAMPLETHRESHOLD % UNSHARP % QUALITY
@@ -327,6 +339,11 @@
 
   getwidth "$1"
   ;;
+getheight)
+  shift
+
+  getheight "$1"
+  ;;
 optimize)
   shift
 

Modified: trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi.1.md
===================================================================
--- trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi.1.md	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/scripts/pagelayout/pagelayoutapi.1.md	2023-12-21 21:06:09 UTC (rev 69188)
@@ -5,6 +5,8 @@
 
 `pagelayoutapi getwidth` % FILE
 
+`pagelayoutapi getheight` % FILE
+
 `pagelayoutapi optimize` % FILE % FILENAME % EXTENSION % ORIGINALWIDTH % ORIGINALHEIGHT % CROPLEFT % CROPRIGHT % CROPTOP % CROPBOTTOM % DENSITY % WIDTH % HEIGHT % DOWNSAMPLETHRESHOLD % UNSHARP % QUALITY
 
 `pagelayoutapi makeshadow` % FILENAME % STANDARDDEVIATION % OPACITY % COLOR % WIDTH % HEIGHT % FRAMEWIDTH % FRAMEHEIGHT % MARGIN % BORDERRADIUS
@@ -20,6 +22,9 @@
 * `pagelayoutapi getwidth`:
     Returns the width in pixels for the given image file.
 
+* `pagelayoutapi getheight`:
+    Returns the height in pixels for the given image file.
+
 * `pagelayoutapi optimize`:
     Creates a cropped, rezised, sharpend and compressed image and stores it in the cache directory.
 

Modified: trunk/Master/texmf-dist/scripts/pagelayout/textestvis
===================================================================
--- trunk/Master/texmf-dist/scripts/pagelayout/textestvis	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/scripts/pagelayout/textestvis	2023-12-21 21:06:09 UTC (rev 69188)
@@ -13,7 +13,7 @@
 # LaTeX version 2008/05/04 or later.
 #
 
-version=1.0.4
+version=1.0.5
 
 OK="$( tput setaf 2 )•$( tput sgr0 )"
 FAILED="$( tput setaf 1 )$( tput bold )x$( tput sgr0 )"

Modified: trunk/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls	2023-12-21 21:05:56 UTC (rev 69187)
+++ trunk/Master/texmf-dist/tex/latex/pagelayout/pagelayout.cls	2023-12-21 21:06:09 UTC (rev 69188)
@@ -13,8 +13,8 @@
 %%
 
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesClass{pagelayout}[2023/03/05 Layout graphic rich documents]
-\def\pagelayoutversion{1.0.4}
+\ProvidesClass{pagelayout}[2023/12/21 Layout graphic rich documents]
+\def\pagelayoutversion{1.0.5}
 
 % packages
 \RequirePackage{pgfopts}
@@ -2825,6 +2825,7 @@
     \fi
   \fi
 }
+\newcommand\xpage[2][]{}
 \newcommand\pal at standardpage[2][]{
   \global\pal at placeholdercounter=0\relax
   \ifpal at backcover
@@ -3160,6 +3161,8 @@
 \newif\ifpal at placeholderoptions
 \newif\ifpal at placeholdermode
 \newif\ifpal at isplace
+\newif\ifpal at template
+\newif\ifpal at currentplaceholder
 \pal at placeholderoptionstrue
 \newcount\pal at placeholdercounter
 \newcount\pal at contentcounter
@@ -3218,7 +3221,7 @@
   \else
     \global\pal at isplacetrue
   \fi
-  \def\pal at currentplaceholder{}
+  \def\pal at currentplaceholdercontent{}
   \ifnum#1=0
     \global\advance \pal at placeholdercounter by 1
   \else
@@ -3228,9 +3231,22 @@
   \def\pal at tmp{\pal at currentcontents}
   \pal at placeholdermode{1}
   \pal at tmp
+  \pal at templatetrue
   \pal at placeholdermode{0}
   \pal at putcontent{
-    \ifx\pal at emptystring\pal at currentplaceholder
+    \ifpal at currentplaceholder
+      \ifx#2\pal at emptystring
+      \else
+        \pal at setgridframe #2 \\
+      \fi
+      \ifx\pal at currentplaceholderoptions\pal at emptystring
+        \pal at placeholderoptionsfalse
+        \csname \pal at currentplaceholdertype\endcsname{\pal at currentplaceholdercontent}
+        \pal at placeholderoptionstrue
+      \else
+        \csname \pal at currentplaceholdertype\endcsname[\pal at currentplaceholderoptions]{\pal at currentplaceholdercontent}
+      \fi
+    \else
       \ifpal at placeholder
         \ifx#2\pal at emptystring
         \else
@@ -3273,20 +3289,9 @@
           \fi
         \fi
       \fi
-    \else
-      \ifx#2\pal at emptystring
-      \else
-        \pal at setgridframe #2 \\
-      \fi
-      \ifx\pal at currentplaceholderoptions\pal at emptystring
-        \pal at placeholderoptionsfalse
-        \csname \pal at currentplaceholdertype\endcsname{\pal at currentplaceholder}
-        \pal at placeholderoptionstrue
-      \else
-        \csname \pal at currentplaceholdertype\endcsname[\pal at currentplaceholderoptions]{\pal at currentplaceholder}
-      \fi
     \fi
   }
+  \pal at templatefalse
   \endgroup
 }
 \newcommand\pal at graphic[2][]{
@@ -3299,7 +3304,8 @@
       \csname pal at graphic@#2\endcsname[2]{#1}%
     \fi
 
-    \edef\pal at currentplaceholder{\pal at graphicoptionfile}
+    \edef\pal at currentplaceholdercontent{\pal at graphicoptionfile}
+    \pal at currentplaceholdertrue
   \fi
 }
 \newcommand\pal at xput[1]{
@@ -3307,7 +3313,8 @@
   \ifnum\pal at contentcounter=\pal at placeholdercounter
     \def\pal at currentplaceholdertype{xput}
     \def\pal at currentplaceholderoptions{}
-    \def\pal at currentplaceholder{#1}
+    \def\pal at currentplaceholdercontent{#1}
+    \pal at currentplaceholdertrue
   \fi
 }
 \newcommand\pal at tikz[1]{
@@ -3315,7 +3322,8 @@
   \ifnum\pal at contentcounter=\pal at placeholdercounter
     \def\pal at currentplaceholdertype{tikzgraphic}
     \def\pal at currentplaceholderoptions{}
-    \def\pal at currentplaceholder{#1}
+    \def\pal at currentplaceholdercontent{#1}
+    \pal at currentplaceholdertrue
   \fi
 }
 \newcommand\pal at text[2][]{
@@ -3328,7 +3336,8 @@
     \edef\pal at currentbordercolor{\pal at defaultbordercolor}
     \edef\pal at currentborderopacity{\pal at defaultborderopacity}
     \pgfkeys{text,name=default,color=\ifx\pal at pageoptioncolor\pal at emptystring\paloptions at color\else\pal at pageoptioncolor\fi,border radius=\pal at currentborderradius,border width=\pal at currentborderwidth,border color=\pal at currentbordercolor,border opacity=\pal at currentborderopacity,#1}
-    \def\pal at currentplaceholder{#2}
+    \def\pal at currentplaceholdercontent{#2}
+    \pal at currentplaceholdertrue
   \fi
 }
 \def\pal at placeholdertypeusetext{usetext}
@@ -3337,7 +3346,8 @@
   \ifnum\pal at contentcounter=\pal at placeholdercounter
     \edef\pal at currentplaceholdertype{\pal at placeholdertypeusetext}
     \def\pal at currentplaceholderoptions{#1}
-    \def\pal at currentplaceholder{}
+    \def\pal at currentplaceholdercontent{}
+    \pal at currentplaceholdertrue
   \fi
 }
 \newcommand\pal at rendertemplate[3]{
@@ -3363,6 +3373,7 @@
     #3
   }
 }
+\newcommand\xtemplate[3][]{}
 \newcommand\graphic{}
 \newcommand\xput{}
 \newcommand\tikzgraphic{}
@@ -3390,7 +3401,9 @@
           \ifcsname pal at graphic@##2\endcsname%
             \csname pal at graphic@##2\endcsname[2]{##1}
           \else
-            \pgfkeys{graphic,file={##2},scale=1,vpos=0.5,hpos=0.5,unsharp=\pal at unsharp,##1}
+            \ifpal at template\else
+              \pgfkeys{graphic,file={##2},scale=1,vpos=0.5,hpos=0.5,unsharp=\pal at unsharp,##1}
+            \fi
           \fi
         \fi
         \pal at putgraphic{\pal at framey}{\pal at framex}{\pal at frameyy}{\pal at framexx}{\pal at graphicoptionfile}%
@@ -3421,7 +3434,9 @@
         \edef\pal at currentborderwidth{\pal at defaultborderwidth}
         \edef\pal at currentbordercolor{\pal at defaultbordercolor}
         \edef\pal at currentborderopacity{\pal at defaultborderopacity}
-        \pgfkeys{text,name=default,color=\ifx\pal at pageoptioncolor\pal at emptystring\paloptions at color\else\pal at pageoptioncolor\fi,border radius=\pal at currentborderradius,border width=\pal at currentborderwidth,border color=\pal at currentbordercolor,border opacity=\pal at currentborderopacity,##1}
+        \ifpal at template\else
+          \pgfkeys{text,name=default,color=\ifx\pal at pageoptioncolor\pal at emptystring\paloptions at color\else\pal at pageoptioncolor\fi,border radius=\pal at currentborderradius,border width=\pal at currentborderwidth,border color=\pal at currentbordercolor,border opacity=\pal at currentborderopacity,##1}
+        \fi
         \pal at puttext{\pal at framey}{\pal at framex}{\pal at frameyy}{\pal at framexx}{##2}%
         \pal at resetgridframe
       }
@@ -3617,20 +3632,24 @@
 \def\pal at err@magicknotinstalled{errormagicknotinstalled}
 \def\pal at err@inkscapenotinstalled{errorinkscapenotinstalled}
 \newcommand\pal at getppi[1]{
-  \immediate\openin\pal at scriptresult={|pagelayoutapi getwidth\% "#1"}
+  \immediate\openin\pal at scriptresult={|pagelayoutapi \ifdim\pal at originalgraphicwidth<\pal at originalgraphicheight getwidth\else getheight\fi\% "#1"}
   \ifeof\pal at scriptresult
     \pal at errmsg@shellaccessforbidden{Ppi not calculated}
   \else
     \endlinechar=-1
-    \read\pal at scriptresult to \pal at graphicwidth
+    \read\pal at scriptresult to \pal at graphicsize
     \endlinechar=13
-    \ifx\pal at graphicwidth\pal at emptystring
+    \ifx\pal at graphicsize\pal at emptystring
       \pal at errmsg@shellaccessfailed{Ppi not calculated}
     \else
-      \ifx\pal at graphicwidth\pal at err@magicknotinstalled
+      \ifx\pal at graphicsize\pal at err@magicknotinstalled
         \pal at errmsg@magicknotinstalled{Ppi not calculated}
       \else
-        \pgfmathqparse{(\pal at originalgraphicwidth - \pal at cropleft - \pal at cropright) / \pal at originalgraphicwidth * \pal at graphicwidth pt / \the\width * 72.27pt}
+        \ifdim\pal at originalgraphicwidth<\pal at originalgraphicheight
+          \pgfmathqparse{(\pal at originalgraphicwidth - \pal at cropleft - \pal at cropright) / \pal at originalgraphicwidth * \pal at graphicsize pt / \the\width * 72.27pt}
+        \else
+          \pgfmathqparse{(\pal at originalgraphicheight - \pal at croptop - \pal at cropbottom) / \pal at originalgraphicheight * \pal at graphicsize pt / \the\height * 72.27pt}
+        \fi
 
         \pgfmathint{\pgfmathresult}
         \edef\pal at graphicdensity{\pgfmathresult}



More information about the tex-live-commits mailing list.