如何将包含多行单元格的表添加到VSTS中的自述文件中?

时间:2017-11-16 08:23:19

标签: azure-devops markdown

如何在Microsoft VSTS中将具有多行单元格的表添加到markdown?

我以前在github上使用asciidoc作为自述文件,因为它更丰富,更不含糊。该公司现在有VSTS项目,不支持asciidoc,所以我需要使用markdown。 但是,目前还不清楚实际支持哪种降价方式

此页面说明可以使用github风味的降价

https://docs.microsoft.com/en-us/vsts/collaborate/markdown-guidance

我通过they use commonmark库找到了另一个页面markdown-it

  

问:VS Code是否支持GitHub Flavored Markdown?

     

答:不,VS Code使用的是针对CommonMark Markdown规范的   降价 - 它库。 GitHub正朝着CommonMark迈进   您可以在此更新中阅读的规范。

我一直在使用asciidoctor和pandoc的组合来转换文件,但没有任何东西能让它变得非常正确。 (Asciidoctor转换为docand,然后pandoc可以解析)

asciidoctor -b docbook -v -o "$OUTPUT".xml "$INPUT" &&
pandoc -f docbook -t markdown_github -i "$OUTPUT".xml -o "$OUTPUT"

我必须手动重新添加标题。 我目前的绊脚石是多排细胞。 Github支持网格表, 见Newline in markdown table?

+---------------+---------------+--------------------+
| Fruit         | Price         | Advantages         |
+===============+===============+====================+
| Bananas       | first line\   | first line\        |
|               | next line     | next line          |
+---------------+---------------+--------------------+
| Bananas       | first line\   | first line\        |
|               | next line     | next line          |
+---------------+---------------+--------------------+

但是这个和嵌入式html似乎都不适用于VSTS。 如果允许的话,我很乐意使用html自述文件。

2017年11月17日更新:

我找到了markdown-it的链接并在上面添加了它。我在那里提出an issue进行澄清(或增强)。目前尚不清楚VSTS在引擎盖下实际使用的版本。

我想问一下微软自己的问题,但他们问一个问题链接直接堆栈溢出。

markdown-it库确实支持@Waylan建议的用法:

| Fruit         | Price                   | Advantages              |
| ------------- | ----------------------- | ----------------------- |
| Bananas       | first line<br>next line | first line<br>next line |
| Bananas       | first line<br>next line | first line<br>next line |

https://github.com/markdown-it/markdown-it/issues/406。 问题很可能是微软禁用了HTML。 因此,解决方案等待回复@ starian的建议:https://visualstudio.uservoice.com/forums/330519-visual-studio-team-services/suggestions/32312290-multi-line-in-the-cell-of-a-table-in-markdown-in-v

2 个答案:

答案 0 :(得分:3)

简而言之,每行必须在一行上,并且应使用<br>来表示换行符。像这样:

| Fruit         | Price                   | Advantages              |
| ------------- | ----------------------- | ----------------------- |
| Bananas       | first line<br>next line | first line<br>next line |
| Bananas       | first line<br>next line | first line<br>next line |

以下是对每个工具的解释,并分析该工具的文档:

的GitHub

CommonMark是具有严格spec的Markdown变体。 GitHub-Flavored Markdown(GFM)是CommonMark(它向CommonMark添加功能,如表格)的扩展,具有自己的spec。因此,假设一个实现支持GFM就是说它支持带有扩展的CommonMark。请注意2017年3月14日的GitHub adopted the current spec,因此任何较旧的信息可能与当前实施无关。

VSTS是否实际使用CommonMark / GFM实现或近似近似文档尚不清楚。但是,由于文档明确指出支持“GitHub风格的扩展”,这将向我表明GFM规范将是一个很好的参考。无论如何,GFM Spec是github.com上呈现的任何Markdown的控制规范。

GFM Spec的Tables section明确指出:

  

无法在表格中插入块级元素。

并给出了这个简单的例子:

| foo | bar |
| --- | --- |
| baz | bim |

虽然规范没有特别提及多个行单元格,但没有任何包含多行的单元格的示例。据我所知,GFM不支持这一点。因此,在GFM表单元格中包含换行符的唯一方法是使用<br>标记,该标记不是块级元素。

Pandoc

Pandoc supports多种不同风格的表语法。如果你将Markdown传递给Pandoc和GFM,那么你需要使用Pandoc的桌面风格,它最接近GFM的风格。例如,GFM表不包括对角落的+的支持。该语法特定于Pandoc的Grid Tables。幸运的是,Pandoc的文档告诉我们哪种风格与GFM最匹配。

Pandoc支持各种“Markdown Variants”,其中一个是gfm。文档保留了这个变体:

  

我们还支持gfm(GitHub-Flavored Markdown)作为一组   commonmark上的扩展程序:

     

pipe_tablesraw_htmlfenced_code_blocksauto_identifiers,   ascii_identifiersbacktick_code_blocksautolink_bare_uris,   intraword_underscoresstrikeouthard_line_breaksemoji,   shortcut_reference_linksangle_brackets_escapable

请注意,Pandoc的gfm变体使用Pipe Tables。值得注意的是,自GitHub采用Commonmark以来,Pandoc的markdown_github变体已被弃用。但即使markdown_github变体也使用管道表。

管道表的Pandocs文档说明(重点补充):

  

管道表的单元格不能包含段落和列表等块元素,不能跨越多行。

并给出了这个例子:

| Right | Left | Default | Center |
|------:|:-----|---------|:------:|
|   12  |  12  |    12   |    12  |
|  123  |  123 |   123   |   123  |
|    1  |    1 |     1   |     1  |

这显然与GFM表相同,不包括对块级元素或多行单元格的任何支持。

VSTS

VSTS Documentation for Tables与此示例紧密匹配GFM和Pandoc管道表:

| Heading 1 | Heading 2 | Heading 3 |  
|-----------|:---------:|----------:|  
| Cell A1   | Cell A2   | Cell A3   |  
| Cell B1   | Cell B2   | Cell B3   |

虽然VSTS文档没有特别提及块级元素或多行,但似乎可以肯定它实际上是相同的样式。

我们可以做出这样的假设,因为在所有三个实例(VSTS,GFM和Pandoc管道表)中,语法不提供表的各个行之间的分隔符(与支持行分隔符的Pandoc网格表进行比较)。虽然在标题行和数据行之间存在分隔符,但在各个数据行之间没有分隔符,但无法指示每行有多少行文本。因此,每行只能用一行文字表示。

结论

鉴于上述情况,要由VSTS,GFM和Pandoc(gfm变体)正确解析,您的表应格式如下:

| Fruit         | Price                   | Advantages              |
| ------------- | ----------------------- | ----------------------- |
| Bananas       | first line<br>next line | first line<br>next line |
| Bananas       | first line<br>next line | first line<br>next line |

使用Pandoc时,请务必使用gfm格式(pandoc -f gfm ...)。

答案 1 :(得分:0)

VSTS降价不支持,我在此处提交用户语音:multi-line in the cell of a table in markdown in VSTS,您可以投票并关注它。