Skip to main content

25.15.7 Converting Between Plain Text and Tables

The command M-x table-capture captures plain text in a region and turns it into a table. Unlike M-x table-recognize (see Table Recognition), the original text does not need to have a table appearance; it only needs to have a logical table-like structure.

For example, suppose we have the following numbers, which are divided into three lines and separated horizontally by commas:

1, 2, 3, 4
5, 6, 7, 8
, 9, 10

Invoking M-x table-capture on that text produces this table:

+-----+-----+-----+-----+
|1 |2 |3 |4 |
+-----+-----+-----+-----+
|5 |6 |7 |8 |
+-----+-----+-----+-----+
| |9 |10 | |
+-----+-----+-----+-----+

M-x table-release does the opposite: it converts a table back to plain text, removing its cell borders.

One application of this pair of commands is to edit a text in layout. Look at the following three paragraphs:

table-capture is a powerful command.
Here are some things it can do:

Parse Cell Items Using row and column delimiter regexps,
it parses the specified text area and
extracts cell items into a table.

Applying table-capture to a region containing the above text, with empty strings for the column and row delimiter regexps, creates a table with a single cell like the following one.

+----------------------------------------------------------+
|table-capture is a powerful command. |
|Here are some things it can do: |
| |
|Parse Cell Items Using row and column delimiter regexps,|
| it parses the specified text area and |
| extracts cell items into a table. |
+----------------------------------------------------------+

We can then use the cell splitting commands (see Cell Commands) to subdivide the table so that each paragraph occupies a cell:

+----------------------------------------------------------+
|table-capture is a powerful command. |
|Here are some things it can do: |
+-----------------+----------------------------------------+
|Parse Cell Items | Using row and column delimiter regexps,|
| | it parses the specified text area and |
| | extracts cell items into a table. |
+-----------------+----------------------------------------+

Each cell can now be edited independently without affecting the layout of other cells. When finished, we can invoke M-x table-release to convert the table back to plain text.