본 문서에서는 Discourse에서 Markdown, BBCode 및 HTML을 사용하여 포맷된 텍스트를 게시하는 방법을 안내합니다.
필요한 사용자 권한: 모든 사용자는 이 기능을 사용할 수 있습니다.
공식 원문 링크: Posting code or preformatted text
코드를 Discourse에서 공유하거나, 오류 로그를 Discourse에 게시해야 할 경우가 있습니다. 코드를 포맷하지 않으면 이러한 내용을 읽기 매우 어렵고, 많은 코드에는 공백과 기타 특수 문자가 포함되어 있어 콘텐츠 변환 시 원본 의도가 훼손될 수 있습니다.
개요
이 가이드에서는 다음을 배울 수 있습니다:
- 인라인 코드 포맷하는 방법.
- 단일 라인 코드 포맷하는 방법.
- 멀티라인 코드 포맷하는 방법.
- 코드 포맷팅에 BBCode와 HTML을 사용하는 방법.
- 코드 자동 포맷팅 비활성화하는 방법.
인라인 코드 포맷팅
인라인 코드나 특수 문자를 포맷하려면 포맷할 내용의 앞뒤에 백틱(`)을 사용하세요.
이것은 텍스트 중간에 사용하거나, 코드를 별도의 줄에 배치하는 방식으로 가능합니다.
인라인 코드 포맷팅은 포맷할 코드에 특정 스타일을 적용하지 않습니다(아래 예시를 참조). 포맷할 코드에 코드 스타일(“code style”)만 적용됩니다.
예시 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
지원되는 언어는 아래에서 문법 하이라이팅(syntax highlighting)을 지원하는 언어여야 합니다.
지원되는 언어 목록은 GitHub 페이지에서 확인할 수 있습니다.
물론, default code lang 설정을 사용하여 기본 언어를 설정할 수도 있습니다.
문법 하이라이팅 사용 안 하기
입력된 텍스트나 코드 블록에 문법 하이라이팅을 적용하지 않으려면 언어 선택 부분에 text를 사용하세요.
예시:
입력:
``` text
Your text to NOT highlight here
출력:
Your text to NOT highlight here
모범 사례
- 인라인 코드의 경우, 포맷할 텍스트를 항상 백틱(`)으로 감싸세요.
- 멀티라인 코드를 공유할 때는 코드를 포맷팅하세요.
- 텍스트와 로그의 경우, 이러한 텍스트는 대부분 일반 텍스트이므로 자동 코드 스타일 적용을 피하고 텍스트 형식을 사용하는 것이 좋습니다.
- 자동 스타일 감지가 코드를 올바르게 인식하지 못하는 경우, 코드에 올바른 언어를 지정하는 것을 잊지 마세요.