如何在Markdown表格的代码语句中转义管道字符?

159

在GitHub上,我想要建立一个包含Markdown代码片段的表格。它运行良好,除了当我在反引号(i.e. `)字符之间放置管道符(i.e. |)时。

这是我想要的:

      a     |  r  
------------|-----
 `a += x;`  |  r1
 `a |= y;`  |  r2

问题是第二行代码语句中的竖线被解释为列分隔符,导致表格渲染看起来非常丑陋。我该如何避免这种情况?

请注意,我已经尝试过使用HTML代码|,但它会生成a |= y;

5个回答

234
截至2017年3月,使用转义管道符更加容易:\|。有关其他答案,请参见其他答案。
如果删除反引号(`),使用|的技巧就起作用了。
      a     |  r  
------------|-----
 `a += x;`  |  r1
 a |= y;  |  r2

并且生成以下输出:

在此输入图像描述

或者,您可以使用<code></code>标记替换反引号(`)来解决这些问题,这种方法可以更好地保留渲染效果。

      a     |  r  
------------|-----
 `a += x;`  |  r1
<code>a &#124;= y;</code>  |  r2
生成以下输出

8
没问题,使用<code></code>标记就可以了!非常感谢你。 - Marc de Verdelhan
1
Bitbucket不允许<code>块 :-/,还有其他可能性吗? - Sergej
3
在 GitHub 上,Markdown 转义符\|是有效的。人们过于急于转换为 HTML ,而不尝试转义 Markdown。 - jnm2
1
截至2019年3月,在Gitlab的维基中,您仍然需要在标记代码中使用“&#124;”。 - knb
不支持在PyCharm中 :( - rodrigo-silveira
显示剩余3条评论

35
截至2017年中期,可以使用反斜杠来转义管道符:\|。这在反引号内外都有效。
现在可以再次使用HTML代码,但只能在反引号外部使用。
以前的答案如下:
截至2017年3月,接受的答案已经失效,因为GitHub更改了它们的Markdown解析器。现在似乎只有使用另一个类似于管道符的Unicode符号是唯一的选择,例如:
ǀ(U + 01C0,拉丁字母牙齿点击)
∣(U + 2223,符号分隔)
⎮(U + 23AE,积分扩展)

3
在 GitHub 上,我提交的 Gist 和 pull request 中,被接受的答案对我来说似乎运行良好。 - Iiridayn

17

1
谢谢。这在 Github 上可行。Github MarkDown 似乎可以识别表格中的字符串\|并相应地处理。 - Stephen Chung
1
在 Github 中,这需要在第一列前面加上一个 | :这个是有效的:| a | r | ------------|----- | `a += x;` | r1 | `a \|= y;` | r2 - timotheecour

3

这在Github的标记语言中很好用:

|       a     |  r  
| ------------|-----
|  `a += x;`  |  r1
|  `a \|= y;` |  r2

非常类似于https://dev59.com/d2Qm5IYBdhLWcg3w0Bq5#45122039,但在第一列添加了|(在评论中无法正确显示,因此我在这里添加了一个答案)。

请注意,在表格单元格外部,a\|=y; 将呈现反斜杠,但在表格单元格内部则不会呈现。


0
对于任何想要使用RMarkdown / pandoc生成LaTeX输出的人来说,最简单的解决方案似乎是在表格之外定义一个新命令,如下所示:
\newcommand{\pipe}{|}

|     a      |         r                  |
|------------|----------------------------|
| $a\pipe_1$ | first element of $a\pipe$  |
| $a\pipe_2$ | second element of $a\pipe$ |


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