These should all get escaped:

    Backslash: \

    Backtick: `

    Asterisk: *

    Underscore: _

    Left brace: {

    Right brace: }

    Left bracket: [

    Right bracket: ]

    Left paren: (

    Right paren: )

    Greater-than: >

    Hash: #

    Period: .

    Bang: !

    Plus: +

    Minus: -

    These should not, because they occur within a code block:

    1. Backslash: \\
    2. Backtick: \`
    3. Asterisk: \*
    4. Underscore: \_
    5. Left brace: \{
    6. Right brace: \}
    7. Left bracket: \[
    8. Right bracket: \]
    9. Left paren: \(
    10. Right paren: \)
    11. Greater-than: \>
    12. Hash: \#
    13. Period: \.
    14. Bang: \!
    15. Plus: \+
    16. Minus: \-

    Nor should these, which occur in code spans:

    Backslash: \

    Backtick: `

    Asterisk: \*

    Underscore: \_

    Left brace: {

    Right brace: }

    Left bracket: [

    Right bracket: ]

    Left paren: (

    Right paren: )

    Greater-than: \>

    Hash: #

    Period: .

    Bang: !

    Plus: \+

    Minus: \-

    These should get escaped, even though they're matching pairs for other Markdown constructs:

    asterisks

    underscores

    backticks

    This is a code span with a literal backslash-backtick sequence: `

    This is a tag with unescaped backticks bar.

    This is a tag with backslashes bar.