我正在使用 Quarto 文档准备系统,使用 Python 以编程方式生成大型文档。也就是说,我没有使用 RStudio 或类似的编辑器。所有文本都必须生成为 Python 字符串。
我有一个简单的表格,其中一个单元格有几行内容,我认为我可以在单元格内添加换行符。我知道简单的表格不能包含标准换行符 ( \n
),但我想知道是否有一种方法可以在单元格中插入所谓的“硬换行符”。用户手册提到了它们,但指出只有编辑器可以插入它们。是否可以在 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网格表,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)
无论出于何种原因,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)
归档时间: |
|
查看次数: |
5573 次 |
最近记录: |