如何在四开文档中插入硬换行符

Hep*_*tus 2 quarto

我正在使用 Quarto 文档准备系统,使用 Python 以编程方式生成大型文档。也就是说,我没有使用 RStudio 或类似的编辑器。所有文本都必须生成为 Python 字符串。

我有一个简单的表格,其中一个单元格有几行内容,我认为我可以在单元格内添加换行符。我知道简单的表格不能包含标准换行符 ( \n),但我想知道是否有一种方法可以在单元格中插入所谓的“硬换行符”。用户手册提到了它们,但指出只有编辑器可以插入它们。是否可以在 Markdown 源文本中使用字符串操作来做到这一点?

除此之外,是否有一种简单的方法可以在表格的单元格内换行?

mar*_*usl 5

RStudio 可视化 Markdown 编辑器生成的四开表格

当涉及到硬换行时,并没有太多的魔力,只是以 结尾的行\
在启用了可视模式的 RStudio 中创建的 QMD 文件,具有常规换行符和硬换行符的(网格)表如下所示:

---
title: "tbl"
format: html
editor: visual
---

+-------+-------------+
| Col1  | Col2        |
+=======+=============+
| press | press\      |
|       | shift+enter |
| enter |             |
+-------+-------------+
|       |             |
+-------+-------------+
Run Code Online (Sandbox Code Playgroud)

所有空格和换行符都位于渲染输出旁边:

在此输入图像描述

虽然 RStudio 可视化编辑器从简单管道表开始,但当它在单元格中遇到换行符或简单管道表不支持的任何其他内容时,它会自动切换到网格表。


Python 和网格样式 Markdown 表格

为了在Python中生成Markdown网格表,tabulate withtablefmt="grid"非常方便。或者pandas.DataFrame.to_markdown()对于 pandas,也构建在tabulate.

from tabulate import tabulate

td = [["press\n\nenter","press\\\nshift+enter"],["no\nbackslash","",]]
hdr = ["Col1", "Col2"]
print(tabulate(td,headers=hdr, tablefmt="grid"))
Run Code Online (Sandbox Code Playgroud)

结果:

+-----------+-------------+
| Col1      | Col2        |
+===========+=============+
| press     | press\      |
|           | shift+enter |
| enter     |             |
+-----------+-------------+
| no        |             |
| backslash |             |
+-----------+-------------+
Run Code Online (Sandbox Code Playgroud)

使用四开渲染: 在此输入图像描述

Pandoc 多行表

无论出于何种原因,Quarto 文档中都没有提到这一点,但 Pandoc 还支持multiline_tables并使用与 RStudio 捆绑在一起的 Quarto 和 Pandoc 渲染它,效果很好,但对于硬换行,它仍然需要\中断之前。Pandoc 文档中的示例稍作修改:

-------------------------------------------------------------
 Centered   Default           Right Left
  Header    Aligned         Aligned Aligned
----------- ------- --------------- -------------------------
   First    row                12.0 Example of\ 
                                    a row that
                                    spans multiple lines.

  Second    row                 5.0 Here's another one. Note
                                    the blank line between
                                    rows.
-------------------------------------------------------------

Table: Here's the caption. It, too, may span\
multiple lines.
Run Code Online (Sandbox Code Playgroud)

呈现为: 在此输入图像描述