发布代码或预格式化文本

:bookmark: 本指南解释了如何使用 Markdown、BBCode 和 HTML 格式在 Discourse 中发布代码或预格式化文本。

:person_raising_hand: 所需用户级别:所有用户

需要分享一行代码?也许需要分享网站的错误日志?阅读未格式化的代码可能很困难,特别是当代码依赖于间距或包含 Discourse 会转换的特殊字符时。

摘要

在本指南中,您将学习:

  • 如何格式化行内代码。
  • 如何格式化整行代码。
  • 如何格式化代码块。
  • 如何使用 BBCode 和 HTML 进行代码格式化。
  • 如何禁用自动代码样式。

行内代码格式化

要格式化特定文本部分,请在代码的两侧使用单个反引号。这可以在常规文本中完成,或者当代码位于其自己的行上时。行内格式化不应用任何自动代码格式化(见下文),并且仅将“代码样式”应用于反引号之间的文本。

示例 1:

输入:

```This is a line of code```

输出:

This is a line of code

示例 2:

输入:

Here’s some text with `a bit of code` inside!

输出:

Here’s some text with a bit of code inside!

整行代码格式化

要格式化整行,请在行首添加 4 个空格。从该行开始直到下一个换行符的所有文本都将是代码。

示例:

输入:

    All text after 4 spaces will be formatted.

输出:

All text after 4 spaces will be formatted.

代码块格式化

虽然您可以使用 4 个空格的方法来生成多行代码,但这可能很繁琐,特别是当您复制和粘贴并且需要在多行文本上键入 4 个空格时。

相反,请在代码的上方和下方单独一行使用 3 个反引号(```)。请确保带有反引号的行上没有空格,否则将不起作用。

示例:

输入:

```
public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("I can format code now!");
    }
}
```

输出:

public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("I can format code now!");
    }
}

BBCode 和 HTML

除了 Markdown 之外,Discourse 还支持 BBCode 和 HTML 的子集。

对于 HTML,请使用 <code></code> 标签:

<pre><code>
public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("I can format code now!");
    }
}
</code></pre>

对于 BBCode,请使用 [code] 标签:

[code]
public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("I can format code now!");
    }
}
[/code]

指定编程语言

默认情况下,Discourse 会检测代码的语言并相应地进行样式设置。

要手动为代码块指定编程语言,请在第一组反引号后直接输入语言名称:

``` your_language
# Your code here

示例

要指定 Ruby:

输入:

``` ruby
3.times do |stuff|
    stuff.do
end
```

输出:

3.times do |stuff|
    stuff.do
end

该语言必须是您的站点上配置用于语法高亮显示的highlighted languages之一。默认列表可以在 config/site_settings.yml 中通过搜索 highlighted_languages 找到。
您还可以使用 default code lang 站点设置来设置默认代码语言。

抑制高亮显示

如果要防止任何语法高亮显示,可以将 text 用作语言:

示例

输入:

``` text
Your text to NOT highlight here

输出:

Your text to NOT highlight here

最佳实践

  • 始终确保您的行内代码用单反引号括起来以提高清晰度。
  • 使用代码块格式化来共享更大的代码片段。
  • 避免在分享不需要特定于语言的样式的文本或日志时使用自动代码样式。
  • 如果自动检测未能正确识别您的代码,请指定语言。

附加资源

15 个赞

用于语法高亮启用语言默认列表的固定且更安全的链接是 https://github.com/discourse/discourse/blob/c4de8565eceeadda8f2a800226a02d0c40752ae6/config/site_settings.yml#L1086-L1087

3个帖子被拆分到一个新主题:无法发布带代码块的主题