---
name: "LaTeXML::Core::KeyVal"
section: "3pm"
platform: "linux"
package: "latexml"
version: "0.8.8-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/LaTeXML::Core::KeyVal"
---

# LaTeXML::Core::KeyVal(3pm)

Key-Value Definitions in LaTeXML

## NAME

"LaTeXML::Core::KeyVal" - Key-Value Definitions in LaTeXML

## DESCRIPTION

Provides an interface to define and access KeyVal definition.   Used in conjunction with `"LaTeXML::Core::KeyVals"` to fully implement KeyVal pairs. It extends LaTeXML::Common::Object.

### Exposed Methods

- "DefKeyVal(*keyset*, *key*, *type*, *default*, *%options*); "

  Defines a new KeyVal Parameter in the given *keyset*, *key* and with optional prefix *option{prefix}*. For descriptions of further parameters, see *LaTeXML::Core::KeyVal::define*.

- "HasKeyVal(*prefix*, *keyset*, *key*); "

  Checks if the given KeyVal pair exists.

- "DisableKeyVal(*prefix*, *keyset*, *key*); "

  Disables the given KeyVal so that it can not be used.

### Constructors

- "\<LaTeXML::Core::KeyVal-"new(*preset*, *keyset*, *key*); \>\>

  Creates a new *KeyVal* object. This serves as a simple reference to the given  KeyVal object, regardless of its existence or not.

### KeyVal Key Definition

- "$keyval-\>define($type, $default, %options);"

  (Re-)defines this Key of kind 'kind'.  Defines a keyword *key* used in keyval arguments for the set *keyset* and,  and if the option *code* is given, defines appropriate macros  when used with the *keyval* package (or extensions thereof).

  If *type* is given, it defines the type of value that must be supplied, such as `'Dimension'`.  If *default* is given, that value will be used when *key* is used without an equals and explicit value in a keyvals argument.

  A *scope* option can be given, which can be used to defined the key-value pair globally instead of in the current scope.

  Several more *option*s can be given. These implement the behaviour of the xkeyval package.

  The *prefix* parameter can be used to configure a custom prefix for  the macros to be defined. The *kind* parameter can be used to configure special types of xkeyval  pairs.

  The 'ordinary' kind behaves like a normal keyval parameter.

  The 'command' kind defines a command key, that when run stores the value of the key in a special macro, which can be further specefied by the *macroprefix*  option.

  The 'choice' kind defines a choice key, which takes additional options  *choices* (to specify which choices are valid values), *mismatch* (to be run if an invalid choice is made) and *bin* (see xkeyval documentation for  details).

  The 'boolean' kind defines a special choice key that takes possible values true and false, and defines a new Conditional according to the assumed value. The name of this conditional can be specified with the *macroprefix* option.

  The kind parameter only takes effect when *code* is given, otherwise only  meta-data is stored.

- "$keyval-\>defineOrdinary($code);"

  Helper function to define `$STATE` necessary for an ordinary key.

- "$keyval-\>defineCommand($code, $macroprefix);"

  Helper function to define `$STATE` necessary for a command key.

- "$keyval-\>defineChoice($code, $mismatch, $choices, $normalize, $bin);"

  Helper function to define `$STATE` necessary for an choice key.

- "$keyval-\>defineBoolean($code, $mismatch, $macroprefix);"

  Helper function to define `$STATE` necessary for a boolean key.

## AUTHOR

Tom Wiesing \<tom.wiesing@gmail.com\>

## COPYRIGHT

Public domain software, produced as part of work done by the United States Government & not subject to copyright in the US.
