-- $Id: fdata.lua 4106 2011-04-10 12:51:54Z hhenkel $

local fdata = {
 ["callback"]={
   ["functions"]={
     ["buildpage_filter"]={
        ["arguments"]={
           {
              ["name"]="info",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Process objects as they are added to the main vertical list. The string argument gives some context.",
        ["type"]="callback",
     },
     ["close"]={
        ["arguments"]={
           {
              ["name"]="env",
              ["optional"]=false,
              ["type"]="table",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Close a file opened with the \\afunction{open_read_file} callback. The argument is the return value from the \\afunction{open_read_file}",
        ["type"]="callback",
     },
     ["define_font"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="font",
              ["optional"]=false,
              ["type"]="metrics",
           },
        },
        ["shortdesc"]="Define a font from within lua code. The arguments are the user-supplied information, with negative numbers indicating \\type{scaled}, positive numbers \\type{at}",
        ["type"]="callback",
     },
     ["find"]={
        ["arguments"]={
           {
              ["name"]="callback_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="function",
           },
        },
        ["shortdesc"]="Returns the function currently associated with a callback, or \\type{nil}",
        ["type"]="function",
     },
     ["find_data_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find an input data file for PDF attachment.",
        ["type"]="callback",
     },
     ["find_enc_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a font encoding file.",
        ["type"]="callback",
     },
     ["find_font_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a font metrics file.",
        ["type"]="callback",
     },
     ["find_format_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find the format file.",
        ["type"]="callback",
     },
     ["find_image_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find an image file for inclusion.",
        ["type"]="callback",
     },
     ["find_map_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a font map file.",
        ["type"]="callback",
     },
     ["find_opentype_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find an OpenType font file.",
        ["type"]="callback",
     },
     ["find_output_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find the output (PDF or DVI) file.",
        ["type"]="callback",
     },
     ["find_pk_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a PK font bitmap file.",
        ["type"]="callback",
     },
     ["find_read_file"]={
        ["arguments"]={
           {
              ["name"]="id_number",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a file for \\tex{input} (0) or \\tex{openin} (higher integers).",
        ["type"]="callback",
     },
     ["find_subfont_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a subfont definition file.",
        ["type"]="callback",
     },
     ["find_truetype_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find an TrueType font file.",
        ["type"]="callback",
     },
     ["find_type1_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find an Type1 (PostScript) font file.",
        ["type"]="callback",
     },
     ["find_vf_file"]={
        ["arguments"]={
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a VF file.",
        ["type"]="callback",
     },
     ["find_write_file"]={
        ["arguments"]={
           {
              ["name"]="id_number",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="asked_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="actual_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Find a file for writing to the log file (0) or with \\tex{write} (higher integers).",
        ["type"]="callback",
     },
     ["finish_pdffile"]={
        ["arguments"]={},
        ["returnvalues"]={},
        ["shortdesc"]="Run actions just before the PDF closing takes place.",
        ["type"]="callback",
     },
     ["hpack_filter"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="groupcode",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="size",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="packtype",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="direction",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="newhead",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["shortdesc"]="Alter a node list before horizontal packing takes place. The first string gives some context,\
        the number is the desired size, the second string is either \\aliteral{exact} or \\aliteral{additional} (modifies the first string),\
        the third string is the desired direction",
        ["type"]="callback",
     },
     ["hyphenate"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="tail",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Apply hyphenation to a node list.",
        ["type"]="callback",
     },
     ["kerning"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="tail",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Apply kerning to a node list.",
        ["type"]="callback",
     },
     ["ligaturing"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="tail",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Apply ligaturing to a node list.",
        ["type"]="callback",
     },
     ["linebreak_filter"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="is_display",
              ["optional"]=false,
              ["type"]="boolean",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="newhead",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["shortdesc"]="Override the linebreaking algorithm. The boolean is \\type{true} if this is a pre-display break.",
        ["type"]="callback",
     },
     ["list"]={
        ["arguments"]={},
        ["returnvalues"]={
           {
              ["name"]="info",
              ["optional"]=false,
              ["type"]="table",
           },
        },
        ["shortdesc"]="Produce a list of all known callback names.",
        ["type"]="function",
     },
     ["mlist_to_hlist"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="displaytype",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="need_penalties",
              ["optional"]=false,
              ["type"]="boolean",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="newhead",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["shortdesc"]="Convert a math node list into a horizontal node list.",
        ["type"]="callback",
     },
     ["open_read_file"]={
        ["arguments"]={
           {
              ["name"]="file_name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="env",
              ["optional"]=false,
              ["type"]="table",
           },
        },
        ["shortdesc"]="Open a file for reading. The returned table should define key functions for  \\aliteral{reader} and \\aliteral{close}.",
        ["type"]="callback",
     },
     ["post_linebreak_filter"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="groupcode",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="newhead",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["shortdesc"]="Alter a node list afer linebreaking has taken place. The string argument gives some context.",
        ["type"]="callback",
     },
     ["pre_dump"]={
        ["arguments"]={},
        ["returnvalues"]={},
        ["shortdesc"]="Run actions just before format dumping takes place.",
        ["type"]="callback",
     },
     ["pre_linebreak_filter"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="groupcode",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="newhead",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["shortdesc"]="Alter a node list before linebreaking takes place. The string argument gives some context.",
        ["type"]="callback",
     },
     ["pre_output_filter"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="groupcode",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="size",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="packtype",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="maxdepth",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="direction",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="newhead",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["shortdesc"]="Alter a node list before boxing to \\tex{outputbox} takes place. See \\afunction{vpack_filter} for the arguments.",
        ["type"]="callback",
     },
     ["process_input_buffer"]={
        ["arguments"]={
           {
              ["name"]="buffer",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="adjusted_buffer",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Modify the encoding of the input buffer.",
        ["type"]="callback",
     },
     ["process_output_buffer"]={
        ["arguments"]={
           {
              ["name"]="buffer",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="adjusted_buffer",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Modify the encoding of the output buffer.",
        ["type"]="callback",
     },
     ["read_data_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a data file.",
        ["type"]="callback",
     },
     ["read_enc_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a font encoding file.",
        ["type"]="callback",
     },
     ["read_font_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a TFM metrics file. Return \\type{true},  the data, and the data length for success, \\type{false} otherwise",
        ["type"]="callback",
     },
     ["read_map_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a font map file.",
        ["type"]="callback",
     },
     ["read_opentype_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read an OpenType font.",
        ["type"]="callback",
     },
     ["read_pk_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a font bitmap PK file.",
        ["type"]="callback",
     },
     ["read_sfd_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a subfont definition file.",
        ["type"]="callback",
     },
     ["read_truetype_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a TrueType font.",
        ["type"]="callback",
     },
     ["read_type1_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a Type1 font.",
        ["type"]="callback",
     },
     ["read_vf_file"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="success",
              ["optional"]=false,
              ["type"]="boolean",
           },
           {
              ["name"]="data",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="data_size",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Read a VF metrics file.",
        ["type"]="callback",
     },
     ["reader"]={
        ["arguments"]={
           {
              ["name"]="env",
              ["optional"]=false,
              ["type"]="table",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="line",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Read a line from a file opened with the \\afunction{open_read_file} callback. The argument is the return value from \\afunction{open_read_file}",
        ["type"]="callback",
     },
     ["register"]={
        ["arguments"]={
           {
              ["name"]="callback_name",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="callback_func",
              ["optional"]=false,
              ["type"]="function",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="id",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="error",
              ["optional"]=true,
              ["type"]="string",
           },
        },
        ["shortdesc"]="Register a callback. Passing \\type{nil} removes an existing callback. Returns \\type{nil}, \\type{error} on failure.",
        ["type"]="function",
     },
     ["show_error_hook"]={
        ["arguments"]={},
        ["returnvalues"]={},
        ["shortdesc"]="Run action at error reporting time.",
        ["type"]="callback",
     },
     ["start_page_number"]={
        ["arguments"]={},
        ["returnvalues"]={},
        ["shortdesc"]="Run actions at the start of typeset page number message reporting.",
        ["type"]="callback",
     },
     ["start_run"]={
        ["arguments"]={},
        ["returnvalues"]={},
        ["shortdesc"]="Run actions at the start of the typesetting run.",
        ["type"]="callback",
     },
     ["stop_page_number"]={
        ["arguments"]={},
        ["returnvalues"]={},
        ["shortdesc"]="Run actions at the end of typeset page number message reporting.",
        ["type"]="callback",
     },
     ["stop_run"]={
        ["arguments"]={},
        ["returnvalues"]={},
        ["shortdesc"]="Run actions just before the end of the typesetting run.",
        ["type"]="callback",
     },
     ["token_filter"]={
        ["arguments"]={},
        ["returnvalues"]={
           {
              ["name"]="token",
              ["optional"]=false,
              ["type"]="table",
           },
        },
        ["shortdesc"]="Override the tokenization process. Return value is a \\type{token} or an array of tokens",
        ["type"]="callback",
     },
     ["vpack_filter"]={
        ["arguments"]={
           {
              ["name"]="head",
              ["optional"]=false,
              ["type"]="node",
           },
           {
              ["name"]="groupcode",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="size",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="packtype",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="maxdepth",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="direction",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="newhead",
              ["optional"]=false,
              ["type"]="node",
           },
        },
        ["shortdesc"]="Alter a node list before vertical packing takes place. The second number is the desired max depth. See \\afunction{hpack_filter} for the arguments.",
        ["type"]="callback",
     },
   },
   ["methods"]={
   },
 },
 ["epdf"] = require "fdata_epdf",
 ["font"]={
   ["functions"]={
     ["current"]={
        ["arguments"]={
           {
              ["name"]="i",
              ["optional"]=true,
              ["type"]="number",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="i",
              ["optional"]=true,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Get or set the currently active font",
        ["type"]="function",
     },
     ["define"]={
        ["arguments"]={
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="metrics",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="i",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Process a font metrics table and stores it in the internal font table, returning its internal id.",
        ["type"]="function",
     },
     ["each"]={
        ["arguments"]={},
        ["returnvalues"]={
           {
              ["name"]="i",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="v",
              ["optional"]=false,
              ["type"]="metrics",
           },
        },
        ["shortdesc"]="Iterate over all the defined fonts.",
        ["type"]="function",
     },
     ["frozen"]={
        ["arguments"]={
           {
              ["name"]="n",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="boolean",
           },
        },
        ["shortdesc"]="True if the font is frozen and can no longer be altered.",
        ["type"]="function",
     },
     ["getfont"]={
        ["arguments"]={
           {
              ["name"]="n",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="metrics",
           },
        },
        ["shortdesc"]="Fetch an internal font id as a lua table.",
        ["type"]="function",
     },
     ["id"]={
        ["arguments"]={
           {
              ["name"]="csname",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="i",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Return the font id of the font accessed by the csname given.",
        ["type"]="function",
     },
     ["max"]={
        ["arguments"]={},
        ["returnvalues"]={
           {
              ["name"]="i",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Return the highest used font id at this moment.",
        ["type"]="function",
     },
     ["nextid"]={
        ["arguments"]={},
        ["returnvalues"]={
           {
              ["name"]="i",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["shortdesc"]="Return the next free font id number.",
        ["type"]="function",
     },
     ["read_tfm"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="s",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="fnt",
              ["optional"]=false,
              ["type"]="metrics",
           },
        },
        ["shortdesc"]="Parse a font metrics file, at the size indicated by the number.",
        ["type"]="function",
     },
     ["read_vf"]={
        ["arguments"]={
           {
              ["name"]="name",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="s",
              ["optional"]=false,
              ["type"]="number",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="vf_fnt",
              ["optional"]=false,
              ["type"]="metrics",
           },
        },
        ["shortdesc"]="Parse a virtual font metrics file, at the size indicated by the number.",
        ["type"]="function",
     },
     ["setfont"]={
        ["arguments"]={
           {
              ["name"]="n",
              ["optional"]=false,
              ["type"]="number",
           },
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="metrics",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Set an internal font id from a lua table.",
        ["type"]="function",
     },
   },
   ["methods"]={
   },
 },
 ["fontloader"]={
   ["functions"]={
     ["apply_afmfile"]={
        ["arguments"]={
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="luafont",
           },
           {
              ["name"]="filename",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Apply an AFM file to a fontloader table.",
        ["type"]="function",
     },
     ["apply_featurefile"]={
        ["arguments"]={
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="luafont",
           },
           {
              ["name"]="filename",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={},
        ["shortdesc"]="Apply a feature file to a fontloader table.",
        ["type"]="function",
     },
     ["info"]={
        ["arguments"]={
           {
              ["name"]="filename",
              ["optional"]=false,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="info",
              ["optional"]=false,
              ["type"]="table",
           },
        },
        ["shortdesc"]="Get various information fields from an font file.",
        ["type"]="function",
     },
     ["open"]={
        ["arguments"]={
           {
              ["name"]="filename",
              ["optional"]=false,
              ["type"]="string",
           },
           {
              ["name"]="fontname",
              ["optional"]=true,
              ["type"]="string",
           },
        },
        ["returnvalues"]={
           {
              ["name"]="f",
              ["optional"]=false,
              ["type"]="luafont",
           },
           {
              ["name"]="w",
              ["optional"]=false,
              ["type"]="table",
           },
        },
        ["shortdesc"]="Parse a font file and return a table representing its contents. The optional argument\
        is the name of the desired font in case of font collection files. The optional return\
        value contains any parser error strings.",
        ["type"]="function",
     },
   },
   ["methods"]={
   },
 },
 ["img"] = require "fdata_img",
 ["kpse"]={
   ["functions"]={
  ["expand_braces"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="r",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Expand the braces in a variable.",
     ["type"]="function",
  },
  ["expand_path"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="r",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Expand a path.",
     ["type"]="function",
  },
  ["expand_var"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="r",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Expand a variable.",
     ["type"]="function",
  },
  ["find_file"]={
     ["arguments"]={
        {
           ["name"]="filename",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="ftype",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="mustexist",
           ["optional"]=true,
           ["type"]="boolean",
        },
        {
           ["name"]="dpi",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="f",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Find a file. The optional string is the file type as supported by the\
     standalone \\type{kpsewhich} program (default is \\aliteral{{tex}}, no autodiscovery takes place).\
     The optional boolean indicates wether the file must exist.\
     The optional number is the dpi value for PK files.\
     ",
     ["type"]="function",
  },
  ["init_prog"]={
     ["arguments"]={
        {
           ["name"]="prefix",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="base_dpi",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="mfmode",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="fallback",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Initialize a PK generation program. The optional string is the metafont mode fallback name",
     ["type"]="function",
  },
  ["lookup"]={
     ["arguments"]={
        {
           ["name"]="filename",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="options",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="f",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Find a file (extended interface).",
     ["type"]="function",
  },
  ["new"]={
     ["arguments"]={
        {
           ["name"]="name",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="progname",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="kpathsea",
           ["optional"]=false,
           ["type"]="kpathsea",
        },
     },
     ["shortdesc"]="Create a new kpathsea library instance. The optional string allows explicit \\type{progname} setting.",
     ["type"]="function",
  },
  ["readable_file"]={
     ["arguments"]={
        {
           ["name"]="name",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="f",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Returns true if a file exists and is readable.",
     ["type"]="function",
  },
  ["set_program_name"]={
     ["arguments"]={
        {
           ["name"]="name",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="progname",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Initialize the kpathsea library by setting the program name. The optional string allows explicit \\type{progname} setting.",
     ["type"]="function",
  },
  ["show_path"]={
     ["arguments"]={
        {
           ["name"]="ftype",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="r",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="List the search path for a specific file type.",
     ["type"]="function",
  },
  ["var_value"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="r",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Return the value of a variable.",
     ["type"]="function",
  },
  ["version"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="r",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Return the kpathsea version.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
},
 ["lang"]={
   ["functions"]={
  ["clean"]={
     ["arguments"]={
        {
           ["name"]="o",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Creates a hyphenation key from the supplied hyphenation exception.",
     ["type"]="function",
  },
  ["clear_hyphenation"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Clear the set of hyphenation exceptions.",
     ["type"]="function",
  },
  ["clear_patterns"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Clear the set of hyphenation patterns.",
     ["type"]="function",
  },
  ["hyphenate"]={
     ["arguments"]={
        {
           ["name"]="head",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="tail",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="success",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Hyphenate a node list.",
     ["type"]="function",
  },
  ["hyphenation"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Get or set hyphenation exceptions.",
     ["type"]="function",
  },
  ["id"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Returns the current internal \\tex{language} id number.",
     ["type"]="function",
  },
  ["new"]={
     ["arguments"]={
        {
           ["name"]="id",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
     },
     ["shortdesc"]="Create a new language object, with an optional fixed id number.",
     ["type"]="function",
  },
  ["patterns"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Get or set hyphenation patterns.",
     ["type"]="function",
  },
  ["postexhyphenchar"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Set the post-hyphenchar for explicit hyphenation.",
     ["type"]="function",
  },
  ["posthyphenchar"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Set the post-hyphenchar for implicit hyphenation.",
     ["type"]="function",
  },
  ["preexhyphenchar"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Set the pre-hyphenchar for explicit hyphenation.",
     ["type"]="function",
  },
  ["prehyphenchar"]={
     ["arguments"]={
        {
           ["name"]="l",
           ["optional"]=false,
           ["type"]="language",
        },
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Set the pre-hyphenchar for implicit hyphenation.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
},
 ["lfs"]={
   ["functions"]={
  ["isdir"]={
     ["arguments"]={
        {
           ["name"]="filename",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Return true if the string is a directory.",
     ["type"]="function",
  },
  ["isfile"]={
     ["arguments"]={
        {
           ["name"]="filename",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Return true if the string is a file.",
     ["type"]="function",
  },
  ["readlink"]={
     ["arguments"]={
        {
           ["name"]="filename",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="f",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Return the contents of a symlink (Unix only).",
     ["type"]="function",
  },
  ["shortname"]={
     ["arguments"]={
        {
           ["name"]="filename",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="fat",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Return the FAT name of a file (Windows only).",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["lua"]={
   ["functions"]={
  ["getbytecode"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="f",
           ["optional"]=false,
           ["type"]="function",
        },
     },
     ["shortdesc"]="Return a previously stored function from a bytecode register.",
     ["type"]="function",
  },
  ["setbytecode"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="f",
           ["optional"]=false,
           ["type"]="function",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Save a function in a bytecode register.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
},
 ["mp"]={
   ["functions"]={
  ["char_depth"]={
     ["arguments"]={
        {
           ["name"]="fontname",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="char",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="w",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Report a character's depth.",
     ["type"]="method",
  },
  ["char_height"]={
     ["arguments"]={
        {
           ["name"]="fontname",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="char",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="w",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Report a character's height.",
     ["type"]="method",
  },
  ["char_width"]={
     ["arguments"]={
        {
           ["name"]="fontname",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="char",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="w",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Report a character's width.",
     ["type"]="method",
  },
  ["execute"]={
     ["arguments"]={
        {
           ["name"]="chunk",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="rettable",
           ["optional"]=false,
           ["type"]="mpdata",
        },
     },
     ["shortdesc"]="Execute metapost code in the instance.",
     ["type"]="method",
  },
  ["finish"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="rettable",
           ["optional"]=false,
           ["type"]="mpdata",
        },
     },
     ["shortdesc"]="Finish a metapost instance.",
     ["type"]="method",
  },
  ["statistics"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="stats",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Returns some statistics for this metapost instance.",
     ["type"]="method",
  },
   },
   ["methods"]={
   },
 },
 ["mplib"]={
   ["functions"]={
  ["new"]={
     ["arguments"]={
        {
           ["name"]="options",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="mp",
           ["optional"]=false,
           ["type"]="mpinstance",
        },
     },
     ["shortdesc"]="Create a new metapost instance.",
     ["type"]="function",
  },
  ["version"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="v",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Returns the mplib version.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["node"]={
   ["functions"]={
  ["copy"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="m",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Copy a node.",
     ["type"]="function",
  },
  ["copy_list"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="m",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="m",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Copy a node list.",
     ["type"]="function",
  },
  ["count"]={
     ["arguments"]={
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="m",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="i",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Return the count of nodes with a specific id in a node list. Processing stops just before the optional node.",
     ["type"]="function",
  },
  ["dimensions"]={
     ["arguments"]={
        {
           ["name"]="glue_set",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="glue_sign",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="glue_order",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="t",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="w",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="h",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="d",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Return the natural dimensions of a (horizontal) node list. The 3 optional numbers represent \
     glue_set, glue_sign, and glue_order. The calculation stops just before the optional node (default end of list)",
     ["type"]="function",
  },
  ["fields"]={
     ["arguments"]={
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="subid",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Report the fields a node type understands. The optional argument is needed for whatsits.",
     ["type"]="function",
  },
  ["first_glyph"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="m",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Return the first character node in a list. Processing stops just before the optional node.",
     ["type"]="function",
  },
  ["flush_list"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Release a list of nodes.",
     ["type"]="function",
  },
  ["free"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Release a node.",
     ["type"]="function",
  },
  ["has_attribute"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="val",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="v",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Return an attribute value for a node, if it has one. The optional number tests for a specific value",
     ["type"]="function",
  },
  ["has_field"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="field",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Return true if the node understands the named field.",
     ["type"]="function",
  },
  ["hpack"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="w",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="info",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="dir",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="h",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="b",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Pack a node list into a horizontal list. The number is the desired size, the first string is either \\aliteral{exact} or \\aliteral{additional} (modifies the first string),\
     the second string is the desired direction",
     ["type"]="function",
  },
  ["id"]={
     ["arguments"]={
        {
           ["name"]="type",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Convert a node type string into a node id number.",
     ["type"]="function",
  },
  ["insert_after"]={
     ["arguments"]={
        {
           ["name"]="head",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="current",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="new",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="head",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="new",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Insert the third node just after the second node in the list that starts at the first node.",
     ["type"]="function",
  },
  ["insert_before"]={
     ["arguments"]={
        {
           ["name"]="head",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="current",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="new",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="head",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="new",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Insert the third node just before the second node in the list that starts at the first node.",
     ["type"]="function",
  },
  ["is_node"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="any",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="yes",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Return true if the object is a <node>.",
     ["type"]="function",
  },
  ["kerning"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="m",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="h",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="success",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Apply the internal kerning routine to a node list. Processing stops just before the optional node.",
     ["type"]="function",
  },
  ["last_node"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Pops and returns the last node on the current output list.",
     ["type"]="function",
  },
  ["length"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="m",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="i",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Return the length of a node list. Processing stops just before the optional node.",
     ["type"]="function",
  },
  ["ligaturing"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="m",
           ["optional"]=true,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="h",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="success",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Apply the internal ligaturing routine to a node list. Processing stops just before the optional node.",
     ["type"]="function",
  },
  ["mlist_to_hlist"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="displaytype",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="penalties",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="h",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Recursively convert a math list into a horizontal list. The string differentiates display and inline, the boolean\
     whether penalties are inserted",
     ["type"]="function",
  },
  ["new"]={
     ["arguments"]={
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="subid",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Create a new node with id and (optional) subtype.",
     ["type"]="function",
  },
  ["protect_glyphs"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Mark all processed glyphs in a node list as being characters.",
     ["type"]="function",
  },
  ["protrusion_skippable"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="yes",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Return true if the node could be skipped for protrusion purposes.",
     ["type"]="function",
  },
  ["remove"]={
     ["arguments"]={
        {
           ["name"]="head",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="current",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="head",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="current",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Extract and remove a second node from the list that starts in the first node.",
     ["type"]="function",
  },
  ["set_attribute"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="val",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set an attribute value for a node.",
     ["type"]="function",
  },
  ["slide"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="m",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Move to the last node of a list while fixing next and prev pointers.",
     ["type"]="function",
  },
  ["next"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="m",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Returns the next node.",
     ["type"]="function",
  },
  ["prev"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="m",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Returns the previous node.",
     ["type"]="function",
  },
  ["subtype"]={
     ["arguments"]={
        {
           ["name"]="type",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="subtype",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Convert a whatsit type string into  a node subtype number.",
     ["type"]="function",
  },
  ["tail"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="m",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Return the last node in a list.",
     ["type"]="function",
  },
  ["traverse"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Iterate over a node list.",
     ["type"]="function",
  },
  ["traverse_id"]={
     ["arguments"]={
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Iterate over nodes with id matching the number in a node list.",
     ["type"]="function",
  },
  ["type"]={
     ["arguments"]={
        {
           ["name"]="id",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="type",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="convert a node id number into a node type string.",
     ["type"]="function",
  },
  ["types"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Return the list of node types.",
     ["type"]="function",
  },
  ["unprotect_glyphs"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Mark all characters in a node list as being processed glyphs.",
     ["type"]="function",
  },
  ["unset_attribute"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="i",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="val",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="v",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Unset an attribute value for a node. The optional number tests for a specific value",
     ["type"]="function",
  },
  ["vpack"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="w",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="info",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="dir",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="h",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="b",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Pack a node list into a vertical list. Arguments as for node.hpack",
     ["type"]="function",
  },
  ["whatsits"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Return the list of whatsit types.",
     ["type"]="function",
  },
  ["write"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Appends a node to the current output list.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["os"]={
   ["functions"]={
  ["exec"]={
     ["arguments"]={
        {
           ["name"]="command",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="      Run an external command and exit. The table is an array of arguments, with an optional \\type{argv[0]} in index 0.",
     ["type"]="function",
  },
  ["gettimeofday"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="time",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get the time as a floating point number (Unix only).",
     ["type"]="function",
  },
  ["setenv"]={
     ["arguments"]={
        {
           ["name"]="key",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="value",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set an environment variable.",
     ["type"]="function",
  },
  ["spawn"]={
     ["arguments"]={
        {
           ["name"]="command",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="succ",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="Run an external command and return its exit code. The table is an array of arguments, with an optional \\type{argv[0]} in index 0.",
     ["type"]="function",
  },
  ["times"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="times",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Return process times.",
     ["type"]="function",
  },
  ["tmpdir"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="d",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Create a temporary directory inside the current directory.",
     ["type"]="function",
  },
  ["selfdir"]={
     ["arguments"]={},
     ["returnvalues"]={
       {
          ["name"]="d",
          ["optional"]=false,
          ["type"]="string",
       },
     },
     ["shortdesc"]="Return the directory path of argv[0].",
     ["type"]="function",
  },
  ["uname"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="data",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Return various information strings about the computer.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["pdf"]={
   ["functions"]={
  ["immediateobj"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="type",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="objtext",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="extradata",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Write an object to the PDF file immediately. The optional number is an object id,\
     the first optional string is \\aliteral{{file}}, \\aliteral{{stream}}, or \\aliteral{{filestream}}.\
     the second optional string contains stream attributes for the latter two cases.\
     ",
     ["type"]="function",
  },
  ["obj"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="type",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="objtext",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="extradata",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Write an object to the PDF file. See \\aliteral{pdf.immediateobj} for arguments.",
     ["type"]="function",
  },
  ["refobj"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        }
     },
     ["returnvalues"]={},
     ["shortdesc"]="Reference an object, so that it will be written out.",
     ["type"]="function",
  },
  ["print"]={
     ["arguments"]={
        {
           ["name"]="type",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Write directly to the PDF file (use in \\tex{latelua}). The optional string is\
     one of \\aliteral{{direct}} or \\aliteral{{page}}",
     ["type"]="function",
  },
  ["registerannot"]={
     ["arguments"]={
        {
           ["name"]="objnum",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Register an annotation in the PDF backend.",
     ["type"]="function",
  },
  ["pageref"]={
     ["arguments"]={
        {
           ["name"]="objnum",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="page",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Return the pageref object number.",
     ["type"]="function",
  },

  ["mapfile"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Register a font map file.",
     ["type"]="function",
  },

  ["mapline"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Register a font map line.",
     ["type"]="function",
  },

  ["reserveobj"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Reserve an object number in the PDF backend.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["status"]={
   ["functions"]={
  ["list"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="info",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Returns a table with various status items.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["string"]={
   ["functions"]={
  ["bytepairs"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="m",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Iterator that returns two values representing two single 8-byte tokens.",
     ["type"]="function",
  },
  ["bytes"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Iterator that returns a value representing a single 8-byte token.",
     ["type"]="function",
  },
  ["characterpairs"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Iterator that returns two strings representing two single \\UTF-8 tokens.",
     ["type"]="function",
  },
  ["characters"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Iterator that returns a string representing a single 8-byte token.",
     ["type"]="function",
  },
  ["explode"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="sep",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="i",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Break a string into pieces. The optional argument is a character possibly followed by a plus sign (default \\aliteral{{ +}})",
     ["type"]="function",
  },
  ["utfcharacters"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Iterator that returns a string representing a single \\UTF-8 token.",
     ["type"]="function",
  },
  ["utfvalues"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Iterator that returns a value representing a single \\UTF-8 token.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["tex"]={
   ["functions"]={
  ["badness"]={
     ["arguments"]={
        {
           ["name"]="f",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="b",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Compute a badness value.",
     ["type"]="function",
  },
  ["definefont"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="boolean",
        },
        {
           ["name"]="csname",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="fontid",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Define a font csname. The optional boolean indicates for global definition, the string is the csname, the number is a font id.",
     ["type"]="function",
  },
  ["enableprimitives"]={
     ["arguments"]={
        {
           ["name"]="prefix",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="names",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Enable the all primitives in the array using the string as prefix.",
     ["type"]="function",
  },
  ["error"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="helptext",
           ["optional"]=true,
           ["type"]="table",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Create an error that is presented to the user. The optional table is an array of help message strings.",
     ["type"]="function",
  },
  ["extraprimitives"]={
     ["arguments"]={
        {
           ["name"]="s1",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="s2",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Return all primitives in a (set of) extension identifiers. Valid identifiers are: \
     \\aliteral{tex}, \\aliteral{core}, \\aliteral{etex}, \\aliteral{pdftex}, \\aliteral{omega}, \\aliteral{aleph}, and \\aliteral{luatex}.",
     ["type"]="function",
  },
  ["get"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="v",
           ["optional"]=false,
           ["type"]="value",
        },
     },
     ["shortdesc"]="Get a named internal register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["getattribute"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get an attribute register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["getbox"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Get a box register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["getcount"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get a count register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["getdimen"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get a dimen register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["getmath"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get an internal math parameter. The first string is like the csname but without the \\type{Umath} prefix, the second string is a style name minus the \\type{style} suffix.",
     ["type"]="function",
  },
  ["getskip"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["shortdesc"]="Get a skip register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["gettoks"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Get a toks register. Also accepts a predefined csname string.",
     ["type"]="function",
  },


  ["getlccode"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get a lowercase code.",
     ["type"]="function",
  },

  ["setlccode"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="lc",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="uc",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a lowercase code.",
     ["type"]="function",
  },

  ["getuccode"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get an uppercase code.",
     ["type"]="function",
  },
  ["setuccode"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="uc",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="lc",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set an uppercase code.",
     ["type"]="function",
  },
  ["getsfcode"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get a space factor.",
     ["type"]="function",
  },
  ["setsfcode"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="sf",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a space factor.",
     ["type"]="function",
  },

  ["getcatcode"]={
     ["arguments"]={
        {
           ["name"]="cattable",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="c",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Get a category code.",
     ["type"]="function",
  },

  ["setcatcode"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="cattable",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="c",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a category code.",
     ["type"]="function",
  },

  ["getmathcode"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Get a math code.",
     ["type"]="function",
  },

  ["setmathcode"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="mval",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a math code.",
     ["type"]="function",
  },

  ["getdelcode"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Get a delimiter code.",
     ["type"]="function",
  },

  ["setdelcode"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="mval",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a delimiter code.",
     ["type"]="function",
  },



  ["linebreak"]={
     ["arguments"]={
        {
           ["name"]="listhead",
           ["optional"]=false,
           ["type"]="node",
        },
        {
           ["name"]="parameters",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Run the line breaker on a node list. The table lists settings.",
     ["type"]="function",
  },
  ["primitives"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="table",
        },
     },
     ["shortdesc"]="Returns a table of all currently active primitives, with their meaning.",
     ["type"]="function",
  },
  ["print"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="s1",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="s2",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="      Print a sequence of strings (not just two) as lines. The optional argument is a catcode table id.",
     ["type"]="function",
  },
  ["round"]={
     ["arguments"]={
        {
           ["name"]="o",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Round a number.",
     ["type"]="function",
  },
  ["scale"]={
     ["arguments"]={
        {
           ["name"]="o",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="delta",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Multiplies the first number (or all fields in a table) with the second argument (if the first argument is a table, so is the return value).",
     ["type"]="function",
  },
  ["set"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="v",
           ["optional"]=false,
           ["type"]="value",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a named internal register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["setattribute"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set an attribute register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["setbox"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a box register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["setcount"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a count register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["setdimen"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a dimen register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["setmath"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set an internal math parameter. The first string is like the csname but without the \\type{Umath} prefix, the second string is a style name minus the \\type{style} suffix.",
     ["type"]="function",
  },
  ["setskip"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="node",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a skip register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["settoks"]={
     ["arguments"]={
        {
           ["name"]="global",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Set a toks register. Also accepts a predefined csname string.",
     ["type"]="function",
  },
  ["shipout"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Ships the box to the output file and clears the box.",
     ["type"]="function",
  },
  ["sp"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="n",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Convert a dimension string to scaled points.",
     ["type"]="function",
  },
  ["sprint"]={
     ["arguments"]={
        {
           ["name"]="n",
           ["optional"]=true,
           ["type"]="number",
        },
        {
           ["name"]="s1",
           ["optional"]=false,
           ["type"]="string",
        },
        {
           ["name"]="s2",
           ["optional"]=true,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="      Print a sequence of strings (not just two) as partial lines. The optional argument is a catcode table id.",
     ["type"]="function",
  },
  ["tprint"]={
     ["arguments"]={
        {
           ["name"]="a1",
           ["optional"]=false,
           ["type"]="table",
        },
        {
           ["name"]="a2",
           ["optional"]=true,
           ["type"]="table",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Combine any number of \\type{tex.sprint}'s into a single function call.",
     ["type"]="function",
  },
  ["write"]={
     ["arguments"]={
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="      Print a sequence of strings (not just two) as detokenized data.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["texio"]={
   ["functions"]={
  ["write"]={
     ["arguments"]={
        {
           ["name"]="target",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Write a string to the log and/or terminal. The optional argument is\
     \\aliteral{{term}}, \\aliteral{{term and log}}, or \\aliteral{{log}}.",
     ["type"]="function",
  },
  ["write_nl"]={
     ["arguments"]={
        {
           ["name"]="target",
           ["optional"]=true,
           ["type"]="string",
        },
        {
           ["name"]="s",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={},
     ["shortdesc"]="Write a string to the log and/or terminal, starting on a new line. \
     The optional argument is \
     \\aliteral{{term}}, \\aliteral{{term and log}}, or \\aliteral{{log}}.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
 ["token"]={
   ["functions"]={
  ["command_id"]={
     ["arguments"]={
        {
           ["name"]="commandname",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="i",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Return the internal number representing a command code.",
     ["type"]="function",
  },
  ["command_name"]={
     ["arguments"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="token",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="commandname",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Return the internal string representing a command code.",
     ["type"]="function",
  },
  ["create"]={
     ["arguments"]={
        {
           ["name"]="char",
           ["optional"]=false,
           ["type"]="number",
        },
        {
           ["name"]="catcode",
           ["optional"]=true,
           ["type"]="number",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="token",
        },
     },
     ["shortdesc"]="Create a token from scratch, the optional argument is a category code. Also accepts strings, in which case a token matching that csname is created.",
     ["type"]="function",
  },
  ["csname_id"]={
     ["arguments"]={
        {
           ["name"]="csname",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="i",
           ["optional"]=false,
           ["type"]="number",
        },
     },
     ["shortdesc"]="Returns the value for a csname string.",
     ["type"]="function",
  },
  ["csname_name"]={
     ["arguments"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="token",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="csname",
           ["optional"]=false,
           ["type"]="string",
        },
     },
     ["shortdesc"]="Return the csname associated with a token.",
     ["type"]="function",
  },
  ["expand"]={
     ["arguments"]={},
     ["returnvalues"]={},
     ["shortdesc"]="Expand a token the tokenb waiting in the input stream.",
     ["type"]="function",
  },
  ["get_next"]={
     ["arguments"]={},
     ["returnvalues"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="token",
        },
     },
     ["shortdesc"]="Fetch the next token from the input stream.",
     ["type"]="function",
  },
  ["is_activechar"]={
     ["arguments"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="token",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="b",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="True if the token represents and active character.",
     ["type"]="function",
  },
  ["is_expandable"]={
     ["arguments"]={
        {
           ["name"]="t",
           ["optional"]=false,
           ["type"]="token",
        },
     },
     ["returnvalues"]={
        {
           ["name"]="b",
           ["optional"]=false,
           ["type"]="boolean",
        },
     },
     ["shortdesc"]="True if the token is expandable.",
     ["type"]="function",
  },
   },
   ["methods"]={
   },
 },
}

return fdata;