【问题标题】:Set table column width via Markdown通过 Markdown 设置表格列宽
【发布时间】:2016-03-21 01:10:36
【问题描述】:

我有一个使用Slate 的项目,它允许使用以下格式的表格标记。

Name | Value
-------|-------------------
`Value-One` | Long explanation
`Value-Two` | Long explanation
`etc` | Long explanation

我的问题是第一列呈现得太窄,并且正在包装内容(即将代码值分成两行)而不是在单行上显示它。我的偏好是第一列足够宽以完全显示名称/键,然后第二列可以占用剩余的可用空间。

我的问题是是否可以(以及如何)通过标记设置列宽,或者至少通过标记向表格添加一个类(以便我可以通过 CSS 设置特定表格的样式)。或者有更好的方法吗?我不想用完整的 HTML 写出表格(这是最后的选择)。

【问题讨论】:

  • Slate 在他们的文档中没有提到这样的功能,我不知道有任何 Markdown 表实现提供了这样的功能。我建议将原始 HTML 用于这种控件。
  • HTML 非常完美,而且到处都有生成器。例如:tableconvert.com/?output=html

标签: markdown


【解决方案1】:

我找了很久,终于找到了这个解决方案。 markdown 列的宽度由列中最长的单元格决定,因此可以根据需要多次使用 html 空间实体  来加宽列。 它在编辑模式下看起来很丑,但最终成功了:

Name                                          | Value
-------|-------------------
`Value-One` | Long explanation
`Value-Two` | Long explanation
`etc` | Long explanation

【讨论】:

  • 注意实体之间的空格。没有它们将无法工作:   
  • 用实体之间的空格试过了,看起来不对,去掉空格,效果很好。
  • 这实际上似乎只是将空间分成两行并且没有增加宽度(在 Github 上)
  • 如果您正在处理大于最大宽度的表格并且您试图防止分成多行,请仅使用 (无刹车空间)和普通空格。
  • 使标题居中,在两边添加均匀数量的实体
【解决方案2】:

如果您的 Markdown 风格支持 div 元素和内联 HTML(也在表格中),则该解决方案可以工作:

| <div style="width:290px">property</div> | description                           |
| --------------------------------------- | ------------------------------------- |
| `border-bottom-right-radius`            | Defines the shape of the bottom-right |

好像是 Slate supports inline HTML

【讨论】:

  • 这应该有更多的赞成票!比使用空的 &lt;img&gt; 更清晰,语义更正确,并且与公认的答案不同,可以在 github 风格的降价上工作
  • 这太棒了! +1。使用rmarkdown 创建降价文档(GitHub 风格)时,它令人讨厌地不起作用。 (我在 R 中编码)。我设法用一个 span 元素来完成它,但不是没有将显示设置为“inline-block”:&lt;span style="display: inline-block; width:500px"&gt;text&lt;/span&gt;
  • 解决方案是最小且准确的。谢谢@Karl。
  • 这是杰作
  • 对我不起作用。
【解决方案3】:

简单地添加一个具有预定义宽度的空 &lt;img&gt; 标记对我有用:

|Name|Value|
|----|---------|
|<img width=200/>|<img width=500/>|

大概,它是否有效取决于使用的解析器。以上在 BookStack 中。

事实证明,它还取决于用于查看结果表的浏览器。所以它可能不适用于所有情况。

【讨论】:

  • 这是唯一对我有用的解决方案。另外,我将空的&lt;img&gt;标签放在标题中,在列名旁边,以避免创建空白行。
  • 添加的显示为一个带边框的白框,有什么办法隐藏吗?
  • 你试过 CSS - img { opacity: 0; }。您也可以使用 CSS 来隐藏边框?不过我并没有厌倦它,因为它在我的设置中没有任何 CSS 就可以工作。我使用 BookStack,我相信它使用 Markdown-It。
  • 使用空 div 标签的答案可能比 &lt;img /&gt; 元素更合适。
【解决方案4】:

我不确定这是否适用于您的情况。

您可以尝试将表格包装成 div,然后通过 CSS 设置样式:

<div class="foo">

Header | header
------ | -----
Bar | bar

</div>

CSS:

.foo table {
  styles...
}

应该可以。

希望有所帮助!

【讨论】:

  • @Pawel 的答案很聪明,但这个答案是正确的。我刚刚浪费了 30 分钟的时间,试图在“降价表”中获得看起来不错的东西,这是地狱般的工作。
  • @Seamus 公平点。如果您使用 Kramdown,我认为最好的方法是使用 {:.foo} 添加自定义类标记。 about.gitlab.com/handbook/product/technical-writing/…
  • 这是一个非常有用的网站,谢谢! kramdown 也是如此!这是一个真正的helpful cheat sheet when only the HTML-ized table will do
  • @Seamus 很高兴知道你喜欢它,我写了那个指南?
  • 哦,是 gitlab 的那个,还是 divtable 的那个?无论如何,两者都是 x 有用的资源,非常感谢 :)
【解决方案5】:

试试这个:

<style>
table th:first-of-type {
    width: 10%;
}
table th:nth-of-type(2) {
    width: 10%;
}
table th:nth-of-type(3) {
    width: 50%;
}
table th:nth-of-type(4) {
    width: 30%;
}
</style>


+---------+---------+---------+----------+
| Header1 | header2 | header3 | header4  |
+---------+---------+---------+----------+
| Bar     | bar     | bar     | bar      |
+---------+---------+---------+----------+

【讨论】:

  • 这是最优雅的(没有“不可见”的图像),并且允许使用总宽度的百分比。不错!
  • 但它似乎适用于文章中的所有表(全局)。如何将不同的规则应用于一篇文章(本地)中的不同表格?
  • @sun0727 为它添加一个css类,参考stackoverflow.com/a/36215330/12073333
【解决方案6】:

除了前面提到的之外,我还有两个技巧,关于如何控制 HTML 中的列宽度或使用 pandoc 从 MD 生成的潜在 PDF。

1. mutliline tables

查看文档以获取详细信息,这里有两个示例可让您根据需要调整列的宽度。

来自文档:

在多行表中,表解析器会注意列的宽度,编写器会尝试在输出中重现这些相对宽度。因此,如果您发现输出中的某一列太窄,请尝试在 Markdown 源中将其加宽。

一)

-----------------------------------------------------------------------
type                A                                  B
----- -------------------------------- --------------------------------
 abc  ![img](assets/some-image-n1.png) ![img](assets/some-image-n2.png)

defg  ![img](assets/some-image-n3.png) ![img](assets/some-image-n4.png)
-----------------------------------------------------------------------

b)

----------- ------- --------------- -------------------------
   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.
----------- ------- --------------- -------------------------

: Here's a multiline table without headers.

2。控制表格中的图像宽度

在从 Markdown 生成图像表时,我经常发现自己要处理溢出问题。将 width=XYZpx 参数传递给 markdown 图像解析器对我来说很有效,而且非常简单:

type | *A* | *B*
:---: | :---: | :---:
abc |![img](assets/some-image-n1.png){width=200px}|![img](assets/some-image-n2.png){width=200px}
def |![img](assets/some-image-n3.png){width=200px}|![img](assets/some-image-n4.png){width=200px}

您还可以检查 this answer 在 Markdown 中正确调整图像大小。

【讨论】:

    【解决方案7】:

    这很荒谬,但我最终做了:

    |`          Name           `|`          Value          `|
    |----|---------|
    |value1|value2|
    

    通过 ` 符号强制使用这些空格。

    【讨论】:

    • 如果您的标题是链接,则不起作用。
    【解决方案8】:

    您可以根据需要多次附加竖线管道。这样,即使在编辑模式下,它看起来也更加语法友好。 示例:

    |Name||||||||Value||||||||
    |Key1||||||||value2||||||||
    |Key2||||||||value2||||||||
    |Key3||||||||value3||||||||
    

    我想这种技术更方便,因为它在 jupyter 中不使用 CSS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 1970-01-01
      相关资源
      最近更新 更多