github 降价中的删除线代码

strikethrough code in markdown on github

我在这里说的是 github markdown,对于像 README.md.

这样的文件

问题: 是否可以在 github?

的降价中删除完整的代码块

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

this is
multiline code

and this

this

also

缩进 4 个空格或使用 ``` 或 `...

我也知道如何使用

删除文本

临时解决方案:

它们单独工作时很好,但一起工作时却不如预期或期望的那样。我尝试了上述几种组合。

现在,我使用这个:

striked

through

对每一行使用 ~~ 和 `。

要求:

我想要删除代码格式的文本,其中代码块是连续的:

unfortunately, this is
not striked through

或者至少中间只有一小段:

unfortunately, also not striked through

这可能吗?

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

只有原始 HTML 才可能,GitHub 不允许。但是您可以改用 diff。

Code blocks 仅适用于“预格式化”文本。您可以在代码块中获得的唯一格式是可以用纯文本表示的格式(缩进、大写等)。没有标记代码块内容的机制(如粗体、斜体、粗线、下划线等)。这是一个有意的设计决定。否则,您将如何在代码块中显示 Markdown 文本?如果你想要格式化文本,那么你需要使用代码块以外的东西。

作为 rules 状态:

HTML is a publishing format; Markdown is a writing format. Thus, Markdown’s formatting syntax only addresses issues that can be conveyed in plain text.

For any markup that is not covered by Markdown’s syntax, you simply use HTML itself.

因此,您需要格式化自己的自定义 HTML 代码块,并正确标记各个位:

<pre><code><del>some stricken code</del>
<del>A second line of stricken code</del>
</pre></code>

但是,出于安全原因,GitHub 会在您的 Markdown 中删除任何此类原始 HTML。因此,虽然这在您可以完全控制整个堆栈的情况下有效,但在托管服务上这很可能是不可能的。

但是,我假设您想显示对代码块所做的一些更改。事实证明,已经存在一种特定的格式,即 diff。只需使用带有 diff 作为语言的围栏代码块,GitHub 将正确格式化它:

```diff
  Unchanged Line
- Removed Line
+ Added Line
```

您可以看到 GitHub 如何显示上面的代码块 live (you can also see that in raw),但为了方便起见,我在下面包含了一个屏幕截图。

我知道格式没有使用删除线,但它确实使用了一种常用和理解的格式。对于更复杂的块,您可能应该使用 diff 实用程序为您生成差异。

上扩展:

这对其他人来说可能是显而易见的,但它抓住了我。当你有缩进行时,确保 +- 是该行的第一个字符,否则它不会突出显示。

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

关于标记代码块内容的主题,要在 "code" 行的末尾添加斜体字符串,请尝试类似以下内容:

<code>id\_pn\_aside\_subscriber\_form\__form\_id_</code>

(您可以在 https://github.com/devonostendorf/post-notif#how-do-you-use-the-stylesheet_filename-attribute-with-the-shortcode 处查看实际效果)

我很难找到与这个精确用例相匹配的示例,所以我希望这对其他试图实现类似效果的人有用。

经过多次尝试,我终于成功了!归结为:

  • ``` 块内,不呈现任何内容(除了指定语言的语法)
  • <code> 块内,Markdown 不会呈现,只有 HTML。您可以使用 <strike>。很好,但是你没有得到语法着色
  • 现在施展魔法:使用 HTML 进行打击,使用 markdown 进行着色:
<strike>

```language
  this is
  multiline code
`` `

</strike>

PS.: ``` 块应该总是被空行包围才能工作

PS.2:必须在此处写“`` `”,这样示例才不会中断!

PS.3:在这个要点中测试:https://gist.github.com/bernardoadc/49477b77ddeffb6f78d1e7ec47834425