{"id":22064519,"url":"https://github.com/josef-friedrich/luatex_lua-api","last_synced_at":"2025-05-13T01:04:14.134Z","repository":{"id":72532604,"uuid":"583927494","full_name":"Josef-Friedrich/LuaTeX_Lua-API","owner":"Josef-Friedrich","description":"Type definitions / Stubs for the Lua API / interface of LuaTeX and related Lua modules.","archived":false,"fork":false,"pushed_at":"2025-03-29T11:17:44.000Z","size":3571,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-13T01:02:48.353Z","etag":null,"topics":["api","documentation","lsp","lua","luatex"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Josef-Friedrich.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-31T13:53:56.000Z","updated_at":"2025-03-29T11:17:50.000Z","dependencies_parsed_at":"2025-03-29T12:30:02.516Z","dependency_job_id":null,"html_url":"https://github.com/Josef-Friedrich/LuaTeX_Lua-API","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josef-Friedrich%2FLuaTeX_Lua-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josef-Friedrich%2FLuaTeX_Lua-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josef-Friedrich%2FLuaTeX_Lua-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Josef-Friedrich%2FLuaTeX_Lua-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Josef-Friedrich","download_url":"https://codeload.github.com/Josef-Friedrich/LuaTeX_Lua-API/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253850874,"owners_count":21973672,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","documentation","lsp","lua","luatex"],"created_at":"2024-11-30T19:12:22.460Z","updated_at":"2025-05-13T01:04:13.829Z","avatar_url":"https://github.com/Josef-Friedrich.png","language":"Lua","readme":"# LuaTeX Lua API\n\nType definitions / Stubs for the Lua API / interface of `LuaTeX` and\nrelated `Lua` modules.\n\n![](resources/screencasts/node.new.gif)\n\nWork in progress! Please contribute!\n\n[LuaTeX](http://luatex.org) has a very large [Lua](https://www.lua.org)\nAPI. This project tries to make this API accessible in the text editor\nof your choice. This is made possible by the\n[lua-language-server](https://github.com/LuaLS/lua-language-server) -\na server that implements the [Language Server Protocol\n(LSP)](https://en.wikipedia.org/wiki/Language_Server_Protocol) for the\n`Lua` language.\n\nFeatures such as code completion syntax highlighting and marking of\nwarnings and errors, should therefore not only be possible in [Visual\nStudio Code](https://code.visualstudio.com), but in a [large number of\neditors](https://langserver.org/#implementations-client) that support\nthe `LSP`.\n\n## Related projects\n\n* [Visual Studio Code LuaTeX Extension](https://github.com/Josef-Friedrich/vscode_LuaTeX_Lua-API)\n  ← [library](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/tree/main/library)\n\n### Subprojects (upstream / pull) detached from this repository\n\n* [LuaCats: lpeg](https://github.com/LuaCATS/lpeg)\n  → [library/luatex/lpeg.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/lpeg.lua)\n* [LuaCats: luaharfbuzz](https://github.com/LuaCATS/luaharfbuzz)\n  → [library/luatex/luaharfbuzz.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/luaharfbuzz.lua)\n* [LuaCats: luasocket](https://github.com/LuaCATS/luasocket)\n  → [library/luatex/socket.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/socket.lua)\n  → [library/luatex/mime.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/mime.lua)\n* [LuaCats: luazip](https://github.com/LuaCATS/luazip)\n  → [library/luatex/zip.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/zip.lua)\n* [LuaCats: lzlib](https://github.com/LuaCATS/lzlib)\n  → [library/luatex/zlib.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/zlib.lua)\n* [LuaCats: md5](https://github.com/LuaCATS/md5)\n  → [library/luatex/md5.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/md5.lua)\n* [LuaCats: slnunicode](https://github.com/LuaCATS/slnunicode)\n  → [library/luatex/unicode.lua](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/unicode.lua)\n\n### Subprojects (push) detached from this repository\n\n* [LuaCats: tex-luatex](https://github.com/LuaCATS/tex-luatex)\n  ← [library/luatex](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/tree/main/library/luatex)\n* [LuaCats: tex-lualatex](https://github.com/LuaCATS/tex-lualatex)\n  ← [library/luatex](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/tree/main/library/luatex)\n\n## Structure of this project / documentation\n\nIn the subfolder `library` are files named after the global libraries\nthey document. For example, the `library/tex.lua` file contains the\ndocumentation for the `tex` library. These `Lua` files don’t contain\nreally `Lua` code. They consist of just function bodies and empty\ntables. The main focus lies in the docstrings.\n\nThe API docmentation is written in a [well documented annotation\nformat](https://github.com/sumneko/lua-language-server/wiki/Annotations#meta).\nThis format is based on the [EmmyLua](https://emmylua.github.io/)\nformat. Unfortunately, the `Lua` community has not yet been able to\nagree on a standarized annotation format. Many `Lua` project are\ndocumented in the [LDoc](https://github.com/lunarmodules/LDoc) format.\nHowever, the differences between these formats are marginal.\n\n### `library`\n\nThe actual definitions are located in the directory `library`. This\ndirectory is divided into further subdirectories. In the folder `luatex`\nyou will find the definitions that the engine `LuaTeX` provides. The\nfolder `lualibs` documents the extension library of the same name. If\nyou use `lualatex`, you may be interested in the folder of the same\nname.\n\n### `resources`\n\nThe folder resources contains TeX manuals and HTML online documentation\nconverted into Lua docstrings.\n\n### `examples`\n\nThe `example` folder contains TeX files for demonstrating and testing\nthe documented Lua API.\n\n## Installation / Setup for Visual Studio Code\n\nInstall [Visual Studio Code](https://code.visualstudio.com/) and the\n[lua-language-server](https://marketplace.visualstudio.com/items?itemName=sumneko.lua).\n\n\n```\ngit clone https://github.com/Josef-Friedrich/LuaTeX_Lua-API.git\n```\n\n`.vscode/settings.json`:\n\n```json\n{\n\"Lua.workspace.library\": [\n    \"\u003crepo\u003e/library\"\n  ]\n}\n```\n\n## How to contribute\n\nThe preferred method of contributing to the project is via Github pull\nrequests. You can also email patches to josef@friedrich.rocks.\nIt is ok if you only document the data types of the input parameters.\n\nUse imperative mood for the first line: https://peps.python.org/pep-0257/\n\n`Please contribute!` messages\n\nDefault message:\n\n```lua\n---😱 [Types](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/library/luatex/pdf.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/pulls)\n```\n\nNo documentation at all:\n\n```lua\n---\n---Warning! Undocumented code!\u003cp\u003e\n---TODO: Please contribute\n---https://github.com/Josef-Friedrich/LuaTeX_Lua-API#how-to-contribute\n```\n\n### Minimal example of `tex.sp()`\n\n```lua\n---\n---@param s string\nfunction tex.sp(s) end\n```\n\n### Less minimal example of `tex.sp()`\n\n```lua\n---\n---@param s string\n---\n---@return integer\nfunction tex.sp(s) end\n```\n\nOr if you have more time you can also expand the documentation to this\nlevel:\n\n### Prime example of `tex.sp()`\n\n```lua\n---@meta\n\ntex = {}\n\n---\n---Convert a string `s` that represents an explicit\n---dimension into an integer number of scaled points.\n---\n---For parsing the string, the same scanning and conversion rules are used that\n---*LuaTeX* would use if it was scanning a dimension specifier in its *TeX*-like\n---input language (this includes generating errors for bad values), expect for the\n---following:\n---\n---* only explicit values are allowed, control sequences are not handled\n---* infinite dimension units (`fil...`) are forbidden\n---* `mu` units do not generate an error (but may not be useful either)\n---\n---__Example:__\n---\n---```lua\n---local scaled_points = tex.sp('1cm')\n---print(scaled_points) -- 1864679\n---```\n---\n---__Reference:__\n---\n---* `LuaTeX` manual: 10.3.15.5 `sp` page 204\n---* Source code of the `LuaTeX` manual: [luatex-tex.tex#L1386-L1413](https://github.com/TeX-Live/luatex/blob/f52b099f3e01d53dc03b315e1909245c3d5418d3/manual/luatex-tex.tex#L1386-L1413)\n---\n---@param s string # A string to convert into scaled points.\n---\n---@return integer # The dimension in the scaled points format.\nfunction tex.sp(s) end\n```\n\nThe docstring above is rendered as follows in Visual Studio Code:\n\n![](resources/images/tex.sp.png)\n\nThe description text can be or was taken from the official [LuaTeX\nreference manual](https://github.com/TeX-Live/luatex/tree/trunk/manual).\nIn the project folder\n[resources/manuals/luatex](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/tree/main/resources/manuals/luatex)\nyou will find slightly edited `Lua` versions of the `LuaTeX` manual\nsources.\n\n1.  [Preamble](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/01_preamble.tex.lua)\n2.  [Basic TEX enhancements](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/02_enhancements.tex.lua)\n3.  [Modifications](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/03_modifications.tex.lua)\n4.  [Using LUATEX](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/04_lua.tex.lua)\n5.  [Languages, characters, fonts and glyphs](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/05_languages.tex.lua)\n6.  [Font structure](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/06_fonts.tex.lua)\n7.  [Math](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/07_math.tex.lua)\n8.  [Nodes](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/08_nodes.tex.lua)\n9.  [LUA callbacks](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/09_callbacks.tex.lua)\n10. [The TEX related libraries](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/10_tex.tex.lua)\n11. [The graphic libraries](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/11_graphics.tex.lua)\n12. [The fontloader](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/12_fontloader.tex.lua)\n13. [The HarfBuzz libraries](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/13_harfbuzz.tex.lua)\n14. [The backend libraries](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/luatex/14_backend.tex.lua)\n\nThis quick hacked and very ugly Python script\n[resources/manuals/convert-tex-to-lua-docstrings.py](https://github.com/Josef-Friedrich/LuaTeX_Lua-API/blob/main/resources/manuals/convert-tex-to-lua-docstrings.py)\nwas used to convert the source files.\n\n### Navigation table `_N`\n\nSome Lua files contain a table named `_N`. `_N` stands for `navigation`.\nWith the help of this table and the outline view of the editor, it is\neasier to navigate through the documentation. The name is inspired by\nthe global Lua table `_G`. Many parts of the documentation, such as the\ndefinition of the various `Node` classes, are not shown in the outline.\nIf the API documentation is published, the `_N` table can be commented\nout.\n\n### Documentation of function overloading\n\n`LuaTeX` makes extensive use of function overloading. The following\nexample is taken from the `LuaTeX` manual:\n\n```\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnode\u003e n)\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnode\u003e n, \u003cstring\u003e dir)\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnode\u003e n, \u003cnode\u003e t)\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnode\u003e n, \u003cnode\u003e t, \u003cstring\u003e dir)\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnumber\u003e glue_set, \u003cnumber\u003e glue_sign, \u003cnumber\u003e glue_order, \u003cnode\u003e n)\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnumber\u003e glue_set, \u003cnumber\u003e glue_sign, \u003cnumber\u003e glue_order, \u003cnode\u003e n, \u003cstring\u003e dir)\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnumber\u003e glue_set, \u003cnumber\u003e glue_sign, \u003cnumber\u003e glue_order, \u003cnode\u003e n, \u003cnode\u003e t)\n\u003cnumber\u003e w, \u003cnumber\u003e h, \u003cnumber\u003e d =\n  node.dimensions(\u003cnumber\u003e glue_set, \u003cnumber\u003e glue_sign, \u003cnumber\u003e glue_order, \u003cnode\u003e n, \u003cnode\u003e t, \u003cstring\u003e dir)\n```\n\nThis can easily be done by documenting the function with the same name\nbut different signatures multiple times.\n\n[Issue for further improvement of the function loading](https://github.com/sumneko/lua-language-server/issues/1456)\n\nFunction overloading in `tex.sp()`\n\n![](resources/images/tex.sp_overload.png)\n\n### Documentation of nodes\n\nA node (object) can be described by the `@class` annotation and provided\nwith some documentation about its attributes using `@field`. There is a base class `Node` for all node type classes.\n\n```lua\n---\n---A node that comprise actual typesetting commands. A few fields are\n---present in all nodes regardless of their type, these are:\n---\n---@class Node\n---@field next Node|nil # the next node in a list, or nil\n---@field prev Node|nil # That prev field is always present, but only initialized on explicit request ...\n```\n\nThe `KernNode` class for example inherits from `Node` and represents\na kern node.\n\n```lua\n---\n---The `kern` command creates such nodes but for instance the font and math\n---machinery can also add them.\n---\n---@class KernNode: Node\n---@field subtype KernNodeSubtype\n---@field kern integer # Fixed horizontal or vertical advance (in scaled points)\n```\n\n```lua\n---@alias KernNodeSubtype\n---|0 # fontkern\n---|1 # userkern\n---|2 # accentkern\n---|3 # italiccorrection\n```\n\nThe `@cast` annotation forces a unspecific node to a distinct node type.\n\n```lua\nwhile n do\n  if n.id == node.id('kern') then\n    ---@cast n KernNode\n    print(n.kern)\n  end\n  n = n.next\nend\n```\n\nUse `--[[@as \u003cnode type\u003e]]` to force a node type onto an expression.\n\n```lua\nlocal kern = node.new('kern') --[[@as KernNode]]\n```\n\n![](resources/images/cast.png)\n\n\n### Documentation of callback functions\n\nHow a callback function is documented is shown using the\n`pre_linebreak_filter` as an example.\n\n#### @alias `PreLinebreakFilterGroupCode`\n\n```lua\n---\n---The string called `groupcode` identifies the nodelist's context within\n---*TeX*'s processing. The range of possibilities is given in the table below, but\n---not all of those can actually appear in `pre_linebreak_filter`, some are\n---for the `hpack_filter` and `vpack_filter` callbacks that will be\n---explained in the next two paragraphs.\n---@alias PreLinebreakFilterGroupCode\n---|'' # main vertical list\n---|'hbox' # hbox` in horizontal mode\n---|'adjusted_hbox' #hbox` in vertical mode\n---|'vbox' # vbox`\n---|'vtop' # vtop' #\n---|'align' # halign` or `valign`\n---|'disc' # discretionaries\n---|'insert' # packaging an insert\n---|'vcenter' # vcenter`\n---|'local_box' # localleftbox` or `localrightbox`\n---|'split_off' # top of a `vsplit`\n---|'split_keep' # remainder of a `vsplit`\n---|'align_set' # alignment cell\n---|'fin_row' # alignment row\n```\n\n#### @alias `NodeCallbackReturn`\n\n\n```lua\n---\n---As for all the callbacks that deal with nodes, the return value can be one of\n---three things:\n---\n---* boolean `true` signals successful processing\n---* `\u003cnode\u003e` signals that the “head” node should be replaced by the\n---  returned node\n---* boolean `false` signals that the “head” node list should be\n---  ignored and flushed from memory\n---@alias NodeCallbackReturn true|false|Node\n```\n\n#### @alias `PreLinebreakFilter`\n\n```lua\n---\n---# `pre_linebreak_filter` callback\n---\n---This callback is called just before *LuaTeX* starts converting a list of nodes\n---into a stack of `hbox`es, after the addition of `parfillskip`.\n---\n---```lua\n------@type PreLinebreakFilter\n---function(head, groupcode)\n---  --- true|false|node\n---  return true\n---end\n---```\n---\n---This callback does not replace any internal code.\n---@alias PreLinebreakFilter fun(head: Node, groupcode: PreLinebreakFilterGroupCode): NodeCallbackReturn\n```\n\nAnnotation your custom callback function with `@type`.\n\n```lua\n---@type PreLinebreakFilter\nlocal function visit_nodes(head, group)\n  return true\nend\n\nluatexbase.add_to_callback('pre_linebreak_filter', visit_nodes, 'visit nodes')\n```\n\n![](resources/images/PreLinebreakFilter.png)\n\nQuick info `node.id(type)`\n\n![](resources/images/node.id.png)\n\nType error in `node.id(type)`\n\n![](resources/images/node.id_wrong-type.png)\n\n`node.id(type)` type definition\n\n![](resources/images/node.id_definition.png)\n\nQuick info `node.write(n)`\n\n![](resources/images/node.write.png)\n\nDocumentation for the field `data` of the `pdf_colorstack` node:\n\n![](resources/images/PdfColorstockWhatsitNode.data.png)\n\n## Documentation\n\n* [LuaTeX Repo](https://gitlab.lisn.upsaclay.fr/texlive/luatex/) [LuaTeX Mirror](https://github.com/TeX-Live/luatex)\n* [pdfTeX Mirror](https://github.com/tex-mirror/pdftex)\n\n## Howtos\n\n* [Custom libraries](https://github.com/sumneko/lua-language-server/wiki/Libraries#custom)\n* [@meta annotation](https://github.com/sumneko/lua-language-server/wiki/Annotations#meta)\n\n## Other type definition / stub repos:\n\n* [Template of the Lua interface itself](https://github.com/sumneko/lua-language-server/tree/master/meta/template)\n* [In the lua-language-server included 3rd party libraries](https://github.com/sumneko/lua-language-server/tree/master/meta/3rd)\n* [FiveM Lua Stubs](https://github.com/jamie-34254/fivem_lua_stubs)\n\n\n```lua\n---\n---__Reference:__\n---\n---* Source code of the `LuaTeX` manual: [luatex-nodes.tex#L1199-L1211](https://github.com/TeX-Live/luatex/blob/f52b099f3e01d53dc03b315e1909245c3d5418d3/manual/luatex-nodes.tex#L1199-L1211)\n---\n```\n\n```lua\n---\n---__Reference:__\n---\n---* Source code of the `LuaTeX` manual: []()\n---\n```\n\n## Global namespace\n\nThe following listing is generated inside from `LuaTeX` using the small\nscript below.\n\n\n### arg\n\n- `arg.0` (string)\n- `arg.1` (string)\n\n### bit32\n\n- __`bit32.arshift` (function)__\n- __`bit32.band` (function)__\n- __`bit32.bnot` (function)__\n- __`bit32.bor` (function)__\n- __`bit32.btest` (function)__\n- __`bit32.bxor` (function)__\n- __`bit32.extract` (function)__\n- __`bit32.lrotate` (function)__\n- __`bit32.lshift` (function)__\n- __`bit32.replace` (function)__\n- __`bit32.rrotate` (function)__\n- __`bit32.rshift` (function)__\n\n### callback\n\n- __`callback.find` (function)__\n- __`callback.list` (function)__\n- __`callback.register` (function)__\n\n### config\n\n- *`config.actions` (table)*\n- *`config.lualibs` (table)*\n- *`config.luaotfload` (table)*\n\n### dir\n\n- __`dir.collectpattern` (function)__\n- __`dir.current` (function)__\n- __`dir.expandname` (function)__\n- __`dir.found` (function)__\n- __`dir.glob` (function)__\n- __`dir.globdirs` (function)__\n- __`dir.globfiles` (function)__\n- __`dir.globpattern` (function)__\n- __`dir.ls` (function)__\n- __`dir.makedirs` (function)__\n- __`dir.mkdirs` (function)__\n- __`dir.pop` (function)__\n- __`dir.push` (function)__\n\n### file\n\n- __`file.addsuffix` (function)__\n- __`file.basename` (function)__\n- __`file.checksum` (function)__\n- __`file.collapse_path` (function)__\n- __`file.collapsepath` (function)__\n- __`file.copy` (function)__\n- __`file.dirname` (function)__\n- __`file.expandname` (function)__\n- __`file.extname` (function)__\n- __`file.is_qualified_path` (function)__\n- __`file.is_readable` (function)__\n- __`file.is_rootbased_path` (function)__\n- __`file.is_writable` (function)__\n- __`file.isreadable` (function)__\n- __`file.iswritable` (function)__\n- __`file.join` (function)__\n- __`file.joinpath` (function)__\n- __`file.loadchecksum` (function)__\n- __`file.nameonly` (function)__\n- __`file.nametotable` (function)__\n- __`file.needs_updating` (function)__\n- __`file.needsupdating` (function)__\n- __`file.pathpart` (function)__\n- __`file.readdata` (function)__\n- __`file.removesuffix` (function)__\n- __`file.replacesuffix` (function)__\n- __`file.reslash` (function)__\n- __`file.robustname` (function)__\n- __`file.savechecksum` (function)__\n- __`file.savedata` (function)__\n- __`file.size` (function)__\n- __`file.split_path` (function)__\n- __`file.splitbase` (function)__\n- __`file.splitname` (function)__\n- __`file.splitpath` (function)__\n- __`file.strip` (function)__\n- __`file.suffix` (function)__\n- __`file.suffixes` (function)__\n- __`file.suffixesonly` (function)__\n- __`file.suffixonly` (function)__\n- __`file.syncmtimes` (function)__\n- __`file.withinbase` (function)__\n\n### fio\n\n- __`fio.getposition` (function)__\n- __`fio.read2dot14` (function)__\n- __`fio.readbytes` (function)__\n- __`fio.readbytetable` (function)__\n- __`fio.readcardinal1` (function)__\n- __`fio.readcardinal1le` (function)__\n- __`fio.readcardinal2` (function)__\n- __`fio.readcardinal2le` (function)__\n- __`fio.readcardinal3` (function)__\n- __`fio.readcardinal3le` (function)__\n- __`fio.readcardinal4` (function)__\n- __`fio.readcardinal4le` (function)__\n- __`fio.readcardinaltable` (function)__\n- __`fio.readfixed2` (function)__\n- __`fio.readfixed4` (function)__\n- __`fio.readinteger1` (function)__\n- __`fio.readinteger1le` (function)__\n- __`fio.readinteger2` (function)__\n- __`fio.readinteger2le` (function)__\n- __`fio.readinteger3` (function)__\n- __`fio.readinteger3le` (function)__\n- __`fio.readinteger4` (function)__\n- __`fio.readinteger4le` (function)__\n- __`fio.readintegertable` (function)__\n- __`fio.readline` (function)__\n- __`fio.setposition` (function)__\n- __`fio.skipposition` (function)__\n\n### font\n\n- __`font.addcharacters` (function)__\n- __`font.current` (function)__\n- __`font.define` (function)__\n- __`font.each` (function)__\n- *`font.fonts` (table)*\n- __`font.frozen` (function)__\n- __`font.getcopy` (function)__\n- __`font.getfont` (function)__\n- __`font.getparameters` (function)__\n- __`font.id` (function)__\n- __`font.max` (function)__\n- __`font.nextid` (function)__\n- __`font.originaleach` (function)__\n- __`font.read_tfm` (function)__\n- __`font.read_vf` (function)__\n- __`font.setexpansion` (function)__\n- __`font.setfont` (function)__\n\n### fontloader\n\n- __`fontloader.apply_afmfile` (function)__\n- __`fontloader.apply_featurefile` (function)__\n- __`fontloader.close` (function)__\n- __`fontloader.fields` (function)__\n- __`fontloader.info` (function)__\n- __`fontloader.open` (function)__\n- __`fontloader.to_table` (function)__\n\n### fonts\n\n- *`fonts.analyzers` (table)*\n- *`fonts.cid` (table)*\n- *`fonts.constructors` (table)*\n- *`fonts.definers` (table)*\n- *`fonts.encodings` (table)*\n- *`fonts.expansions` (table)*\n- *`fonts.formats` (table)*\n- *`fonts.handlers` (table)*\n- *`fonts.hashes` (table)*\n- *`fonts.helpers` (table)*\n- *`fonts.loggers` (table)*\n- *`fonts.mappings` (table)*\n- *`fonts.names` (table)*\n- *`fonts.privateoffsets` (table)*\n- *`fonts.protrusions` (table)*\n- *`fonts.readers` (table)*\n- *`fonts.specifiers` (table)*\n- *`fonts.tables` (table)*\n- *`fonts.tracers` (table)*\n\n### functions\n\n- __`functions.dummy` (function)__\n\n### gzip\n\n- __`gzip.close` (function)__\n- __`gzip.compress` (function)__\n- __`gzip.compressed` (function)__\n- __`gzip.decompress` (function)__\n- __`gzip.lines` (function)__\n- __`gzip.load` (function)__\n- __`gzip.open` (function)__\n- __`gzip.save` (function)__\n- __`gzip.suffix` (function)__\n\n### img\n\n- __`img.boxes` (function)__\n- __`img.copy` (function)__\n- __`img.fields` (function)__\n- __`img.immediatewrite` (function)__\n- __`img.immediatewriteobject` (function)__\n- __`img.keys` (function)__\n- __`img.new` (function)__\n- __`img.node` (function)__\n- __`img.scan` (function)__\n- __`img.types` (function)__\n- __`img.write` (function)__\n\n### kpse\n\n- __`kpse.check_permission` (function)__\n- __`kpse.default_texmfcnf` (function)__\n- __`kpse.expand_braces` (function)__\n- __`kpse.expand_path` (function)__\n- __`kpse.expand_var` (function)__\n- __`kpse.find_file` (function)__\n- __`kpse.init_prog` (function)__\n- __`kpse.lookup` (function)__\n- __`kpse.new` (function)__\n- __`kpse.readable_file` (function)__\n- __`kpse.record_input_file` (function)__\n- __`kpse.record_output_file` (function)__\n- __`kpse.set_program_name` (function)__\n- __`kpse.show_path` (function)__\n- __`kpse.var_value` (function)__\n- __`kpse.version` (function)__\n\n### lang\n\n- __`lang.clean` (function)__\n- __`lang.clear_hyphenation` (function)__\n- __`lang.clear_patterns` (function)__\n- __`lang.gethjcode` (function)__\n- __`lang.hyphenate` (function)__\n- __`lang.hyphenation` (function)__\n- __`lang.hyphenationmin` (function)__\n- __`lang.id` (function)__\n- __`lang.new` (function)__\n- __`lang.patterns` (function)__\n- __`lang.postexhyphenchar` (function)__\n- __`lang.posthyphenchar` (function)__\n- __`lang.preexhyphenchar` (function)__\n- __`lang.prehyphenchar` (function)__\n- __`lang.sethjcode` (function)__\n\n### lfs\n\n- `lfs._COPYRIGHT` (string)\n- `lfs._DESCRIPTION` (string)\n- `lfs._VERSION` (string)\n- __`lfs.attributes` (function)__\n- __`lfs.chdir` (function)__\n- __`lfs.currentdir` (function)__\n- __`lfs.dir` (function)__\n- __`lfs.isdir` (function)__\n- __`lfs.isfile` (function)__\n- __`lfs.isfound` (function)__\n- __`lfs.link` (function)__\n- __`lfs.lock` (function)__\n- __`lfs.lock_dir` (function)__\n- __`lfs.mkdir` (function)__\n- __`lfs.mkdirs` (function)__\n- __`lfs.modification` (function)__\n- __`lfs.readlink` (function)__\n- __`lfs.rmdir` (function)__\n- __`lfs.setmode` (function)__\n- __`lfs.shortname` (function)__\n- __`lfs.symlinkattributes` (function)__\n- __`lfs.touch` (function)__\n- __`lfs.unlock` (function)__\n\n### logs\n\n- __`logs.disable` (function)__\n- __`logs.enable` (function)__\n- `logs.name` (string)\n- __`logs.newline` (function)__\n- __`logs.reporter` (function)__\n\n### lpeg\n\n- __`lpeg.B` (function)__\n- __`lpeg.C` (function)__\n- __`lpeg.Carg` (function)__\n- __`lpeg.Cb` (function)__\n- __`lpeg.Cc` (function)__\n- __`lpeg.Cf` (function)__\n- __`lpeg.Cg` (function)__\n- __`lpeg.Cmt` (function)__\n- __`lpeg.Cp` (function)__\n- __`lpeg.Cs` (function)__\n- __`lpeg.Ct` (function)__\n- __`lpeg.P` (function)__\n- __`lpeg.R` (function)__\n- __`lpeg.S` (function)__\n- __`lpeg.UP` (function)__\n- __`lpeg.UR` (function)__\n- __`lpeg.US` (function)__\n- __`lpeg.V` (function)__\n- __`lpeg.afterprefix` (function)__\n- __`lpeg.anywhere` (function)__\n- __`lpeg.append` (function)__\n- __`lpeg.balancer` (function)__\n- __`lpeg.beforesuffix` (function)__\n- __`lpeg.checkedsplit` (function)__\n- __`lpeg.containsws` (function)__\n- __`lpeg.counter` (function)__\n- __`lpeg.endstripper` (function)__\n- __`lpeg.finder` (function)__\n- __`lpeg.firstofsplit` (function)__\n- __`lpeg.frontstripper` (function)__\n- __`lpeg.instringchecker` (function)__\n- __`lpeg.is_lpeg` (function)__\n- __`lpeg.keeper` (function)__\n- __`lpeg.locale` (function)__\n- __`lpeg.match` (function)__\n- __`lpeg.oneof` (function)__\n- *`lpeg.patterns` (table)*\n- __`lpeg.pcode` (function)__\n- __`lpeg.print` (function)__\n- __`lpeg.ptree` (function)__\n- __`lpeg.replacer` (function)__\n- __`lpeg.secondofsplit` (function)__\n- __`lpeg.setmaxstack` (function)__\n- __`lpeg.setutfcasers` (function)__\n- __`lpeg.split` (function)__\n- __`lpeg.splitat` (function)__\n- __`lpeg.splitter` (function)__\n- *`lpeg.splitters` (table)*\n- __`lpeg.stripper` (function)__\n- __`lpeg.times` (function)__\n- __`lpeg.tsplitat` (function)__\n- __`lpeg.tsplitter` (function)__\n- __`lpeg.type` (function)__\n- __`lpeg.utfchartabletopattern` (function)__\n- __`lpeg.utfreplacer` (function)__\n- __`lpeg.version` (function)__\n\n### ltn12\n\n- `ltn12.BLOCKSIZE` (number)\n- *`ltn12._M` (table)*\n- `ltn12._NAME` (string)\n- `ltn12._PACKAGE` (string)\n- `ltn12._VERSION` (string)\n- *`ltn12.filter` (table)*\n- *`ltn12.pump` (table)*\n- *`ltn12.sink` (table)*\n- *`ltn12.source` (table)*\n\n### ltx\n\n- *`ltx.utils` (table)*\n\n### lua\n\n- *`lua.bytecode` (table)*\n- __`lua.get_functions_table` (function)__\n- __`lua.getbytecode` (function)__\n- __`lua.getcalllevel` (function)__\n- __`lua.getcodepage` (function)__\n- __`lua.getluaname` (function)__\n- __`lua.getstacktop` (function)__\n- *`lua.name` (table)*\n- __`lua.newtable` (function)__\n- __`lua.setbytecode` (function)__\n- __`lua.setluaname` (function)__\n- `lua.version` (string)\n\n### luaharfbuzz\n\n- *`luaharfbuzz.Blob` (table)*\n- *`luaharfbuzz.Buffer` (table)*\n- *`luaharfbuzz.Direction` (table)*\n- *`luaharfbuzz.Face` (table)*\n- *`luaharfbuzz.Feature` (table)*\n- *`luaharfbuzz.Font` (table)*\n- *`luaharfbuzz.Language` (table)*\n- *`luaharfbuzz.Script` (table)*\n- *`luaharfbuzz.Tag` (table)*\n- *`luaharfbuzz.Variation` (table)*\n- *`luaharfbuzz.ot` (table)*\n- __`luaharfbuzz.shape_full` (function)__\n- __`luaharfbuzz.shapers` (function)__\n- *`luaharfbuzz.unicode` (table)*\n- __`luaharfbuzz.version` (function)__\n\n### lualibs\n\n- `lualibs.basic_loaded` (boolean)\n- `lualibs.extended_loaded` (boolean)\n- __`lualibs.info` (function)__\n- `lualibs.load_extended` (boolean)\n- __`lualibs.loadmodule` (function)__\n- *`lualibs.module_info` (table)*\n- `lualibs.prefer_merged` (boolean)\n- __`lualibs.warn` (function)__\n\n### luaotfload\n\n- __`luaotfload.add_colorscheme` (function)__\n- __`luaotfload.add_fallback` (function)__\n- __`luaotfload.add_multiscript` (function)__\n- __`luaotfload.apply_default_features` (function)__\n- *`luaotfload.aux` (table)*\n- *`luaotfload.default_config` (table)*\n- __`luaotfload.define_font` (function)__\n- *`luaotfload.features` (table)*\n- *`luaotfload.fontloader` (table)*\n- `luaotfload.fontloader_package` (string)\n- __`luaotfload.get_script_mark` (function)__\n- *`luaotfload.harf` (table)*\n- *`luaotfload.harfbuzz` (table)*\n- *`luaotfload.letterspace` (table)*\n- *`luaotfload.loaders` (table)*\n- *`luaotfload.log` (table)*\n- __`luaotfload.main` (function)__\n- *`luaotfload.parsers` (table)*\n- *`luaotfload.resolvers` (table)*\n- __`luaotfload.set_colorhandler` (function)__\n- __`luaotfload.set_transparent_colorstack` (function)__\n- __`luaotfload.set_transparenthandler` (function)__\n- `luaotfload.version` (string)\n\n### luatexbase\n\n- __`luatexbase.add_to_callback` (function)__\n- *`luatexbase.attributes` (table)*\n- __`luatexbase.call_callback` (function)__\n- __`luatexbase.callback_descriptions` (function)__\n- *`luatexbase.callbacktypes` (table)*\n- __`luatexbase.create_callback` (function)__\n- __`luatexbase.declare_callback_rule` (function)__\n- __`luatexbase.disable_callback` (function)__\n- __`luatexbase.in_callback` (function)__\n- __`luatexbase.module_error` (function)__\n- __`luatexbase.module_info` (function)__\n- __`luatexbase.module_warning` (function)__\n- __`luatexbase.new_attribute` (function)__\n- __`luatexbase.new_bytecode` (function)__\n- __`luatexbase.new_chunkname` (function)__\n- __`luatexbase.new_luafunction` (function)__\n- __`luatexbase.new_whatsit` (function)__\n- __`luatexbase.provides_module` (function)__\n- __`luatexbase.registernumber` (function)__\n- __`luatexbase.remove_from_callback` (function)__\n- __`luatexbase.uninstall` (function)__\n\n### mbox\n\n- __`mbox.parse` (function)__\n- __`mbox.parse_from` (function)__\n- __`mbox.parse_header` (function)__\n- __`mbox.parse_headers` (function)__\n- __`mbox.parse_message` (function)__\n- __`mbox.split_headers` (function)__\n- __`mbox.split_mbox` (function)__\n- __`mbox.split_message` (function)__\n\n### md5\n\n- __`md5.HEX` (function)__\n- __`md5.crypt` (function)__\n- __`md5.dec` (function)__\n- __`md5.decrypt` (function)__\n- __`md5.exor` (function)__\n- __`md5.hex` (function)__\n- __`md5.sum` (function)__\n- __`md5.sumHEXA` (function)__\n- __`md5.sumhexa` (function)__\n\n### mime\n\n- `mime._VERSION` (string)\n- __`mime.b64` (function)__\n- __`mime.decode` (function)__\n- *`mime.decodet` (table)*\n- __`mime.dot` (function)__\n- __`mime.encode` (function)__\n- *`mime.encodet` (table)*\n- __`mime.eol` (function)__\n- __`mime.normalize` (function)__\n- __`mime.qp` (function)__\n- __`mime.qpwrp` (function)__\n- __`mime.stuff` (function)__\n- __`mime.unb64` (function)__\n- __`mime.unqp` (function)__\n- __`mime.wrap` (function)__\n- *`mime.wrapt` (table)*\n- __`mime.wrp` (function)__\n\n### modules\n\n- *`modules.data-con` (table)*\n- *`modules.font-afk` (table)*\n- *`modules.font-cff` (table)*\n- *`modules.font-cid` (table)*\n- *`modules.font-con` (table)*\n- *`modules.font-def` (table)*\n- *`modules.font-dsp` (table)*\n- *`modules.font-imp-effects` (table)*\n- *`modules.font-imp-italics` (table)*\n- *`modules.font-imp-ligatures` (table)*\n- *`modules.font-imp-tex` (table)*\n- *`modules.font-ini` (table)*\n- *`modules.font-lua` (table)*\n- *`modules.font-map` (table)*\n- *`modules.font-ocl` (table)*\n- *`modules.font-one` (table)*\n- *`modules.font-onr` (table)*\n- *`modules.font-osd` (table)*\n- *`modules.font-ota` (table)*\n- *`modules.font-otc` (table)*\n- *`modules.font-oti` (table)*\n- *`modules.font-otj` (table)*\n- *`modules.font-otl` (table)*\n- *`modules.font-oto` (table)*\n- *`modules.font-otr` (table)*\n- *`modules.font-ots` (table)*\n- *`modules.font-ott` (table)*\n- *`modules.font-oup` (table)*\n- *`modules.font-shp` (table)*\n- *`modules.font-ttf` (table)*\n- *`modules.font-vfc` (table)*\n- *`modules.l-boolean` (table)*\n- *`modules.l-dir` (table)*\n- *`modules.l-file` (table)*\n- *`modules.l-functions` (table)*\n- *`modules.l-io` (table)*\n- *`modules.l-lpeg` (table)*\n- *`modules.l-lua` (table)*\n- *`modules.l-math` (table)*\n- *`modules.l-md5` (table)*\n- *`modules.l-number` (table)*\n- *`modules.l-os` (table)*\n- *`modules.l-package` (table)*\n- *`modules.l-set` (table)*\n- *`modules.l-string` (table)*\n- *`modules.l-table` (table)*\n- *`modules.l-unicode` (table)*\n- *`modules.l-url` (table)*\n- *`modules.luat-basics-gen` (table)*\n- *`modules.luatex-font-enc` (table)*\n- *`modules.luatex-font-mis` (table)*\n- *`modules.luatex-fonts-def` (table)*\n- *`modules.luatex-fonts-ext` (table)*\n- *`modules.luatex-fonts-gbn` (table)*\n- *`modules.luatex-fonts-nod` (table)*\n- *`modules.luatex-fonts-tfm` (table)*\n- *`modules.trac-inf` (table)*\n- *`modules.util-deb` (table)*\n- *`modules.util-dim` (table)*\n- *`modules.util-fil` (table)*\n- *`modules.util-jsn` (table)*\n- *`modules.util-lua` (table)*\n- *`modules.util-prs` (table)*\n- *`modules.util-sac` (table)*\n- *`modules.util-sta` (table)*\n- *`modules.util-sto` (table)*\n- *`modules.util-str` (table)*\n- *`modules.util-tab` (table)*\n- *`modules.util-tpl` (table)*\n- *`modules.util-zip` (table)*\n\n### mplib\n\n- __`mplib.char_depth` (function)__\n- __`mplib.char_height` (function)__\n- __`mplib.char_width` (function)__\n- __`mplib.execute` (function)__\n- __`mplib.fields` (function)__\n- __`mplib.finish` (function)__\n- __`mplib.get_boolean` (function)__\n- __`mplib.get_number` (function)__\n- __`mplib.get_numeric` (function)__\n- __`mplib.get_path` (function)__\n- __`mplib.get_string` (function)__\n- __`mplib.new` (function)__\n- __`mplib.pen_info` (function)__\n- __`mplib.solve_path` (function)__\n- __`mplib.statistics` (function)__\n- __`mplib.version` (function)__\n\n### node\n\n- __`node.check_discretionaries` (function)__\n- __`node.check_discretionary` (function)__\n- __`node.copy` (function)__\n- __`node.copy_list` (function)__\n- __`node.count` (function)__\n- __`node.current_attr` (function)__\n- __`node.dimensions` (function)__\n- *`node.direct` (table)*\n- __`node.effective_glue` (function)__\n- __`node.end_of_math` (function)__\n- __`node.family_font` (function)__\n- __`node.fields` (function)__\n- __`node.find_attribute` (function)__\n- __`node.first_glyph` (function)__\n- __`node.fix_node_lists` (function)__\n- __`node.flatten_discretionaries` (function)__\n- __`node.flush_list` (function)__\n- __`node.flush_node` (function)__\n- __`node.flush_properties_table` (function)__\n- __`node.free` (function)__\n- __`node.get_attribute` (function)__\n- __`node.get_properties_table` (function)__\n- __`node.getboth` (function)__\n- __`node.getchar` (function)__\n- __`node.getdisc` (function)__\n- __`node.getfield` (function)__\n- __`node.getfont` (function)__\n- __`node.getglue` (function)__\n- __`node.getid` (function)__\n- __`node.getleader` (function)__\n- __`node.getlist` (function)__\n- __`node.getnext` (function)__\n- __`node.getprev` (function)__\n- __`node.getproperty` (function)__\n- __`node.getsubtype` (function)__\n- __`node.getwhd` (function)__\n- __`node.has_attribute` (function)__\n- __`node.has_field` (function)__\n- __`node.has_glyph` (function)__\n- __`node.hpack` (function)__\n- __`node.hyphenating` (function)__\n- __`node.id` (function)__\n- __`node.insert_after` (function)__\n- __`node.insert_before` (function)__\n- __`node.is_char` (function)__\n- __`node.is_glyph` (function)__\n- __`node.is_node` (function)__\n- __`node.is_zero_glue` (function)__\n- __`node.kerning` (function)__\n- __`node.last_node` (function)__\n- __`node.length` (function)__\n- __`node.ligaturing` (function)__\n- __`node.make_extensible` (function)__\n- __`node.mlist_to_hlist` (function)__\n- __`node.new` (function)__\n- __`node.next` (function)__\n- __`node.prepend_prevdepth` (function)__\n- __`node.prev` (function)__\n- __`node.protect_glyph` (function)__\n- __`node.protect_glyphs` (function)__\n- __`node.protrusion_skippable` (function)__\n- __`node.rangedimensions` (function)__\n- __`node.remove` (function)__\n- __`node.set_attribute` (function)__\n- __`node.set_properties_mode` (function)__\n- __`node.setfield` (function)__\n- __`node.setglue` (function)__\n- __`node.setproperty` (function)__\n- __`node.slide` (function)__\n- __`node.subtype` (function)__\n- __`node.subtypes` (function)__\n- __`node.tail` (function)__\n- __`node.tostring` (function)__\n- __`node.traverse` (function)__\n- __`node.traverse_char` (function)__\n- __`node.traverse_glyph` (function)__\n- __`node.traverse_id` (function)__\n- __`node.traverse_list` (function)__\n- __`node.type` (function)__\n- __`node.types` (function)__\n- __`node.unprotect_glyph` (function)__\n- __`node.unprotect_glyphs` (function)__\n- __`node.unset_attribute` (function)__\n- __`node.usedlist` (function)__\n- __`node.uses_font` (function)__\n- __`node.values` (function)__\n- __`node.vpack` (function)__\n- __`node.whatsits` (function)__\n- __`node.write` (function)__\n\n### nodes\n\n- *`nodes.dirvalues` (table)*\n- *`nodes.disccodes` (table)*\n- *`nodes.glyphcodes` (table)*\n- *`nodes.handlers` (table)*\n- *`nodes.injections` (table)*\n- *`nodes.nodecodes` (table)*\n- *`nodes.nuts` (table)*\n- *`nodes.properties` (table)*\n- __`nodes.simple_font_handler` (function)__\n- __`nodes.tonode` (function)__\n- __`nodes.tonut` (function)__\n\n### pdf\n\n- __`pdf.fontname` (function)__\n- __`pdf.fontobjnum` (function)__\n- __`pdf.fontsize` (function)__\n- __`pdf.getcatalog` (function)__\n- __`pdf.getcompresslevel` (function)__\n- __`pdf.getcreationdate` (function)__\n- __`pdf.getdecimaldigits` (function)__\n- __`pdf.getdestmargin` (function)__\n- __`pdf.getfontname` (function)__\n- __`pdf.getfontobjnum` (function)__\n- __`pdf.getfontsize` (function)__\n- __`pdf.getgentounicode` (function)__\n- __`pdf.gethpos` (function)__\n- __`pdf.getignoreunknownimages` (function)__\n- __`pdf.getimageresolution` (function)__\n- __`pdf.getinclusionerrorlevel` (function)__\n- __`pdf.getinfo` (function)__\n- __`pdf.getlastannot` (function)__\n- __`pdf.getlastlink` (function)__\n- __`pdf.getlastobj` (function)__\n- __`pdf.getlinkmargin` (function)__\n- __`pdf.getmajorversion` (function)__\n- __`pdf.getmatrix` (function)__\n- __`pdf.getmaxobjnum` (function)__\n- __`pdf.getminorversion` (function)__\n- __`pdf.getnames` (function)__\n- __`pdf.getnofobjects` (function)__\n- __`pdf.getobjcompresslevel` (function)__\n- __`pdf.getobjtype` (function)__\n- __`pdf.getomitcharset` (function)__\n- __`pdf.getomitcidset` (function)__\n- __`pdf.getorigin` (function)__\n- __`pdf.getpageattributes` (function)__\n- __`pdf.getpageref` (function)__\n- __`pdf.getpageresources` (function)__\n- __`pdf.getpagesattributes` (function)__\n- __`pdf.getpkresolution` (function)__\n- __`pdf.getpos` (function)__\n- __`pdf.getrecompress` (function)__\n- __`pdf.getretval` (function)__\n- __`pdf.getsuppressoptionalinfo` (function)__\n- __`pdf.getthreadmargin` (function)__\n- __`pdf.gettrailer` (function)__\n- __`pdf.gettrailerid` (function)__\n- __`pdf.getvpos` (function)__\n- __`pdf.getxformattributes` (function)__\n- __`pdf.getxformmargin` (function)__\n- __`pdf.getxformname` (function)__\n- __`pdf.getxformresources` (function)__\n- __`pdf.hasmatrix` (function)__\n- __`pdf.immediateobj` (function)__\n- __`pdf.includechar` (function)__\n- __`pdf.includefont` (function)__\n- __`pdf.includeimage` (function)__\n- __`pdf.mapfile` (function)__\n- __`pdf.mapline` (function)__\n- __`pdf.maxobjnum` (function)__\n- __`pdf.newcolorstack` (function)__\n- __`pdf.obj` (function)__\n- __`pdf.objtype` (function)__\n- __`pdf.pageref` (function)__\n- __`pdf.print` (function)__\n- __`pdf.refobj` (function)__\n- __`pdf.registerannot` (function)__\n- __`pdf.reserveobj` (function)__\n- __`pdf.setcatalog` (function)__\n- __`pdf.setcompresslevel` (function)__\n- __`pdf.setdecimaldigits` (function)__\n- __`pdf.setdestmargin` (function)__\n- __`pdf.setfontattributes` (function)__\n- __`pdf.setforcefile` (function)__\n- __`pdf.setgentounicode` (function)__\n- __`pdf.setignoreunknownimages` (function)__\n- __`pdf.setimageresolution` (function)__\n- __`pdf.setinclusionerrorlevel` (function)__\n- __`pdf.setinfo` (function)__\n- __`pdf.setlinkmargin` (function)__\n- __`pdf.setmajorversion` (function)__\n- __`pdf.setminorversion` (function)__\n- __`pdf.setnames` (function)__\n- __`pdf.setobjcompresslevel` (function)__\n- __`pdf.setomitcharset` (function)__\n- __`pdf.setomitcidset` (function)__\n- __`pdf.setorigin` (function)__\n- __`pdf.setpageattributes` (function)__\n- __`pdf.setpageresources` (function)__\n- __`pdf.setpagesattributes` (function)__\n- __`pdf.setpkresolution` (function)__\n- __`pdf.setrecompress` (function)__\n- __`pdf.setsuppressoptionalinfo` (function)__\n- __`pdf.setthreadmargin` (function)__\n- __`pdf.settrailer` (function)__\n- __`pdf.settrailerid` (function)__\n- __`pdf.settypeonewidemode` (function)__\n- __`pdf.setxformattributes` (function)__\n- __`pdf.setxformmargin` (function)__\n- __`pdf.setxformresources` (function)__\n- __`pdf.xformname` (function)__\n\n### pdfe\n\n- __`pdfe.arraytotable` (function)__\n- __`pdfe.close` (function)__\n- __`pdfe.closestream` (function)__\n- __`pdfe.dictionarytotable` (function)__\n- __`pdfe.getarray` (function)__\n- __`pdfe.getboolean` (function)__\n- __`pdfe.getbox` (function)__\n- __`pdfe.getcatalog` (function)__\n- __`pdfe.getdictionary` (function)__\n- __`pdfe.getfromarray` (function)__\n- __`pdfe.getfromdictionary` (function)__\n- __`pdfe.getfromreference` (function)__\n- __`pdfe.getfromstream` (function)__\n- __`pdfe.getinfo` (function)__\n- __`pdfe.getinteger` (function)__\n- __`pdfe.getmemoryusage` (function)__\n- __`pdfe.getname` (function)__\n- __`pdfe.getnofobjects` (function)__\n- __`pdfe.getnofpages` (function)__\n- __`pdfe.getnumber` (function)__\n- __`pdfe.getpage` (function)__\n- __`pdfe.getpages` (function)__\n- __`pdfe.getsize` (function)__\n- __`pdfe.getstatus` (function)__\n- __`pdfe.getstream` (function)__\n- __`pdfe.getstring` (function)__\n- __`pdfe.gettrailer` (function)__\n- __`pdfe.getversion` (function)__\n- __`pdfe.new` (function)__\n- __`pdfe.open` (function)__\n- __`pdfe.openstream` (function)__\n- __`pdfe.pagestotable` (function)__\n- __`pdfe.readfromstream` (function)__\n- __`pdfe.readwholestream` (function)__\n- __`pdfe.type` (function)__\n- __`pdfe.unencrypt` (function)__\n\n### pdfscanner\n\n- __`pdfscanner.scan` (function)__\n\n### set\n\n- __`set.contains` (function)__\n- __`set.create` (function)__\n- __`set.tolist` (function)__\n- __`set.tonumber` (function)__\n- __`set.totable` (function)__\n\n### sha2\n\n- __`sha2.digest256` (function)__\n- __`sha2.digest384` (function)__\n- __`sha2.digest512` (function)__\n\n### sio\n\n- __`sio.read2dot14` (function)__\n- __`sio.readbytes` (function)__\n- __`sio.readbytetable` (function)__\n- __`sio.readcardinal1` (function)__\n- __`sio.readcardinal1le` (function)__\n- __`sio.readcardinal2` (function)__\n- __`sio.readcardinal2le` (function)__\n- __`sio.readcardinal3` (function)__\n- __`sio.readcardinal3le` (function)__\n- __`sio.readcardinal4` (function)__\n- __`sio.readcardinal4le` (function)__\n- __`sio.readcardinaltable` (function)__\n- __`sio.readfixed2` (function)__\n- __`sio.readfixed4` (function)__\n- __`sio.readinteger1` (function)__\n- __`sio.readinteger1le` (function)__\n- __`sio.readinteger2` (function)__\n- __`sio.readinteger2le` (function)__\n- __`sio.readinteger3` (function)__\n- __`sio.readinteger3le` (function)__\n- __`sio.readinteger4` (function)__\n- __`sio.readinteger4le` (function)__\n- __`sio.readintegertable` (function)__\n\n### socket\n\n- `socket.BLOCKSIZE` (number)\n- `socket._DATAGRAMSIZE` (number)\n- `socket._DEBUG` (boolean)\n- `socket._SETSIZE` (number)\n- `socket._SOCKETINVALID` (number)\n- `socket._VERSION` (string)\n- __`socket.__unload` (function)__\n- __`socket.bind` (function)__\n- __`socket.choose` (function)__\n- __`socket.connect` (function)__\n- __`socket.connect4` (function)__\n- __`socket.connect6` (function)__\n- *`socket.dns` (table)*\n- *`socket.ftp` (table)*\n- __`socket.gettime` (function)__\n- *`socket.headers` (table)*\n- *`socket.http` (table)*\n- __`socket.newtry` (function)__\n- __`socket.protect` (function)__\n- __`socket.select` (function)__\n- __`socket.sink` (function)__\n- *`socket.sinkt` (table)*\n- __`socket.skip` (function)__\n- __`socket.sleep` (function)__\n- *`socket.smtp` (table)*\n- __`socket.source` (function)__\n- *`socket.sourcet` (table)*\n- __`socket.tcp` (function)__\n- __`socket.tcp4` (function)__\n- __`socket.tcp6` (function)__\n- *`socket.tp` (table)*\n- __`socket.try` (function)__\n- __`socket.udp` (function)__\n- __`socket.udp4` (function)__\n- __`socket.udp6` (function)__\n- *`socket.url` (table)*\n\n### statistics\n\n- __`statistics.benchmarktimer` (function)__\n- __`statistics.currenttime` (function)__\n- __`statistics.elapsed` (function)__\n- __`statistics.elapsedindeed` (function)__\n- __`statistics.elapsedseconds` (function)__\n- __`statistics.elapsedtime` (function)__\n- `statistics.enable` (boolean)\n- __`statistics.formatruntime` (function)__\n- __`statistics.hastiming` (function)__\n- __`statistics.memused` (function)__\n- __`statistics.register` (function)__\n- __`statistics.resettiming` (function)__\n- __`statistics.runtime` (function)__\n- __`statistics.show` (function)__\n- __`statistics.starttiming` (function)__\n- __`statistics.stoptiming` (function)__\n- `statistics.threshold` (number)\n- __`statistics.timed` (function)__\n- __`statistics.tracefunction` (function)__\n\n### status\n\n- __`status.list` (function)__\n- __`status.resetmessages` (function)__\n- __`status.setexitcode` (function)__\n\n### tex\n\n- *`tex.attribute` (table)*\n- __`tex.badness` (function)__\n- *`tex.box` (table)*\n- *`tex.catcode` (table)*\n- *`tex.count` (table)*\n- __`tex.cprint` (function)__\n- __`tex.definefont` (function)__\n- *`tex.delcode` (table)*\n- *`tex.dimen` (table)*\n- __`tex.enableprimitives` (function)__\n- __`tex.error` (function)__\n- __`tex.extraprimitives` (function)__\n- __`tex.finish` (function)__\n- __`tex.fontidentifier` (function)__\n- __`tex.fontname` (function)__\n- __`tex.force_synctex_line` (function)__\n- __`tex.force_synctex_tag` (function)__\n- __`tex.forcehmode` (function)__\n- __`tex.get` (function)__\n- __`tex.get_synctex_line` (function)__\n- __`tex.get_synctex_mode` (function)__\n- __`tex.get_synctex_tag` (function)__\n- __`tex.getattribute` (function)__\n- __`tex.getbox` (function)__\n- __`tex.getboxresourcebox` (function)__\n- __`tex.getboxresourcedimensions` (function)__\n- __`tex.getcatcode` (function)__\n- __`tex.getcount` (function)__\n- __`tex.getdelcode` (function)__\n- __`tex.getdelcodes` (function)__\n- __`tex.getdimen` (function)__\n- __`tex.getfontoffamily` (function)__\n- __`tex.getglue` (function)__\n- __`tex.getlccode` (function)__\n- __`tex.getlist` (function)__\n- __`tex.getlocallevel` (function)__\n- __`tex.getmark` (function)__\n- __`tex.getmath` (function)__\n- __`tex.getmathcode` (function)__\n- __`tex.getmathcodes` (function)__\n- __`tex.getmodevalues` (function)__\n- __`tex.getmuglue` (function)__\n- __`tex.getmuskip` (function)__\n- __`tex.getnest` (function)__\n- __`tex.getpagestate` (function)__\n- __`tex.getsfcode` (function)__\n- __`tex.getskip` (function)__\n- __`tex.gettoks` (function)__\n- __`tex.getuccode` (function)__\n- *`tex.glue` (table)*\n- __`tex.hashtokens` (function)__\n- __`tex.init_rand` (function)__\n- __`tex.isattribute` (function)__\n- __`tex.isbox` (function)__\n- __`tex.iscount` (function)__\n- __`tex.isdimen` (function)__\n- __`tex.isglue` (function)__\n- __`tex.ismuglue` (function)__\n- __`tex.ismuskip` (function)__\n- __`tex.isskip` (function)__\n- __`tex.istoks` (function)__\n- *`tex.lccode` (table)*\n- __`tex.linebreak` (function)__\n- *`tex.lists` (table)*\n- __`tex.lua_math_random` (function)__\n- __`tex.lua_math_randomseed` (function)__\n- *`tex.mathcode` (table)*\n- *`tex.muglue` (table)*\n- *`tex.muskip` (table)*\n- *`tex.nest` (table)*\n- __`tex.normal_rand` (function)__\n- __`tex.number` (function)__\n- __`tex.primitives` (function)__\n- __`tex.print` (function)__\n- __`tex.quittoks` (function)__\n- __`tex.resetparagraph` (function)__\n- __`tex.romannumeral` (function)__\n- __`tex.round` (function)__\n- __`tex.run` (function)__\n- __`tex.runtoks` (function)__\n- __`tex.saveboxresource` (function)__\n- __`tex.scale` (function)__\n- __`tex.scantoks` (function)__\n- __`tex.set` (function)__\n- __`tex.set_synctex_line` (function)__\n- __`tex.set_synctex_mode` (function)__\n- __`tex.set_synctex_no_files` (function)__\n- __`tex.set_synctex_tag` (function)__\n- __`tex.setattribute` (function)__\n- __`tex.setbox` (function)__\n- __`tex.setcatcode` (function)__\n- __`tex.setcount` (function)__\n- __`tex.setdelcode` (function)__\n- __`tex.setdimen` (function)__\n- __`tex.setglue` (function)__\n- __`tex.setlccode` (function)__\n- __`tex.setlist` (function)__\n- __`tex.setmath` (function)__\n- __`tex.setmathcode` (function)__\n- __`tex.setmuglue` (function)__\n- __`tex.setmuskip` (function)__\n- __`tex.setnest` (function)__\n- __`tex.setsfcode` (function)__\n- __`tex.setskip` (function)__\n- __`tex.settoks` (function)__\n- __`tex.setuccode` (function)__\n- *`tex.sfcode` (table)*\n- __`tex.shipout` (function)__\n- __`tex.show_context` (function)__\n- *`tex.skip` (table)*\n- __`tex.sp` (function)__\n- __`tex.splitbox` (function)__\n- __`tex.sprint` (function)__\n- *`tex.toks` (table)*\n- __`tex.tprint` (function)__\n- __`tex.triggerbuildpage` (function)__\n- *`tex.uccode` (table)*\n- __`tex.uniform_rand` (function)__\n- __`tex.uniformdeviate` (function)__\n- __`tex.useboxresource` (function)__\n- __`tex.write` (function)__\n\n### texconfig\n\n- `texconfig.kpse_init` (boolean)\n\n### texio\n\n- __`texio.closeinput` (function)__\n- __`texio.reporter` (function)__\n- __`texio.setescape` (function)__\n- __`texio.write` (function)__\n- __`texio.write_nl` (function)__\n\n### token\n\n- __`token.biggest_char` (function)__\n- __`token.command_id` (function)__\n- __`token.commands` (function)__\n- __`token.create` (function)__\n- __`token.expand` (function)__\n- __`token.get_active` (function)__\n- __`token.get_cmdname` (function)__\n- __`token.get_command` (function)__\n- __`token.get_csname` (function)__\n- __`token.get_expandable` (function)__\n- __`token.get_id` (function)__\n- __`token.get_index` (function)__\n- __`token.get_macro` (function)__\n- __`token.get_meaning` (function)__\n- __`token.get_mode` (function)__\n- __`token.get_next` (function)__\n- __`token.get_protected` (function)__\n- __`token.get_tok` (function)__\n- __`token.is_defined` (function)__\n- __`token.is_token` (function)__\n- __`token.new` (function)__\n- __`token.put_next` (function)__\n- __`token.scan_argument` (function)__\n- __`token.scan_code` (function)__\n- __`token.scan_csname` (function)__\n- __`token.scan_dimen` (function)__\n- __`token.scan_float` (function)__\n- __`token.scan_glue` (function)__\n- __`token.scan_int` (function)__\n- __`token.scan_keyword` (function)__\n- __`token.scan_keyword_cs` (function)__\n- __`token.scan_list` (function)__\n- __`token.scan_real` (function)__\n- __`token.scan_string` (function)__\n- __`token.scan_token` (function)__\n- __`token.scan_toks` (function)__\n- __`token.scan_word` (function)__\n- __`token.set_char` (function)__\n- __`token.set_lua` (function)__\n- __`token.set_macro` (function)__\n- __`token.type` (function)__\n\n### trackers\n\n- __`trackers.disable` (function)__\n- __`trackers.enable` (function)__\n- `trackers.name` (string)\n- __`trackers.newline` (function)__\n- __`trackers.register` (function)__\n\n### unicode\n\n- *`unicode.ascii` (table)*\n- *`unicode.grapheme` (table)*\n- *`unicode.latin1` (table)*\n- *`unicode.utf8` (table)*\n\n### url\n\n- __`url.addscheme` (function)__\n- __`url.barepath` (function)__\n- __`url.construct` (function)__\n- __`url.decode` (function)__\n- __`url.encode` (function)__\n- __`url.escape` (function)__\n- __`url.filename` (function)__\n- __`url.hashed` (function)__\n- __`url.hasscheme` (function)__\n- __`url.query` (function)__\n- __`url.split` (function)__\n- __`url.toquery` (function)__\n- __`url.unescape` (function)__\n- __`url.unescapeget` (function)__\n\n### utf\n\n- __`utf.byte` (function)__\n- __`utf.char` (function)__\n- __`utf.characters` (function)__\n- __`utf.chrlen` (function)__\n- __`utf.count` (function)__\n- __`utf.filetype` (function)__\n- __`utf.is_valid` (function)__\n- __`utf.len` (function)__\n- __`utf.length` (function)__\n- __`utf.lower` (function)__\n- __`utf.magic` (function)__\n- __`utf.remapper` (function)__\n- __`utf.replacer` (function)__\n- __`utf.split` (function)__\n- __`utf.splitlines` (function)__\n- __`utf.sub` (function)__\n- __`utf.subtituter` (function)__\n- __`utf.tocodes` (function)__\n- __`utf.toeight` (function)__\n- __`utf.toentities` (function)__\n- __`utf.totable` (function)__\n- __`utf.toutf32string` (function)__\n- __`utf.upper` (function)__\n- __`utf.ustring` (function)__\n- __`utf.utf16_to_utf8_be` (function)__\n- __`utf.utf16_to_utf8_be_t` (function)__\n- __`utf.utf16_to_utf8_le` (function)__\n- __`utf.utf16_to_utf8_le_t` (function)__\n- __`utf.utf16_to_utf8_t` (function)__\n- __`utf.utf32_to_utf8_be` (function)__\n- __`utf.utf32_to_utf8_be_t` (function)__\n- __`utf.utf32_to_utf8_le` (function)__\n- __`utf.utf32_to_utf8_le_t` (function)__\n- __`utf.utf32_to_utf8_t` (function)__\n- __`utf.utf8_to_utf16` (function)__\n- __`utf.utf8_to_utf16_be` (function)__\n- __`utf.utf8_to_utf16_le` (function)__\n- __`utf.utf8_to_utf8_t` (function)__\n- __`utf.values` (function)__\n- __`utf.xstring` (function)__\n\n### utilities\n\n- *`utilities.debugger` (table)*\n- *`utilities.files` (table)*\n- *`utilities.json` (table)*\n- *`utilities.lua` (table)*\n- *`utilities.parsers` (table)*\n- *`utilities.stacker` (table)*\n- *`utilities.storage` (table)*\n- *`utilities.streams` (table)*\n- *`utilities.strings` (table)*\n- *`utilities.tables` (table)*\n- *`utilities.templates` (table)*\n- *`utilities.zipfiles` (table)*\n\n### vf\n\n- __`vf.char` (function)__\n- __`vf.down` (function)__\n- __`vf.fontid` (function)__\n- __`vf.image` (function)__\n- __`vf.node` (function)__\n- __`vf.nop` (function)__\n- __`vf.pdf` (function)__\n- __`vf.pop` (function)__\n- __`vf.push` (function)__\n- __`vf.right` (function)__\n- __`vf.rule` (function)__\n- __`vf.special` (function)__\n\n### xzip\n\n- __`xzip.adler32` (function)__\n- __`xzip.compress` (function)__\n- __`xzip.compressobj` (function)__\n- __`xzip.crc32` (function)__\n- __`xzip.decompress` (function)__\n- __`xzip.decompressobj` (function)__\n- __`xzip.version` (function)__\n\n### zip\n\n- `zip._COPYRIGHT` (string)\n- `zip._DESCRIPTION` (string)\n- `zip._VERSION` (string)\n- __`zip.close` (function)__\n- __`zip.open` (function)__\n- __`zip.openfile` (function)__\n- __`zip.type` (function)__\n\n### zlib\n\n- __`zlib.adler32` (function)__\n- __`zlib.compress` (function)__\n- __`zlib.compressobj` (function)__\n- __`zlib.crc32` (function)__\n- __`zlib.decompress` (function)__\n- __`zlib.decompressobj` (function)__\n- __`zlib.version` (function)__\n\n\n```lua\nlocal function printf(s, ...) print(string.format(s, ...)) end\n\nlocal function sort_keys(t)\n    local keys = {}\n    for k in pairs(t) do table.insert(keys, k) end\n    table.sort(keys)\n    return keys\nend\n\nlocal function print_lib_members(lib_name, lib)\n    local member_names = sort_keys(lib)\n    for _, member in ipairs(member_names) do\n        local member_type = type(lib[member])\n        if member_type == 'table' then\n            printf('- *`%s.%s` (%s)*', lib_name, member, member_type)\n        elseif member_type == 'function' then\n            printf('- __`%s.%s` (%s)__', lib_name, member, member_type)\n        else\n            printf('- `%s.%s` (%s)', lib_name, member, member_type)\n        end\n    end\nend\n\nlocal lua_std = {\n    _G = true,\n    boolean = true,\n    coroutine = true,\n    debug = true,\n    io = true,\n    math = true,\n    number = true,\n    os = true,\n    package = true,\n    string = true,\n    table = true,\n    utf8 = true\n}\n\nreturn function()\n    local env = _ENV\n    local lib_names = sort_keys(env)\n    for _, lib_name in ipairs(lib_names) do\n        if not lua_std[lib_name] then\n\n            local lib = env[lib_name]\n            if type(lib) == 'table' then\n                printf('\\n### %s\\n', lib_name)\n                print_lib_members(lib_name, env[lib_name])\n            end\n        end\n    end\nend\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosef-friedrich%2Fluatex_lua-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosef-friedrich%2Fluatex_lua-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosef-friedrich%2Fluatex_lua-api/lists"}