How to escape a pipe char in a code statement in a markdown table?
Solution 1
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
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 |= y;</code> | r2
generating the following output
Solution 2
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
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
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.
Marc de Verdelhan
Updated on April 12, 2021Comments
-
Marc de Verdelhan about 3 years
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 producesa |= y;
. -
Marc de Verdelhan almost 11 yearsYeah, worked using
<code></code>
markup! Thank you very much. -
Sergej about 8 yearsBitbucket doesn't allow
<code>
-blocks :-/ is there an other possibility? -
Iiridayn almost 7 yearsThe accepted answer appears to work fine for me in GitHub, both in a Gist and in the pull request I submitted.
-
jnm2 almost 7 yearsOn GitHub, the markdown escape
\|
works. People jump to HTML too fast without trying escaping the markdown. -
Stephen Chung over 5 yearsThanks. This works on Github. Github MarkDown seems to recognize the string
\|
within a table and act accordingly. -
knb about 5 yearsAs of March 2019, in Gitlab Wikis, you still need to use "
|
" inside the markup code. -
Lorenzo Solano Martinez almost 5 yearsStill not supported by Bitbucket see bitbucket.org/site/master/issues/17106/…
-
timotheecour about 3 yearsin github, this requires a leading
|
in 1st column: this works: ``` | a | r | ------------|----- |a += x;
| r1 |a \|= y;
| r2 ``` (sorry for the formatting due to comment 1-line formatting rules) -
rodrigo-silveira almost 3 yearsNot supported in PyCharm :(