在GitHub上使用Markdown删除线代码

47

我在这里谈论的是 github markdown,例如像 README.md 这样的文件。

问题: 是否可能在github的markdown中划掉一个完整的代码块?

我知道如何将文本标记为代码块。

this is
multiline code

and this

this

also

通过缩进4个空格或使用 `...` 或 ```,也可以实现。

我还知道如何使用 del标签s标签和 ~~ 来删除线。

临时解决方案

它们单独使用都很好,但一起使用时不符合预期或需要。我尝试了几种上述组合。

目前我使用这个:

striked

through

对于每一行都使用~~和`来进行删除线。

要求

我希望能够对连续的代码块进行格式化并添加删除线:

unfortunately, this is
not striked through

或者至少只有一个小段落:

不幸的是,也没有被划掉

这有可能吗?

我找到了一些关于使用jekyll的旧帖子和提示,但我想要的是一种简单的方式,最好是在markdown中。

4个回答

54
This would only be possible with raw HTML, which GitHub doesn't allow. But you may be able to use a diff instead. 代码块仅适用于“预格式化”文本。您可以在代码块中获得的唯一格式是纯文本中可以表示的格式(缩进,大写字母等)。没有机制来标记代码块内容(如粗体,斜体,删除线,下划线等)。这是一个有意的设计决策。否则,您将如何能够在代码块中显示Markdown文本?如果您想要格式化的文本,则需要使用其他内容而不是代码块。
规则所述:
HTML是一种发布格式;Markdown是一种编写格式。因此,Markdown的格式语法仅解决可以用纯文本传达的问题。 对于任何未涵盖在Markdown语法中的标记,只需使用HTML本身即可。
因此,您需要使用正确的标记格式化自己的自定义HTML代码块:
<pre><code><del>some stricken code</del>
<del>A second line of stricken code</del>
</code></pre>

然而,出于安全原因,GitHub会在Markdown中剥离任何这样的原始HTML。因此,在完全控制整个堆栈的情况下,这是可行的,但在托管服务上,这很可能不可能。
然而,我假设您想显示对代码块所做的一些更改。事实证明,已经存在一个特定的格式,即diff。只需使用带有diff作为语言的围栏代码块,GitHub将正确地格式化它:
```diff
  Unchanged Line
- Removed Line
+ Added Line
```

你可以看到GitHub如何显示上面的代码块live(你也可以在raw中看到),但为了方便起见,我在下面包含了一张截图。

enter image description here

我知道这段文字没有使用删除线格式,但是它使用了一种常用且易于理解的格式。对于更复杂的块,你可能应该使用diff实用程序来为你生成差异。

2
你猜得对,我打算展示不同之处。因此,这仍然非常好地回答了问题。谢谢! - rocksteady
3
不错,差异块很棒,我之前不知道。 - solr
这是一个非常好的答案。然而,从技术角度来看,Bernardo Dal Corno的答案才是正确的,符合原始问题。这就是为什么我更改了已接受的答案。 - rocksteady

15

经过很多尝试,我终于成功了!这归结于以下几点:

  • ``` 代码块内部不会呈现任何内容(除了指定语言的语法高亮)
  • <code> 块内部,Markdown 不可呈现,只能使用 HTML,可以使用 <strike> 标签来表示删除线,但是无法获得语法高亮
  • 这里是关键:使用 HTML 表示删除线,使用 Markdown 获得语法高亮效果:
<strike>

```language
  this is
  multiline code
```

</strike>

附言: ``` 代码块应始终被空行包围才能正常工作。


1
我接受了这个答案,因为它正确回答了问题的内容。我使用 grip 进行了测试,它显示得很正确,就像在你的 gist 中一样。 - rocksteady
2
这对我在GitHub中划掉常规文本很有用。谢谢! - Super Jade

9

Waylan的答案的基础上进行扩展:

这可能对其他人来说很明显,但是它却抓住了我。当您有缩进的行时,请确保+-是该行上的第一个字符,否则它不会高亮显示。

```diff
<div>
  Unchanged Line
  <ul>
    - <li>This won't work</li>
-    <li>This will</li>
+    <li>1st character, then indent</li>
  </ul>
</div>
```

1

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