コードまたは整形済みテキストの投稿

:bookmark: このガイドでは、Discourse で Markdown、BBCode、および HTML 形式を使用してコードや整形済みテキストを投稿する方法について説明します。

:person_raising_hand: 必要なユーザーレベル: すべてのユーザー

共有したいコード行がありますか?サイトのエラーログを共有する必要がありますか?特にコードがスペースに依存している場合や、Discourse が変換する特殊文字を含んでいる場合、整形されていないコードを読むのは困難です。

概要

このガイドでは、次のことを学習します。

  • インラインコードの書式設定方法。
  • コードの行全体を書式設定する方法。
  • コードブロックを書式設定する方法。
  • コードの書式設定に BBCode と HTML を使用する方法。
  • 自動コードスタイルを無効にする方法。

インラインコードの書式設定

テキストの特定の部分を書式設定するには、コードの両側に 1 つのバッククォートを使用します。これは通常のテキスト内、またはコードが独自の行にある場合に行うことができます。インライン書式設定では、自動コード書式設定(下記参照)は適用されず、バッククォート間のテキストに「コードスタイル」のみが適用されます。

例 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><pre> タグを使用します。

<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 のいずれかである必要があります。デフォルトのリストは、highlighted_languages を検索することで config/site_settings.yml で見つけることができます。

また、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件の投稿が新しいトピックに分割されました:コードブロックを含むトピックを投稿できません