如何让Sphinx简单表格列宽匹配最长渲染超链接宽度以避免多余空白?
解决Sphinx简单表格中链接列过宽的问题
嘿,我之前也被这个问题困扰过!Sphinx默认的简单表格(就是你用=和-绘制的那种)确实会把链接的原始Markdown代码长度算进去,导致分隔线要拉得很长,渲染后列里又空出一大块。不过有几个实用的办法可以解决:
方法1:使用Grid Table(完整网格表格)
Grid Table是Sphinx里更灵活的表格格式,你可以手动定义每列的宽度,完全不受原始链接代码长度的影响。举个例子:
+----------------+--------+ | Website | Type | +================+========+ | `Google <https://www.google.com>`__ | Search | +----------------+--------+ | `Yahoo <https://www.yahoo.com>`__ | Search | +----------------+--------+ | `CNN <https://www.cnn.com>`__ | News | +----------------+--------+
这里第一列的分隔线长度(----------------)直接决定了渲染后的列宽,不管你的链接URL有多长,渲染后列只会适配你设置的宽度,而且超链接正常显示。
方法2:给简单表格添加widths属性
如果你不想换表格格式,可以用Sphinx的.. table::指令配合:widths:选项来控制列的相对宽度:
.. table:: :widths: 20 10 =================================== ====== Website Type =================================== ====== `Google <https://www.google.com>`__ Search `Yahoo <https://www.yahoo.com>`__ Search `CNN <https://www.cnn.com>`__ News =================================== ======
:widths: 20 10表示第一列占20份宽度,第二列占10份,Sphinx渲染时会按照这个比例分配列宽,不会再被原始链接代码的长度撑大,列里的空白自然就消失了。
方法3:使用链接引用简化表格内容
你可以先在文档里定义好链接引用,然后在表格里只使用引用标记,这样表格里的内容会短很多,分隔线也不用拉得太长:
.. _google: https://www.google.com .. _yahoo: https://www.yahoo.com .. _cnn: https://www.cnn.com ================= ====== Website Type ================= ====== `Google`_ Search `Yahoo`_ Search `CNN`_ News ================= ======
这种方式下,表格里的内容只有链接文本加引用标记,分隔线只要对齐最长的文本(比如Website)就行,渲染后超链接正常工作,列宽也会完美适配显示的文本宽度。
这三个方法里,我个人最常用Grid Table,因为它的可视化效果最直观,调整宽度也很方便。
内容的提问来源于stack exchange,提问作者Jeremy Jarrell
相关产品推荐
相关产品推荐

