quarto-dev / quarto-dev/quarto-cli
Spike: Port to Confluence Data Center
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 6k
- Forks
- 458
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 41
Description
Attempt to setup a local dev environment for Confluence Data Center.
Testing Notes
- Confluence Docker Container with PostgreSQL 15
- Version:
[Atlassian Confluence](https://www.atlassian.com/software/confluence) 8.3.0-tinymce6-m01. This appears to be the latest version.
Differences
- Diverging CSF between Cloud and Data Center (not formally documented, see below)
- Diverging REST API calls between Cloud and Data Center Limited DC API Reference
- Diverging Authentication Schemes Cloud and Data Center
Performance
- ~6 minutes startup time
- Very slow page loading and navigation
Resources
- https://docs.atlassian.com/ (note I don't see 8.3 listed for docs)
- https://developer.atlassian.com/server/confluence/confluence-server-rest-api/
- https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html
Diverging CSF between Cloud and Data Center
Visual Editor
Cloud
Data Center
3x3 Table CSF Differences
Cloud
<p>Hello World - Cloud</p>
<table data-layout="default" ac:local-id="6dd03c13-cc0e-43d6-ab64-7d0c0f25b56b">
<tbody>
<tr>
<th>
<p /></th>
<th>
<p /></th>
<th>
<p /></th></tr>
<tr>
<td>
<p /></td>
<td>
<p /></td>
<td>
<p /></td></tr>
<tr>
<td>
<p /></td>
<td>
<p /></td>
<td>
<p /></td></tr></tbody></table>
<p />
Data Center
<p>Hello World - Data Center</p>
<p><br /></p>
<table><colgroup><col /><col /><col /></colgroup>
<tbody>
<tr>
<th scope="col"><br /></th>
<th scope="col"><br /></th>
<th scope="col"><br /></th></tr>
<tr>
<td><br /></td>
<td><br /></td>
<td><br /></td></tr>
<tr>
<td><br /></td>
<td><br /></td>
<td><br /></td></tr></tbody></table>
Cloud Quarto-Generated Table CSF Test
<h2>Overview</h2>
<p>Quarto includes a number of features aimed at making it easy to to author and customize markdown table output, including:</p>
<ul>
<li>
<p>Specifying column alignment and widths.</p></li>
<li>
<p>Providing captions, subcaptions, and cross-references.</p></li>
<li>
<p>Generating tables dynamically from executable code cells.</p></li></ul>
<p>This article covers using these features in-depth.</p>
<h2>Markdown Tables</h2>
<p>The most commonly used markdown table is known as a pipe table. Pipe tables support specifying per column alignment as well as captions. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="b3bd32d6-6297-4d36-ad2a-c65a5bade675"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[| Default | Left | Right | Center |
|---------|:-----|------:|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
: Demonstration of pipe table syntax]]></ac:plain-text-body></ac:structured-macro>
<p>Here is the table rendered to HTML:</p>
<table data-layout="default" ac:local-id="089c4898-9a1a-40fc-9911-f71a8141a658"><colgroup><col style="width: 170.0px;" /><col style="width: 170.0px;" /><col style="width: 170.0px;" /><col style="width: 170.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Default</p></th>
<th>
<p>Left</p></th>
<th>
<p style="text-align: right;">Right</p></th>
<th>
<p style="text-align: center;">Center</p></th></tr>
<tr>
<td>
<p>12</p></td>
<td>
<p>12</p></td>
<td>
<p style="text-align: right;">12</p></td>
<td>
<p style="text-align: center;">12</p></td></tr>
<tr>
<td>
<p>123</p></td>
<td>
<p>123</p></td>
<td>
<p style="text-align: right;">123</p></td>
<td>
<p style="text-align: center;">123</p></td></tr>
<tr>
<td>
<p>1</p></td>
<td>
<p>1</p></td>
<td>
<p style="text-align: right;">1</p></td>
<td>
<p style="text-align: center;">1</p></td></tr></tbody></table>
<p>
Demonstration of pipe table syntax
</p>
<p>The beginning and ending pipe characters are optional, but pipes are required between all columns. The colons indicate column alignment as shown. The header cannot be omitted, however you can simulate a headerless table by including a header with blank cells.</p>
<p>Since the pipes indicate column boundaries, columns need not be vertically aligned, as they are in the above example. So, this is a perfectly legal (though ugly) pipe table:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="65d5cb5d-19a7-4020-83b7-e48e0c6b90e1"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[fruit| price
-----|-----:
apple|2.05
pear|1.37
orange|3.09]]></ac:plain-text-body></ac:structured-macro>
<table data-layout="default" ac:local-id="a07f78f0-0858-4726-8860-d4a82476ddbb"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>fruit</p></th>
<th>
<p style="text-align: right;">price</p></th></tr>
<tr>
<td>
<p>apple</p></td>
<td>
<p style="text-align: right;">2.05</p></td></tr>
<tr>
<td>
<p>pear</p></td>
<td>
<p style="text-align: right;">1.37</p></td></tr>
<tr>
<td>
<p>orange</p></td>
<td>
<p style="text-align: right;">3.09</p></td></tr></tbody></table>
<p>The cells of pipe tables cannot contain block elements like paragraphs and lists, and cannot span multiple lines. If a pipe table contains a row whose markdown content is wider than the column width (see <code>columns</code> option), then the table will take up the full text width and the cell contents will wrap, with the relative cell widths determined by the number of dashes in the line separating the table header from the table body.</p>
<p>For example <code>---|-</code> would make the first column 3/4 and the second column 1/4 of the full text width. On the other hand, if no lines are wider than column width, then cell contents will not be wrapped, and the cells will be sized to their contents.</p>
<h3>Authoring</h3>
<p>For simple tables with only a few cells it’s straightforward to create them directly in markdown. As tables get larger, it makes sense to use an authoring tool. Some table authoring tools to consider include:</p>
<table data-layout="default" ac:local-id="7617e19d-8685-4ead-b02e-0048a7745799"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<td>
<p><a href="https://tablesgenerator.com/markdown_tables">TablesGenerator</a></p></td>
<td>
<p>Online tool for generating markdown tables</p></td></tr>
<tr>
<td>
<p><a href="https://www.emacswiki.org/emacs/TableMode">Emacs TableMode</a></p></td>
<td>
<p>Text based table creation and editing capabilities for Emacs.</p></td></tr>
<tr>
<td>
<p><a href="/docs/visual-editor/content.qmd#editing-tables">Quarto Visual Editor</a></p></td>
<td>
<p>Visual editor for <code>.qmd</code> files with table editing support.</p></td></tr></tbody></table>
<h2>Column Widths</h2>
<p><span style="color: rgb(255,165,0);">Not Yet Supported - Confluence parses-out %-based styling when saving to CFT</span> <a href="https://github.com/allenmanning/confluence/issues/24">24</a></p>
<p>Above we describe a means of specifying column widths using the relative number of dashes in each column header (e.g. <code>---|-</code> to get a 75% / 25% split for a two-column table).</p>
<p>You can also explicitly specify columns widths using the <code>tbl-colwidths</code> attribute or document-level option. For an individual markdown table, add the attribute after the caption. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="25862faa-5d7a-43ac-b7be-a23235e0af7f"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[| fruit | price |
|--------|--------|
| apple | 2.05 |
| pear | 1.37 |
| orange | 3.09 |
: Fruit prices {tbl-colwidths="[75,25]"}]]></ac:plain-text-body></ac:structured-macro>
<table data-layout="default" ac:local-id="9c44d28d-5b6c-40bd-84bb-9b570699479d"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>fruit</p></th>
<th>
<p>price</p></th></tr>
<tr>
<td>
<p>apple</p></td>
<td>
<p>2.05</p></td></tr>
<tr>
<td>
<p>pear</p></td>
<td>
<p>1.37</p></td></tr>
<tr>
<td>
<p>orange</p></td>
<td>
<p>3.09</p></td></tr></tbody></table>
<p>
Fruit prices
</p>
<p>If your table doesn’t have a caption, then you can still specify only <code>tbl-colwidths</code>:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="4474222d-7c4e-4318-ab7b-6ca2321bd7c1"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[: {tbl-colwidths="[75,25]"}]]></ac:plain-text-body></ac:structured-macro>
<h2>Cross References</h2>
<p><span style="color: rgb(255,165,0);">Not Yet Supported - Table Cross References</span> <a href="https://github.com/allenmanning/confluence/issues/25">25</a></p>
<p>For tables produced by executable code cells, include a label with a <code>tbl-</code> prefix to make them cross-referenceable. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="ae22fc61-a0b5-4ad5-aa5a-669b8029906b"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{python}
#| label: tbl-planets
#| tbl-cap: Planets
from IPython.display import Markdown
from tabulate import tabulate
table = [["Sun",696000,1989100000],
["Earth",6371,5973.6],
["Moon",1737,73.5],
["Mars",3390,641.85]]
Markdown(tabulate(
table,
headers=["Planet","R (km)", "mass (x 10^29 kg)"]
))
```
]]></ac:plain-text-body></ac:structured-macro>
<table data-layout="default" ac:local-id="da588703-3b80-4546-9a67-6839343bf362"><colgroup><col style="width: 226.67px;" /><col style="width: 226.67px;" /><col style="width: 226.67px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Planet</p></th>
<th>
<p style="text-align: right;">R (km)</p></th>
<th>
<p style="text-align: right;">mass (x 10^29 kg)</p></th></tr>
<tr>
<td>
<p>Sun</p></td>
<td>
<p style="text-align: right;">696000</p></td>
<td>
<p style="text-align: right;">1.9891e+09</p></td></tr>
<tr>
<td>
<p>Earth</p></td>
<td>
<p style="text-align: right;">6371</p></td>
<td>
<p style="text-align: right;">5973.6</p></td></tr>
<tr>
<td>
<p>Moon</p></td>
<td>
<p style="text-align: right;">1737</p></td>
<td>
<p style="text-align: right;">73.5</p></td></tr>
<tr>
<td>
<p>Mars</p></td>
<td>
<p style="text-align: right;">3390</p></td>
<td>
<p style="text-align: right;">641.85</p></td></tr></tbody></table>
<p>
Table 1: Planets
</p>
<p>For markdown tables, add a caption below the table, then include a <code>#tbl-</code> label in braces at the end of the caption. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="bb6269c4-8dea-49c8-8292-b3ecaafdd8fd"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[| Col1 | Col2 | Col3 |
|------|------|------|
| A | B | C |
| E | F | G |
| A | G | G |
: My Caption {#tbl-letters}
See @tbl-letters.]]></ac:plain-text-body></ac:structured-macro>
<p>Which looks like this when rendered to HTML:</p>
<table data-layout="default" ac:local-id="b6d5ad50-57be-4e66-b609-cc19b15adb84"><colgroup><col style="width: 226.67px;" /><col style="width: 226.67px;" /><col style="width: 226.67px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Col1</p></th>
<th>
<p>Col2</p></th>
<th>
<p>Col3</p></th></tr>
<tr>
<td>
<p>A</p></td>
<td>
<p>B</p></td>
<td>
<p>C</p></td></tr>
<tr>
<td>
<p>E</p></td>
<td>
<p>F</p></td>
<td>
<p>G</p></td></tr>
<tr>
<td>
<p>A</p></td>
<td>
<p>G</p></td>
<td>
<p>G</p></td></tr></tbody></table>
<p>
Table 2: My Caption
</p>
<p>See <a href="/wiki/download/attachments/32964644/Table%C2%A02?api=v2">#tbl-letters</a>.</p>
<h3>Subtables</h3>
<p>You may want to create a composition of several sub-tables. To do this, create a div with a main identifier, then apply sub-identifiers (and optional caption text) to the contained tables. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="8c910d2d-9941-47fa-b66d-9386044b7168"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[::: {#tbl-panel layout-ncol=2}
| Col1 | Col2 | Col3 |
|------|------|------|
| A | B | C |
| E | F | G |
| A | G | G |
: First Table {#tbl-first}
| Col1 | Col2 | Col3 |
|------|------|------|
| A | B | C |
| E | F | G |
| A | G | G |
: Second Table {#tbl-second}
Main Caption
:::
See @tbl-panel for details, especially @tbl-second.]]></ac:plain-text-body></ac:structured-macro>
<p>Which looks like this when rendered to HTML:</p>
<table data-layout="default" ac:local-id="640b2608-cfd9-4784-b178-dd703e42d185"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<td>
<table style="width: 98.0%;">
<colgroup>
<col style="width: 32.0%;" />
<col style="width: 32.0%;" />
<col style="width: 32.0%;" />
</colgroup>
<thead>
<tr class="header">
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>A</td>
<td>B</td>
<td>C</td>
</tr>
<tr class="even">
<td>E</td>
<td>F</td>
<td>G</td>
</tr>
<tr class="odd">
<td>A</td>
<td>G</td>
<td>G</td>
</tr>
</tbody>
</table>
<p style="text-align: center;">
(a) First Table
</p></td>
<td>
<table style="width: 98.0%;">
<colgroup>
<col style="width: 32.0%;" />
<col style="width: 32.0%;" />
<col style="width: 32.0%;" />
</colgroup>
<thead>
<tr class="header">
<th>Col1</th>
<th>Col2</th>
<th>Col3</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>A</td>
<td>B</td>
<td>C</td>
</tr>
<tr class="even">
<td>E</td>
<td>F</td>
<td>G</td>
</tr>
<tr class="odd">
<td>A</td>
<td>G</td>
<td>G</td>
</tr>
</tbody>
</table>
<p style="text-align: center;">
(b) Second Table
</p></td></tr></tbody></table>
<p>Table 3: Main Caption</p>
<p>See <a href="/wiki/download/attachments/32964644/Table%C2%A03?api=v2">#tbl-panel</a> for details, especially <a>#tbl-second</a>.</p>
<p>Note that the “Main Caption” for the table is provided as the last block within the containing div.</p>
<h2>Caption Location</h2>
<p><span style="color: rgb(255,165,0);">Not Yet Supported - Caption Location</span> <a href="https://github.com/allenmanning/confluence/issues/26">26</a></p>
<p>By default, table captions are positioned above tables. You can modify this behavior using the <code>tbl-cap-location</code> option. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="c742d22e-bb21-4008-a6b2-55db138ce7ff"><ac:parameter ac:name="language">yaml</ac:parameter><ac:plain-text-body><![CDATA[---
tbl-cap-location: top
---]]></ac:plain-text-body></ac:structured-macro>
<p>Note that this option is specified at the top level so that it can be shared by both PDF and HTML formats. If you are only targeting a single format you can place it alongside other <code>format</code> specific options.</p>
<p>Valid values for the caption location include:</p>
<table data-layout="default" ac:local-id="612768bf-83eb-4a7c-bbb6-afe6fe9f9130"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Value</p></th>
<th>
<p>Description</p></th></tr>
<tr>
<td>
<p><code>top</code></p></td>
<td>
<p>Position the caption above the table.</p></td></tr>
<tr>
<td>
<p><code>bottom</code></p></td>
<td>
<p>Position the caption below the table.</p></td></tr>
<tr>
<td>
<p><code>margin</code></p></td>
<td>
<p>Position the caption in the margin.</p></td></tr></tbody></table>
<p>See the article on <a href="article-layout.qmd#margin-captions">Article Layout</a> for additional details on placing captions in the margin.</p>
<h2>Computations</h2>
<p>All of the options described above work for tables produced by executable code cells. For example, here we use the Python <a href="https://pypi.org/project/tabulate/">tabulate</a> package along with the <code>Markdown()</code> function from the IPython <a href="https://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html#">display</a> module to print a markdown table:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="5eaa6853-402f-49d0-bbc2-0606e4a2bb4b"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{python}
#| label: tbl-planet-measures
#| tbl-cap: Planets
from IPython.display import Markdown
from tabulate import tabulate
table = [["Sun",696000,1989100000],
["Earth",6371,5973.6],
["Moon",1737,73.5],
["Mars",3390,641.85]]
Markdown(tabulate(
table,
headers=["Planet","R (km)", "mass (x 10^29 kg)"]
))
```
]]></ac:plain-text-body></ac:structured-macro>
<table data-layout="default" ac:local-id="daa933db-11ad-46b2-880f-451525c6bed8"><colgroup><col style="width: 107.0px;" /><col style="width: 399.0px;" /><col style="width: 253.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Planet</p></th>
<th>
<p style="text-align: right;">R (km)</p></th>
<th>
<p style="text-align: right;">mass (x 10^29 kg)</p></th></tr>
<tr>
<td>
<p>Sun</p></td>
<td>
<p style="text-align: right;">696000</p></td>
<td>
<p style="text-align: right;">1.9891e+09</p></td></tr>
<tr>
<td>
<p>Earth</p></td>
<td>
<p style="text-align: right;">6371</p></td>
<td>
<p style="text-align: right;">5973.6</p></td></tr>
<tr>
<td>
<p>Moon</p></td>
<td>
<p style="text-align: right;">1737</p></td>
<td>
<p style="text-align: right;">73.5</p></td></tr>
<tr>
<td>
<p>Mars</p></td>
<td>
<p style="text-align: right;">3390</p></td>
<td>
<p style="text-align: right;">641.85</p></td></tr></tbody></table>
<p>
Table 4: Planets
</p>
<p>Here we apply the <code>tbl-cap</code> and <code>tbl-colwidths</code> options to a code cell that uses the knitr <code>kable()</code> function to write a markdown table:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="420e61e1-ba15-4faf-9a8f-57c0f0a921f0"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{r}
#| label: tbl-cars
#| tbl-cap: "Cars"
#| tbl-colwidths: [60,40]
library(knitr)
kable(head(cars))
```]]></ac:plain-text-body></ac:structured-macro>
<p>If your code cell produces multiple tables, you can also specify subcaptions and layout using cell options:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="e93c7f19-c10b-4bf2-a9a4-00b4e90927f1"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{r}
#| label: tbl-example
#| tbl-cap: "Example"
#| tbl-subcap:
#| - "Cars"
#| - "Pressure"
#| layout-ncol: 2
#| echo: fenced
library(knitr)
kable(head(cars))
kable(head(pressure))
```]]></ac:plain-text-body></ac:structured-macro>
<h2>Grid Tables</h2>
<p>Grid tables are a more advanced type of markdown tables that allow arbitrary block elements (multiple paragraphs, code blocks, lists, etc.). For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="6eddf26a-9810-477f-a9b3-de2e3d67618d"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[+---------------+---------------+--------------------+
| Fruit | Price | Advantages |
+===============+===============+====================+
| Bananas | $1.34 | - built-in wrapper |
| | | - bright color |
+---------------+---------------+--------------------+
| Oranges | $2.10 | - cures scurvy |
| | | - tasty |
+---------------+---------------+--------------------+
: Sample grid table.]]></ac:plain-text-body></ac:structured-macro>
<p>The row of <code>=</code>s separates the header from the table body, and can be omitted for a headerless table. Cells that span multiple columns or rows are not supported.</p>
<p>This is what the table looks like when rendered to markdown:</p>
<table data-layout="full-width" ac:local-id="39a920dc-f4fd-43ab-9238-7b8406a4903c"><colgroup><col style="width: 214.02px;" /><col style="width: 214.02px;" /><col style="width: 301.57px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Fruit</p></th>
<th>
<p>Price</p></th>
<th>
<p>Advantages</p></th></tr>
<tr>
<td>
<p>Bananas</p></td>
<td>
<p>$1.34</p></td>
<td>
<ul>
<li>
<p>built-in wrapper</p></li>
<li>
<p>bright color</p></li></ul></td></tr>
<tr>
<td>
<p>Oranges</p></td>
<td>
<p>$2.10</p></td>
<td>
<ul>
<li>
<p>cures scurvy</p></li>
<li>
<p>tasty</p></li></ul></td></tr></tbody></table>
<p>
Sample grid table.
</p>
<p>Alignments can be specified as with pipe tables, by putting colons at the boundaries of the separator line after the header:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="fb2f6f88-095f-4086-b0af-494cdc8a8400"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[+---------------+---------------+--------------------+
| Right | Left | Centered |
+==============:+:==============+:==================:+
| Bananas | $1.34 | built-in wrapper |
+---------------+---------------+--------------------+]]></ac:plain-text-body></ac:structured-macro>
<table data-layout="wide" ac:local-id="bf1ce2b6-76c3-480e-a45f-218502f24f18"><colgroup><col style="width: 208.38px;" /><col style="width: 208.38px;" /><col style="width: 274.69px;" /></colgroup>
<tbody>
<tr>
<th>
<p style="text-align: right;">Right</p></th>
<th>
<p>Left</p></th>
<th>
<p style="text-align: center;">Centered</p></th></tr>
<tr>
<td>
<p style="text-align: right;">Bananas</p></td>
<td>
<p>$1.34</p></td>
<td>
<p style="text-align: center;">built-in wrapper</p></td></tr></tbody></table>
<p>For headerless tables, the colons go on the top line instead:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="30d85944-ceff-41a8-830d-766e3b65a529"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[+--------------:+:--------------+:------------------:+
| Right | Left | Centered |
+---------------+---------------+--------------------+]]></ac:plain-text-body></ac:structured-macro>
<table data-layout="wide" ac:local-id="391f234b-aa13-4261-bcbd-1daeda0e0457"><colgroup><col style="width: 208.38px;" /><col style="width: 208.38px;" /><col style="width: 274.69px;" /></colgroup>
<tbody>
<tr>
<td>
<p style="text-align: right;">Right</p></td>
<td>
<p>Left</p></td>
<td>
<p style="text-align: center;">Centered</p></td></tr></tbody></table>
<p>Note that grid tables are quite awkward to write with a plain text editor (because unlike pipe tables, the column indicators must align). Here are some tools that can assist with creating grid tables:</p>
<ul>
<li>
<p>Emacs’ <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Text-Based-Tables.html">table-mode</a> (<code>M-x table-insert</code>)</p></li>
<li>
<p>Quarto <a href="https://quarto.org/docs/visual-editor/content.html#editing-tables">Visual Editor</a></p></li></ul>
In Data Center using a Source Editor plugin, attempt to paste in the same CSF.
Result:
- Visual editor seems to render it.
- Failure on save:
Generic error: {"readyState":4,"responseText":"{\"statusCode\":400,\"data\":{\"authorized\":true,\"valid\":false,\"allowedInReadOnlyMode\":true,\"errors\":[{\"message\":{\"key\":\"xhtml.editor.parse.failed\",\"args\":[\"7\",\"214\",\"Undeclared namespace prefix "ac" (for attribute "local-id")\\n at [row,col {unknown-source}]: [7,214]\"]}}],\"successful\":false},\"message\":\"Validation failure when converting format\",\"reason\":\"Bad Request\"}","responseJSON":{"statusCode":400,"data":{"authorized":true,"valid":false,"allowedInReadOnlyMode":true,"errors":[{"message":{"key":"xhtml.editor.parse.failed","args":["7","214","Undeclared namespace prefix "ac" (for attribute "local-id")\n at [row,col {unknown-source}]: [7,214]"]}}],"successful":false},"message":"Validation failure when converting format","reason":"Bad Request"},"status":400,"statusText":"error"}
Seems to be an unsupported CSF entity, which suggests an older CSF and editor version.
After the error, cancelling and re-editing allowed it to be saved with some issues...
Converted Data Center Storage format after an attempted save of cloud CSF, fail save, exit, and re-edit.
<h2>Overview</h2>
<p>Quarto includes a number of features aimed at making it easy to to author and customize markdown table output, including:</p>
<ul>
<li>
<p>Specifying column alignment and widths.</p></li>
<li>
<p>Providing captions, subcaptions, and cross-references.</p></li>
<li>
<p>Generating tables dynamically from executable code cells.</p></li></ul>
<p>This article covers using these features in-depth.</p>
<h2>Markdown Tables</h2>
<p>The most commonly used markdown table is known as a pipe table. Pipe tables support specifying per column alignment as well as captions. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="b3bd32d6-6297-4d36-ad2a-c65a5bade675"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[| Default | Left | Right | Center |
|---------|:-----|------:|:------:|
| 12 | 12 | 12 | 12 |
| 123 | 123 | 123 | 123 |
| 1 | 1 | 1 | 1 |
: Demonstration of pipe table syntax]]></ac:plain-text-body></ac:structured-macro>
<p>Here is the table rendered to HTML:</p>
<table class="wrapped"><colgroup><col style="width: 170.0px;" /><col style="width: 170.0px;" /><col style="width: 170.0px;" /><col style="width: 170.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Default</p></th>
<th>
<p>Left</p></th>
<th>
<p style="text-align: right;">Right</p></th>
<th>
<p style="text-align: center;">Center</p></th></tr>
<tr>
<td>
<p>12</p></td>
<td>
<p>12</p></td>
<td>
<p style="text-align: right;">12</p></td>
<td>
<p style="text-align: center;">12</p></td></tr>
<tr>
<td>
<p>123</p></td>
<td>
<p>123</p></td>
<td>
<p style="text-align: right;">123</p></td>
<td>
<p style="text-align: center;">123</p></td></tr>
<tr>
<td>
<p>1</p></td>
<td>
<p>1</p></td>
<td>
<p style="text-align: right;">1</p></td>
<td>
<p style="text-align: center;">1</p></td></tr></tbody></table>
<p>Demonstration of pipe table syntax</p>
<p>The beginning and ending pipe characters are optional, but pipes are required between all columns. The colons indicate column alignment as shown. The header cannot be omitted, however you can simulate a headerless table by including a header with blank cells.</p>
<p>Since the pipes indicate column boundaries, columns need not be vertically aligned, as they are in the above example. So, this is a perfectly legal (though ugly) pipe table:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="65d5cb5d-19a7-4020-83b7-e48e0c6b90e1"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[fruit| price
-----|-----:
apple|2.05
pear|1.37
orange|3.09]]></ac:plain-text-body></ac:structured-macro>
<table class="wrapped"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>fruit</p></th>
<th>
<p style="text-align: right;">price</p></th></tr>
<tr>
<td>
<p>apple</p></td>
<td>
<p style="text-align: right;">2.05</p></td></tr>
<tr>
<td>
<p>pear</p></td>
<td>
<p style="text-align: right;">1.37</p></td></tr>
<tr>
<td>
<p>orange</p></td>
<td>
<p style="text-align: right;">3.09</p></td></tr></tbody></table>
<p>The cells of pipe tables cannot contain block elements like paragraphs and lists, and cannot span multiple lines. If a pipe table contains a row whose markdown content is wider than the column width (see <code>columns</code> option), then the table will take up the full text width and the cell contents will wrap, with the relative cell widths determined by the number of dashes in the line separating the table header from the table body.</p>
<p>For example <code>---|-</code> would make the first column 3/4 and the second column 1/4 of the full text width. On the other hand, if no lines are wider than column width, then cell contents will not be wrapped, and the cells will be sized to their contents.</p>
<h3>Authoring</h3>
<p>For simple tables with only a few cells it’s straightforward to create them directly in markdown. As tables get larger, it makes sense to use an authoring tool. Some table authoring tools to consider include:</p>
<table class="wrapped"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<td>
<p><a href="https://tablesgenerator.com/markdown_tables">TablesGenerator</a></p></td>
<td>
<p>Online tool for generating markdown tables</p></td></tr>
<tr>
<td>
<p><a href="https://www.emacswiki.org/emacs/TableMode">Emacs TableMode</a></p></td>
<td>
<p>Text based table creation and editing capabilities for Emacs.</p></td></tr>
<tr>
<td>
<p><a href="http://localhost:8090/docs/visual-editor/content.qmd#editing-tables">Quarto Visual Editor</a></p></td>
<td>
<p>Visual editor for <code>.qmd</code> files with table editing support.</p></td></tr></tbody></table>
<h2>Column Widths</h2>
<p><span style="color: rgb(255,165,0);">Not Yet Supported - Confluence parses-out %-based styling when saving to CFT</span> <a href="https://github.com/allenmanning/confluence/issues/24">24</a></p>
<p>Above we describe a means of specifying column widths using the relative number of dashes in each column header (e.g. <code>---|-</code> to get a 75% / 25% split for a two-column table).</p>
<p>You can also explicitly specify columns widths using the <code>tbl-colwidths</code> attribute or document-level option. For an individual markdown table, add the attribute after the caption. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="25862faa-5d7a-43ac-b7be-a23235e0af7f"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[| fruit | price |
|--------|--------|
| apple | 2.05 |
| pear | 1.37 |
| orange | 3.09 |
: Fruit prices {tbl-colwidths="[75,25]"}]]></ac:plain-text-body></ac:structured-macro>
<table class="wrapped"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>fruit</p></th>
<th>
<p>price</p></th></tr>
<tr>
<td>
<p>apple</p></td>
<td>
<p>2.05</p></td></tr>
<tr>
<td>
<p>pear</p></td>
<td>
<p>1.37</p></td></tr>
<tr>
<td>
<p>orange</p></td>
<td>
<p>3.09</p></td></tr></tbody></table>
<p>Fruit prices</p>
<p>If your table doesn’t have a caption, then you can still specify only <code>tbl-colwidths</code>:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="4474222d-7c4e-4318-ab7b-6ca2321bd7c1"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[: {tbl-colwidths="[75,25]"}]]></ac:plain-text-body></ac:structured-macro>
<h2>Cross References</h2>
<p><span style="color: rgb(255,165,0);">Not Yet Supported - Table Cross References</span> <a href="https://github.com/allenmanning/confluence/issues/25">25</a></p>
<p>For tables produced by executable code cells, include a label with a <code>tbl-</code> prefix to make them cross-referenceable. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="ae22fc61-a0b5-4ad5-aa5a-669b8029906b"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{python}
#| label: tbl-planets
#| tbl-cap: Planets
from IPython.display import Markdown
from tabulate import tabulate
table = [["Sun",696000,1989100000],
["Earth",6371,5973.6],
["Moon",1737,73.5],
["Mars",3390,641.85]]
Markdown(tabulate(
table,
headers=["Planet","R (km)", "mass (x 10^29 kg)"]
))
```
]]></ac:plain-text-body></ac:structured-macro>
<table class="wrapped"><colgroup><col style="width: 226.67px;" /><col style="width: 226.67px;" /><col style="width: 226.67px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Planet</p></th>
<th>
<p style="text-align: right;">R (km)</p></th>
<th>
<p style="text-align: right;">mass (x 10^29 kg)</p></th></tr>
<tr>
<td>
<p>Sun</p></td>
<td>
<p style="text-align: right;">696000</p></td>
<td>
<p style="text-align: right;">1.9891e+09</p></td></tr>
<tr>
<td>
<p>Earth</p></td>
<td>
<p style="text-align: right;">6371</p></td>
<td>
<p style="text-align: right;">5973.6</p></td></tr>
<tr>
<td>
<p>Moon</p></td>
<td>
<p style="text-align: right;">1737</p></td>
<td>
<p style="text-align: right;">73.5</p></td></tr>
<tr>
<td>
<p>Mars</p></td>
<td>
<p style="text-align: right;">3390</p></td>
<td>
<p style="text-align: right;">641.85</p></td></tr></tbody></table>
<p>Table 1: Planets</p>
<p>For markdown tables, add a caption below the table, then include a <code>#tbl-</code> label in braces at the end of the caption. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="bb6269c4-8dea-49c8-8292-b3ecaafdd8fd"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[| Col1 | Col2 | Col3 |
|------|------|------|
| A | B | C |
| E | F | G |
| A | G | G |
: My Caption {#tbl-letters}
See @tbl-letters.]]></ac:plain-text-body></ac:structured-macro>
<p>Which looks like this when rendered to HTML:</p>
<table class="wrapped"><colgroup><col style="width: 226.67px;" /><col style="width: 226.67px;" /><col style="width: 226.67px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Col1</p></th>
<th>
<p>Col2</p></th>
<th>
<p>Col3</p></th></tr>
<tr>
<td>
<p>A</p></td>
<td>
<p>B</p></td>
<td>
<p>C</p></td></tr>
<tr>
<td>
<p>E</p></td>
<td>
<p>F</p></td>
<td>
<p>G</p></td></tr>
<tr>
<td>
<p>A</p></td>
<td>
<p>G</p></td>
<td>
<p>G</p></td></tr></tbody></table>
<p>Table 2: My Caption</p>
<p>See <a href="http://localhost:8090/wiki/download/attachments/32964644/Table%C2%A02?api=v2">#tbl-letters</a>.</p>
<h3>Subtables</h3>
<p>You may want to create a composition of several sub-tables. To do this, create a div with a main identifier, then apply sub-identifiers (and optional caption text) to the contained tables. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="8c910d2d-9941-47fa-b66d-9386044b7168"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[::: {#tbl-panel layout-ncol=2}
| Col1 | Col2 | Col3 |
|------|------|------|
| A | B | C |
| E | F | G |
| A | G | G |
: First Table {#tbl-first}
| Col1 | Col2 | Col3 |
|------|------|------|
| A | B | C |
| E | F | G |
| A | G | G |
: Second Table {#tbl-second}
Main Caption
:::
See @tbl-panel for details, especially @tbl-second.]]></ac:plain-text-body></ac:structured-macro>
<p>Which looks like this when rendered to HTML:</p>
<table class="wrapped"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<td>
<table class="wrapped" style="width: 98.0%;" data-mce-resize="false"><colgroup> <col style="width: 32.0%;" /> <col style="width: 32.0%;" /> <col style="width: 32.0%;" /> </colgroup>
<thead>
<tr class="header">
<th>Col1</th>
<th>Col2</th>
<th>Col3</th></tr></thead>
<tbody>
<tr class="odd">
<td>A</td>
<td>B</td>
<td>C</td></tr>
<tr class="even">
<td>E</td>
<td>F</td>
<td>G</td></tr>
<tr class="odd">
<td>A</td>
<td>G</td>
<td>G</td></tr></tbody></table>
<p style="text-align: center;">(a) First Table</p></td>
<td>
<table class="wrapped" style="width: 98.0%;" data-mce-resize="false"><colgroup> <col style="width: 32.0%;" /> <col style="width: 32.0%;" /> <col style="width: 32.0%;" /> </colgroup>
<thead>
<tr class="header">
<th>Col1</th>
<th>Col2</th>
<th>Col3</th></tr></thead>
<tbody>
<tr class="odd">
<td>A</td>
<td>B</td>
<td>C</td></tr>
<tr class="even">
<td>E</td>
<td>F</td>
<td>G</td></tr>
<tr class="odd">
<td>A</td>
<td>G</td>
<td>G</td></tr></tbody></table>
<p style="text-align: center;">(b) Second Table</p></td></tr></tbody></table>
<p>Table 3: Main Caption</p>
<p>See <a href="http://localhost:8090/wiki/download/attachments/32964644/Table%C2%A03?api=v2">#tbl-panel</a> for details, especially <a>#tbl-second</a>.</p>
<p>Note that the “Main Caption” for the table is provided as the last block within the containing div.</p>
<h2>Caption Location</h2>
<p><span style="color: rgb(255,165,0);">Not Yet Supported - Caption Location</span> <a href="https://github.com/allenmanning/confluence/issues/26">26</a></p>
<p>By default, table captions are positioned above tables. You can modify this behavior using the <code>tbl-cap-location</code> option. For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="c742d22e-bb21-4008-a6b2-55db138ce7ff"><ac:parameter ac:name="language">yaml</ac:parameter><ac:plain-text-body><![CDATA[---
tbl-cap-location: top
---]]></ac:plain-text-body></ac:structured-macro>
<p>Note that this option is specified at the top level so that it can be shared by both PDF and HTML formats. If you are only targeting a single format you can place it alongside other <code>format</code> specific options.</p>
<p>Valid values for the caption location include:</p>
<table class="wrapped"><colgroup><col style="width: 340.0px;" /><col style="width: 340.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Value</p></th>
<th>
<p>Description</p></th></tr>
<tr>
<td>
<p><code>top</code></p></td>
<td>
<p>Position the caption above the table.</p></td></tr>
<tr>
<td>
<p><code>bottom</code></p></td>
<td>
<p>Position the caption below the table.</p></td></tr>
<tr>
<td>
<p><code>margin</code></p></td>
<td>
<p>Position the caption in the margin.</p></td></tr></tbody></table>
<p>See the article on <a href="http://localhost:8090/article-layout.qmd#margin-captions">Article Layout</a> for additional details on placing captions in the margin.</p>
<h2>Computations</h2>
<p>All of the options described above work for tables produced by executable code cells. For example, here we use the Python <a href="https://pypi.org/project/tabulate/">tabulate</a> package along with the <code>Markdown()</code> function from the IPython <a href="https://ipython.readthedocs.io/en/stable/api/generated/IPython.display.html">display</a> module to print a markdown table:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="5eaa6853-402f-49d0-bbc2-0606e4a2bb4b"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{python}
#| label: tbl-planet-measures
#| tbl-cap: Planets
from IPython.display import Markdown
from tabulate import tabulate
table = [["Sun",696000,1989100000],
["Earth",6371,5973.6],
["Moon",1737,73.5],
["Mars",3390,641.85]]
Markdown(tabulate(
table,
headers=["Planet","R (km)", "mass (x 10^29 kg)"]
))
```
]]></ac:plain-text-body></ac:structured-macro>
<table class="wrapped"><colgroup><col style="width: 107.0px;" /><col style="width: 399.0px;" /><col style="width: 253.0px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Planet</p></th>
<th>
<p style="text-align: right;">R (km)</p></th>
<th>
<p style="text-align: right;">mass (x 10^29 kg)</p></th></tr>
<tr>
<td>
<p>Sun</p></td>
<td>
<p style="text-align: right;">696000</p></td>
<td>
<p style="text-align: right;">1.9891e+09</p></td></tr>
<tr>
<td>
<p>Earth</p></td>
<td>
<p style="text-align: right;">6371</p></td>
<td>
<p style="text-align: right;">5973.6</p></td></tr>
<tr>
<td>
<p>Moon</p></td>
<td>
<p style="text-align: right;">1737</p></td>
<td>
<p style="text-align: right;">73.5</p></td></tr>
<tr>
<td>
<p>Mars</p></td>
<td>
<p style="text-align: right;">3390</p></td>
<td>
<p style="text-align: right;">641.85</p></td></tr></tbody></table>
<p>Table 4: Planets</p>
<p>Here we apply the <code>tbl-cap</code> and <code>tbl-colwidths</code> options to a code cell that uses the knitr <code>kable()</code> function to write a markdown table:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="420e61e1-ba15-4faf-9a8f-57c0f0a921f0"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{r}
#| label: tbl-cars
#| tbl-cap: "Cars"
#| tbl-colwidths: [60,40]
library(knitr)
kable(head(cars))
```]]></ac:plain-text-body></ac:structured-macro>
<p>If your code cell produces multiple tables, you can also specify subcaptions and layout using cell options:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="e93c7f19-c10b-4bf2-a9a4-00b4e90927f1"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[```{r}
#| label: tbl-example
#| tbl-cap: "Example"
#| tbl-subcap:
#| - "Cars"
#| - "Pressure"
#| layout-ncol: 2
#| echo: fenced
library(knitr)
kable(head(cars))
kable(head(pressure))
```]]></ac:plain-text-body></ac:structured-macro>
<h2>Grid Tables</h2>
<p>Grid tables are a more advanced type of markdown tables that allow arbitrary block elements (multiple paragraphs, code blocks, lists, etc.). For example:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="6eddf26a-9810-477f-a9b3-de2e3d67618d"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[+---------------+---------------+--------------------+
| Fruit | Price | Advantages |
+===============+===============+====================+
| Bananas | $1.34 | - built-in wrapper |
| | | - bright color |
+---------------+---------------+--------------------+
| Oranges | $2.10 | - cures scurvy |
| | | - tasty |
+---------------+---------------+--------------------+
: Sample grid table.]]></ac:plain-text-body></ac:structured-macro>
<p>The row of <code>=</code>s separates the header from the table body, and can be omitted for a headerless table. Cells that span multiple columns or rows are not supported.</p>
<p>This is what the table looks like when rendered to markdown:</p>
<table class="wrapped"><colgroup><col style="width: 214.02px;" /><col style="width: 214.02px;" /><col style="width: 301.57px;" /></colgroup>
<tbody>
<tr>
<th>
<p>Fruit</p></th>
<th>
<p>Price</p></th>
<th>
<p>Advantages</p></th></tr>
<tr>
<td>
<p>Bananas</p></td>
<td>
<p>$1.34</p></td>
<td>
<ul>
<li>
<p>built-in wrapper</p></li>
<li>
<p>bright color</p></li></ul></td></tr>
<tr>
<td>
<p>Oranges</p></td>
<td>
<p>$2.10</p></td>
<td>
<ul>
<li>
<p>cures scurvy</p></li>
<li>
<p>tasty</p></li></ul></td></tr></tbody></table>
<p>Sample grid table.</p>
<p>Alignments can be specified as with pipe tables, by putting colons at the boundaries of the separator line after the header:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="fb2f6f88-095f-4086-b0af-494cdc8a8400"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[+---------------+---------------+--------------------+
| Right | Left | Centered |
+==============:+:==============+:==================:+
| Bananas | $1.34 | built-in wrapper |
+---------------+---------------+--------------------+]]></ac:plain-text-body></ac:structured-macro>
<table class="wrapped"><colgroup><col style="width: 208.38px;" /><col style="width: 208.38px;" /><col style="width: 274.69px;" /></colgroup>
<tbody>
<tr>
<th>
<p style="text-align: right;">Right</p></th>
<th>
<p>Left</p></th>
<th>
<p style="text-align: center;">Centered</p></th></tr>
<tr>
<td>
<p style="text-align: right;">Bananas</p></td>
<td>
<p>$1.34</p></td>
<td>
<p style="text-align: center;">built-in wrapper</p></td></tr></tbody></table>
<p>For headerless tables, the colons go on the top line instead:</p><ac:structured-macro ac:name="code" ac:schema-version="1" ac:macro-id="30d85944-ceff-41a8-830d-766e3b65a529"><ac:parameter ac:name="language">markdown</ac:parameter><ac:plain-text-body><![CDATA[+--------------:+:--------------+:------------------:+
| Right | Left | Centered |
+---------------+---------------+--------------------+]]></ac:plain-text-body></ac:structured-macro>
<table class="wrapped"><colgroup><col style="width: 208.38px;" /><col style="width: 208.38px;" /><col style="width: 274.69px;" /></colgroup>
<tbody>
<tr>
<td>
<p style="text-align: right;">Right</p></td>
<td>
<p>Left</p></td>
<td>
<p style="text-align: center;">Centered</p></td></tr></tbody></table>
<p>Note that grid tables are quite awkward to write with a plain text editor (because unlike pipe tables, the column indicators must align). Here are some tools that can assist with creating grid tables:</p>
<ul>
<li>
<p>Emacs’ <a href="https://www.gnu.org/software/emacs/manual/html_node/emacs/Text-Based-Tables.html">table-mode</a> (<code>M-x table-insert</code>)</p></li>
<li>
<p>Quarto <a href="https://quarto.org/docs/visual-editor/content.html#editing-tables">Visual Editor</a></p></li></ul>
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No repository files or tests are identified. Start by reviewing the documented Cloud and Data Center REST API, authentication, and CSF differences, then reproduce the local Confluence Docker setup with PostgreSQL; done would require a defined implementation plan or a validated Data Center port.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, postgresql
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100