> For the complete documentation index, see [llms.txt](https://easycatalog.nousmedis.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://easycatalog.nousmedis.com/setting-up-your-data/field-options/available-field-options/the-format-pane/tabular.md).

# Tabular

The Tabular field allows the creation and insertion of tabular tables from a variety of content types.

This option enables dynamic table creation by parsing structured content from a field. This feature automatically converts delimited text, HTML, XML or JSON data into fully styled EasyCatalog tables.

<figure><img src="https://1939597359-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FazTsFGbHKYYVlYs8LIQv%2Fuploads%2Fsn5FJGtEHbB6ic7g9mHe%2Ffield%20options%20tabular.png?alt=media&amp;token=46d2fce4-0ba3-431c-bdc3-dbb68f57a250" alt=""><figcaption></figcaption></figure>

## Type

### Standard

Creates simple tables by taking basic data from a single field (such as comma-separated values, plain text, or basic HTML tags) and mapping it directly into rows and columns. It works well for straightforward, flat data layouts that do not require complex record linking or advanced automated formatting.

### Enhanced

Unlocks advanced parsing, rendering, and dynamic capabilities:

* **Nested Tabular Fields**: You can nest Enhanced Tabular Fields inside one another to handle multi-level or complex hierarchical data structures.
* **Automated Structure Parsing**: Automatically generates fields and structures directly from structured data formats like JSON and XML.
* **Self-Contained References**: Field names include all the elements required to determine linked content directly, eliminating the need to write separate `Computed Field` formulas.
* **Rich Media & Custom Field Options**: Full support for advanced field types within table cells, including Images, Hyperlinks, and Barcodes.
* **Global Multi-Level Sorting**: Enables global multi-level sorting rules applied directly across the table data.
* **Advanced Table Operations**: Supports selective content filtering, merged table cells, and native InDesign menu actions such as `Replace Fields` and `Update Document → Panel Selection`.

## Source

Specifies the origin of the data used to generate the tabular table.

* **Field Content:** Generates the tabular table using structured or delimited data stored directly inside a specific field of the current record.
* **Data Source**: Generates the tabular table by pulling records directly from a panel—either the active Data Source panel or an alternate loaded Data Source panel.
* **Command Script**: Calls a LUA based script via the EasyCatalog custom command `GROUPSCRIPT` to create the tabular table.

## Field content type

Under `Field Content`, select the option that matches the data format stored in your source field:

* **Delimited Text**: Parses fields containing structured row/column separators (e.g., CSV or tab-delimited text). Allows custom definitions for Row, Column, and Paragraph delimiters.
* **HTML**: Parses standard HTML table tags (`<table>`, `<tr>`, `<td>`) stored inside the field and converts them directly into styled InDesign tables.
* **XML**: Uses an XSL transformation (XSLT) to parse XML content stored within the field and map it to an InDesign table layout.
* **JSON**: Automatically extracts structured JSON arrays or objects stored in the field to generate dynamic table rows and columns.

## Configure

When `Field Content Type` is set to `Delimited Text`, clicking the `Configure` button opens settings for defining the characters used to split your data into rows and columns.

* **Row Delimiter**: Defines where each table row ends. In standard CSV or text data, this is typically set to `^n` (New Line / Return) or `^p` (New paragraph).
* **Column Delimiter**: Defines where each table cell/column splits. In CSV data, this is typically set to a comma `,` (or a tab `^t` for tab-delimited text).

Here is an example walkthrough using a CSV type field:

{% stepper %}
{% step %}

### **Input Data**:&#x20;

Assume the source field contains the following CSV text block:

```
Power,Price,Type
45W,1.19,N
60W,1.49,N
90W,2.19,B
```

{% endstep %}

{% step %}

### Apply delimiters

In the configuration menu, set the Row Delimiter to `^p` and the Column Delimiter to `,`.

<figure><img src="https://1939597359-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FazTsFGbHKYYVlYs8LIQv%2Fuploads%2FUovw78QVC2jWHjX91LKf%2Fdelimited_text_options.png?alt=media&amp;token=be87937e-ba07-41e8-867e-dd777c7480b7" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Panel Preview

EasyCatalog parses the structured string into a 3x3 tabular field structure:

<figure><img src="https://1939597359-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FazTsFGbHKYYVlYs8LIQv%2Fuploads%2FcRdXJaOsqfbllQSfGvkb%2Fdelimited_configured.png?alt=media&amp;token=68b4be95-9bf7-430f-bdf1-579fbb8b15d4" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Setting a header row

To designate the first row of your table as a official InDesign Table Header, you can apply a simple Lua post-processing script. Click the `Additional Processing...` button and enter the following Lua snippet:

`table:setheaderrowcount(1);`

{% hint style="info" %}
**Additional processing** is an optional mechanism to manipulate the source table changing its content and structure through the LUA scripting programming language.
{% endhint %}

Setting a formal header row ensures that when the table paginates or spans across multiple frames or pages, InDesign automatically repeats the header row. It also allows you to assign specific paragraph styles and background fill colors separately from the table body rows.
{% endstep %}
{% endstepper %}

## Column ID and Row ID

Once a table is paginated, EasyCatalog uniquely identifies every cell by combining its Column ID and Row ID.

{% hint style="info" %}
EasyCatalog uses bracket notation (`FieldName[ColumnID][RowID]`) to target specific table cells.
{% endhint %}

#### Default Identification (Index-Based)

If your table does not have a header row, EasyCatalog defaults to zero-based numeric indexes for both columns and rows:

* **Column Index**: Column position starting at `0`.
* **Row Index**: Row position starting at `0`.

*Example:* For a field named Icons, the top-left cell (first column, first row) is referenced as:

```
Icons[0][0]
```

#### Header-Based Identification (Content-Based)

If you have enabled a header row, you can set Column ID to *Column Content (Top)*. EasyCatalog will then use the text in the header cell as the column reference instead of a column number.

*Example:* If the first column header is named `Power`, the cell in the second row (index `1`) under that column is referenced as:

```
Icons[Power][1]
```

## Insert behaviour&#x20;

The *Insert Behaviour* setting determines how EasyCatalog places tabular field content into your InDesign document. Choose from the following options based on your design requirements:

* **Insert Table (Default)**: Generates a standard InDesign table structured with proper columns, rows, and cells.
* **Insert Formatting Rule**: Uses a pre-defined EasyCatalog formatting rule to format the entire table structure.
* **Insert Formatting Rule for Each Row**: Applies a specific formatting rule to each individual row of data, allowing for custom row layouts, anchored frames, or complex inline elements.

{% hint style="info" %}
***Note**: When selecting a formatting rule option, you must specify the Formatting Rule Name and map the corresponding fields used to populate it.*
{% endhint %}

## HTML options

Clicking on the icon circle with 3 dots in it, will open the **HTML Options** menu:

<figure><img src="https://1939597359-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FazTsFGbHKYYVlYs8LIQv%2Fuploads%2FLt30DVKY8xUdXnLb16vq%2FHTML%20options.png?alt=media&amp;token=caaa79a5-b295-40a5-817f-1729f400274e" alt="" width="563"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://easycatalog.nousmedis.com/setting-up-your-data/field-options/available-field-options/the-format-pane/tabular.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
