How to escape a pipe char in a code statement in a markdown table?

GithubEscapingPipeMarkdown

Github Problem Overview


On GitHub I want to build a table containing pieces of code in Markdown. It works fine except when I put a pipe char (i.e. | ) between the backtick (i.e. ` ) chars.

Here is what I want:

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

The problem is that the vertical bar in the code statement of the second line is interpreted as a column delimiter. Then the table rendering looks pretty ugly. How could I avoid that?

Note that I already tried to use the | HTML code, but it produces a |= y;.

Github Solutions


Solution 1 - Github

> As of March 2017 using escaped pipes is much easier: \| See other answers.

If you remove the backticks (`), using the | hack works

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

and produces the following output

enter image description here

Alternatively, you can replace the backticks (`) with a <code></code> markup which fixes the issues more nicely by preserving the rendering

      a     |  r  
------------|-----
 `a += x;`  |  r1
<code>a &#124;= y;</code>  |  r2

generating the following output

enter image description here

Solution 2 - Github

As of mid-2017, the pipe may simply be escaped with a backslash, like so: \|

This works both inside and outside of backticks.

The HTML code may now be used again, too, but only outside of backticks.

Previous answer:

> As of March 2017, the accepted answer stopped working because GitHub > changed their markdown > parser. > Using another unicode symbol that resembles a pipe seems to be the > only option right now, e.g.: > > ǀ (U+01C0, Latin letter dental click) > > ∣ (U+2223, Symbol divides) > > ⎮ (U+23AE, Integral Extension)

Solution 3 - Github

You can escape the | in a table in GFM with a \ like so:

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

See https://github.github.com/gfm/#example-191 or https://github.com/dotnet/csharplang/pull/743 for an example.

Solution 4 - Github

this works fine in github markdown:

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

very similar to https://stackoverflow.com/a/45122039/1426932 but with added | in first column (it didn't render well in comments so I'm adding an answer here).

note that outside a table cell, a \|= y; will render the backslash, but inside a table cell, it won't.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMarc de VerdelhanView Question on Stackoverflow
Solution 1 - GithubnulltokenView Answer on Stackoverflow
Solution 2 - GithubJanoschView Answer on Stackoverflow
Solution 3 - GithubIiridaynView Answer on Stackoverflow
Solution 4 - GithubtimotheecourView Answer on Stackoverflow