このドキュメントでは、Discourse で Markdown、BBCode、HTML を使用して書式設定されたテキストを投稿する方法を説明します。
必要なユーザーレベル:すべてのユーザーが利用できます
元のドキュメントへのリンク:Posting code or preformatted text
Discourse でコードを共有したい場合や、エラーログなどを 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.
複数行コードのフォーマット
複数行のコードの場合、単一行コードのフォーマットを使用すると非常に面倒になります。
特に、多くのコードではインデントにスペースが使用されます。
単一行スペースコードのフォーマットは、コードブロック全体に影響します。
この場合、コードの開始として 3 つの単一引用符(バックティック (```))を使用できます。これらの 3 つの単一引用符は独立した行にする必要があります。
また、これらの 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 の場合、<pre> と <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 は入力フォーマットに基づいて使用されている言語を自動的に検出します。
もちろん、コードブロックの言語を手動で指定することもできます。3 つの単一引用符の後に、フォーマットしたい言語を入力します。
``` your_language
# Your code here
例:
Ruby 言語の場合:
入力:
``` ruby
3.times do |stuff|
stuff.do
end
```
出力:
3.times do |stuff|
stuff.do
end
サポートされている言語は、highlighted languages でサポートされている言語である必要があります。
サポートされている言語のリストは、GitHub で確認できます。
もちろん、default code lang 設定を使用してデフォルトの言語を設定することもできます。
シンタックスハイライトなし
入力されたテキストやコードブロックにシンタックスハイライトを適用したくない場合は、言語指定部分で text を使用します。
例:
入力:
``` text
Your text to NOT highlight here
出力:
Your text to NOT highlight here
ベストプラクティス
- インラインコードの場合は、フォーマットしたいテキストを常に単一引用符で囲んでください。
- 複数行のコードを共有する場合は、コードをフォーマットしてください。
- テキストやログの場合は、これらのテキストはプレーンテキストであり、テキストフォーマットを使用するだけなので、自動コードスタイルは避けてください。
- 自動スタイルがコードを正しく認識しない場合は、コードに正しい言語を指定することを忘れないでください。