package LaTeXML::Package::Pool;
use strict;
use warnings;
use LaTeXML::Package;
RequirePackage('keyval');
#======================================================================
# Tests of various constructors using KeyVals.
#======================================================================
DefKeyVal('foo', 'path', 'Semiverbatim');
DefKeyVal('foo', 'height', '');
DefKeyVal('foo', 'width', '');
# Testing simple use of keys;
# attribute is just list of key-value pairs.
DefConstructor('\KVsimple OptionalKeyVals:foo',
"<ltx:graphics graphic='none' options='#1'/>");
# Testing more complex use of keys;
# individual attributes are obtained from specific keys.
DefConstructor('\KVcomplex OptionalKeyVals:foo',
"<ltx:graphics graphic='none' imagewidth='&GetKeyVal(#1,width)' imageheight='&GetKeyVal(#1,height)'/>");
# Testing use in an environment.
DefEnvironment('{KVenv} OptionalKeyVals:foo',
"<ltx:text width='&GetKeyVal(#1,width)' height='&GetKeyVal(#1,height)'>#body</ltx:text>");
# Testing structured use of keys; map an XML structure to the keys (eg. for amsrefs)
DefEnvironment('{KVstruct} OptionalKeyVals:foo',
"<ltx:text>"
. "?&GetKeyVal(#1,width)(<ltx:text>Width: &GetKeyVal(#1,width)</ltx:text>)"
. "<ltx:text>\\&</ltx:text>"
. "?&GetKeyVal(#1,height)(<ltx:text>Height: &GetKeyVal(#1,height)</ltx:text>)"
. "#body</ltx:text>");
# Testing automatic conversion of keys to text
DefConstructor('\KVauto RequiredKeyVals:foo', "<ltx:text>#1</ltx:text>");
#======================================================================
1;