Kiet Tran
Kiet Tran

Reputation: 1538

Multi-line table cell in reStructuredText?

Is there a way to input a newline into a table cell? For example, say I have a table like this:

+==========+==========+==========+
+ Header 1 + Header 2 + Header 3 +
+==========+==========+==========+
+ Item 1   +          +          +
+ Item 2   +          +          +
+----------+----------+----------+

I want the above to create a table with two rows, three columns, and the second row, first column to display Item 1 and Item 2 on separate lines.

I have tried the line blocks syntax |, but it doesn't work inside a table cell. I can use list syntax, but I don't want bullet points to appear.

Upvotes: 28

Views: 30322

Answers (3)

B.R.
B.R.

Reputation: 334

I use the following syntax to create tables including multiline cells with sphinx:

.. list-table::

 * - **HEADER1**
   - **HEADER2**
   - **HEADER3**
 * - TEXT 1
   - | MULTILINE 
     | TEXT
   - | MULTILINE
     | TEXT 2

I use line blocks with beginning | to preserve the line-breaks.

Upvotes: 13

Tim Hughes
Tim Hughes

Reputation: 3541

You can also leave a gap between the lines like this

+----------+----------+----------+
| Header 1 | Header 2 | Header 3 |
+==========+==========+==========+
| Item 1   |          |          |
|          |          |          |
| Item 2   |          |          |
+----------+----------+----------+

This method tends to be friendlier with editors so they dont think you have accidentally added an extra pipe

Upvotes: 17

Chris
Chris

Reputation: 46316

First of all I think your table syntax is incorrect, should it not be:

+----------+----------+----------+
| Header 1 | Header 2 | Header 3 |
+==========+==========+==========+
| Item 1   |          |          |
| Item 2   |          |          |
+----------+----------+----------+

Note that the top row is made up of hyphens, not equal signs, and the rows are separated by pipes, |, not plus signs.

Now with this table, the line block syntax:

+----------+----------+----------+
| Header 1 | Header 2 | Header 3 |
+==========+==========+==========+
| | Item 1 |          |          |
| | Item 2 |          |          |
+----------+----------+----------+

seems to work: testing with Pandoc the bottom left cell gets transformed into the following HTML:

<td align="left">Item 1<br />Item 2</td>

Note the line break <br /> in between Item 1 and Item 2.

Upvotes: 32

Related Questions