lua-env Example

Quarto Extension

Introduction

lua-env is an extension for Quarto to provide access to LUA objects as metadata.

This extension gives you access to the quarto object and several Pandoc LUA internal objects using shortcodes.

Installation

quarto add mcanouil/quarto-lua-env

This will install the extension under the _extensions subdirectory.

If you’re using version control, you will want to check in this directory.

Usage

Add the following to your YAML header:

  • Old (<1.8.21):

    filters:
      - quarto
      - lua-env
  • New (>=1.8.21):

    filters:
      - path: lua-env
        at: post-quarto

This enables access to LUA objects using two shortcode formats:

  • /home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd - Direct access via shortcode.
  • /home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd - Access via metadata.

Available LUA Objects

The following LUA objects are available as metadata:

lua-env:
  quarto: "quarto"
  pandoc:
    PANDOC_STATE: "PANDOC_STATE"
    FORMAT: "FORMAT"
    PANDOC_READER_OPTIONS: "PANDOC_READER_OPTIONS"
    PANDOC_WRITER_OPTIONS: "PANDOC_WRITER_OPTIONS"
    PANDOC_VERSION: "PANDOC_VERSION"
    PANDOC_API_VERSION: "PANDOC_API_VERSION"
    PANDOC_SCRIPT_FILE: "PANDOC_SCRIPT_FILE"

See Pandoc LUA API - Global Variables for more information about Pandoc global variables.

Shortcodes

Quarto

{{< lua-env quarto.doc.input_file >}}

/home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd

{{< meta lua-env.quarto.doc.input_file >}}

/home/runner/work/quarto-lua-env/quarto-lua-env/example.qmd

Pandoc

{{< lua-env pandoc.PANDOC_VERSION >}}

3.6.3

{{< meta lua-env.pandoc.PANDOC_VERSION >}}

3.6.3

{{< lua-env pandoc.FORMAT >}}

html

{{< meta lua-env.pandoc.FORMAT >}}

html

JSON Export

This document is configured to export the lua-env metadata to a JSON file.

By default, no JSON file is written (json: false). To enable JSON export, set json: true or provide a custom file path.

The YAML header includes:

extensions:
  lua-env:
    json: true  # Export metadata to lua-env.json

This will create a file named lua-env.json in the same directory as this document, containing all the LUA environment metadata collected during rendering.

You can also specify a custom file path:

extensions:
  lua-env:
    json: "custom-output.json"