有没有办法制作复杂的Markdown表格?

6

我想创建一个Markdown表格复杂的表格

但是我做不对:

| Available     | Process   | Allocation       |     Max         |
|---------------|-----------|:----------------:|----------------:|
| A | B | C | D |           |   A | B | C | D  | A | B | C | D   |
| 1 | 5 | 2 | 0 | P0        |   0 | 0 | 1 | 2  | 0 | 0 | 1 | 2   |
|               | P1        |   1 | 0 | 0 | 0  | 1 | 7 | 5 | 0   |
|               | P2        |   1 | 3 | 5 | 4  | 2 | 3 | 5 | 6   |
|               | P3        |   0 | 6 | 3 | 2  | 0 | 6 | 5 | 2   |
|               | P4        |   0 | 0 | 1 | 4  | 0 | 6 | 5 | 6   |
3个回答

6

Markdown支持一些HTML语法,例如<table>元素。 要使列看起来像图像上的标题,魔术属性是

colspan="X"  

其中X是您希望它扩展到的列数,以及

rowspan="Y"

当Y为您想要扩展到的行数时

例如:

table {
  border-collapse:collapse;
}

td {
  border: 1px solid #000;
  margin: 0;
  padding: 0.5em;
}
<table>
  <tr>
    <td colspan="4">
      Available
    </td>
    <td rowspan="2">
      Processes
    </td>
    <td colspan="4">
      Allocation
    </td>
    <td colspan="4">
      Max
    </td>
  </tr>
  <tr>
    <td>
      A
    </td>
    <td>
      B
    </td>
    <td>
      C
    </td>
    <td>
      D
    </td>
    <td>
      A
    </td>
    <td>
      B
    </td>
    <td>
      C
    </td>
    <td>
      D
    </td>
    <td>
      A
    </td>
    <td>
      B
    </td>
    <td>
      C
    </td>
    <td>
      D
    </td>
  </tr>
  <tr>
    <td>
      1
    </td>
    <td>
      5
    </td>
    <td>
      2
    </td>
    <td>
      0
    </td>
    <td>
      P0
    </td>
    <td>
      0
    </td>
    <td>
      0
    </td>
    <td>
      1
    </td>
    <td>
      2
    </td>
    <td>
      0
    </td>
    <td>
      0
    </td>
    <td>
      1
    </td>
    <td>
      2
    </td>
  </tr>
  <tr>
    <td colspan="4">
    </td>
    <td>
      P1
    </td>
    <td>
      1
    </td>
    <td>
      0
    </td>
    <td>
      0
    </td>
    <td>
      0
    </td>
    <td>
      1
    </td>
    <td>
      7
    </td>
    <td>
      5
    </td>
    <td>
      0
    </td>
  </tr>
</table>

请注意,CSS仅在此处必要,因为Markdown解释器将使用默认样式呈现表格。

3

专业的 Markdown 提示:始终从检查 BabelMark 的结果开始,看哪个渲染器最接近,然后从那里进行编辑!
你的原始代码在MultiMarkdown中表现不错,你可以在BabelMark上预览。
这离你想要的还有一些微调的距离。

进行微调

MultiMarkdown(MMD)支持colspan,并且似乎可以使用此MultiMarkdown代码来实现您想要的效果:

| Available  |||| Process   | Allocation    ||||     Max      ||||
|---|---|---|---|-----------|-----|---|---|----|---|---|---|-----|
| A | B | C | D |           |   A | B | C | D  | A | B | C | D   |
| 1 | 5 | 2 | 0 | P0        |   0 | 0 | 1 | 2  | 0 | 0 | 1 | 2   |
|            |||| P1        |   1 | 0 | 0 | 0  | 1 | 7 | 5 | 0   |
|            |||| P2        |   1 | 3 | 5 | 4  | 2 | 3 | 5 | 6   |
|            |||| P3        |   0 | 6 | 3 | 2  | 0 | 6 | 5 | 2   |
|            |||| P4        |   0 | 0 | 1 | 4  | 0 | 6 | 5 | 6   |

你可以在BabelMark上再次检查。

multimarkdown rendering

更多有关MultiMarkdown的信息请点击这里

在 MultiMarkdown 中进行渲染

如果您不熟悉运行 Perl 或想要实时预览编辑内容,则可以使用 MMD 创建者出售的 适用于 macOS 的 Multimarkdown 文本编辑器

如果您使用的是 Windows,我认为没有一个编辑器能够直接提供完整的 MMD 支持。您可以学习 Perl,或者您可以使用我编写的*适用于 Windows 的应用程序MarkUpDown,它支持 MMD 表格,并且可以获得几乎相同的结果。

如果您使用的是 Linux,则我假设您会拼写 Perl。;^D


我提供这个应用是因为我不知道Windows上有哪个其他应用可以直接支持MMD表格,而我深知这个应用程序可以。正如曾经在FAQ中所说的那样发表好的、相关的答案,如果它们恰好与你的产品有关,那就这样吧。但老实说,MMD是Perl编写的。如果你想免费做到这一点,也可以!


2

你无法在Markdown中创建这种复杂的表格。你需要像Jacob在他的回答中所提供的那样编写HTML表格。你需要做的是,在<table>中是一个块级元素,所以在它之前和之后创建新行。

Your markdown content before

<table>... </table>

Your markdown content after

Markdown不是HTML的替代品。正如Markdown的创始人John Gruber所说:

行内HTML Markdown的语法旨在实现一种目标:作为Web写作格式。

Markdown不是HTML的替代品,甚至离它很远。它的语法非常简单,仅对应于HTML标签的一个非常小的子集。其思想不是创建使插入HTML标签更容易的语法。在我看来,HTML标签已经很容易插入了。Markdown的思想是使阅读、写作和编辑散文变得容易。HTML是一种出版格式;Markdown是一种写作格式。因此,Markdown的格式化语法只涉及可以用纯文本传达的问题。

对于任何未被Markdown语法覆盖的标记,您只需使用HTML本身。无需将其放在Markdown之前或定界它以指示您正在从Markdown切换到HTML;您只需使用标记。

唯一的限制是块级HTML元素(例如<div>、<table>、<pre>、<p>等)必须由空白行与周围内容分隔开,并且块的开始和结束标记不应缩进。Markdown足够聪明,不会在HTML块级标记周围添加额外(不需要的)<p>标记。

参考Markdown HTML文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接