마크다운 코드 블록: 구문, 언어 및 예제를 포함한 완전 가이드

마크다운 코드 블록 마스터하기: 구문 강조, diff 및 파일명

Page content

여기서는 마크다운의 코드블록 옵션을 검토해 보겠습니다. 프로그래밍 언어 지정 방법, diff 서식화 및 코드블록 파일명을 설정하는 방법을 다룹니다.

이 가이드는 2026년 문서화 도구: 마크다운, LaTeX, PDF 및 인쇄 워크플로우 허브의 일부입니다.

sample wiki page with code block

마크다운 코드블록 개요

마크다운 코드블록은 마크다운 문서 내에서 코드 또는 사전 서식된 텍스트를 표시하며, 서식을 유지하고 선택적으로 구문 강조를 활성화합니다. 마크다운에는 두 가지 주요 코드 서식 유형이 있습니다: 인라인 코드와 코드블록.

마크다운 코드블록의 유형

유형 구문 예시 사용 사례 구문 강조 참고
인라인 코드 `code` 텍스트 내 짧은 스니펫 아님 단일 단어 또는 명령어용
들여쓰기 블록 (공백 4칸 또는 탭 1개) 다중 라인 코드 (구식) 아님 현대적 사용에는 권장되지 않음
펜스 블록 ```lang … ``` 다중 라인 코드 (현대적) 예 선호되는 방법

주요 차이점

  • 인라인 코드는 단일 백틱( ``)을 사용하며 문장 내 짧은 코드를 위해 사용됩니다.
  • 들여쓰기 코드블록은 각 줄의 시작에 공백 4칸 또는 탭을 사용합니다. 이들은 구문 강조를 지원하지 않으며 현대 마크다운에서는 드물게 사용됩니다.
  • 펜스 코드블록은 코드 앞뒤에 삼중 백틱(```) 또는 틸드(~~~)를 사용합니다. 이는 특히 GitHub와 같은 플랫폼에서 선호되는 방법이며, 그 이유는 다음과 같습니다:
    • 읽고 쓰기 쉽습니다.
    • 구문 강조를 위해 여는 백틱 바로 뒤에 프로그래밍 언어를 지정할 수 있습니다.
    • 서식을 보존하고 다중 라인 코드를 지원합니다.

구문 강조가 있는 펜스 코드블록 예시:

다음과 같이 마크다운 형식화된 텍스트가 있는 경우:

```python
def hello():
    print("Hello, world!")
```

렌더링된 출력은 다음과 같습니다:

def hello():
    print("Hello, world!")

마크다운 코드블록 모범 사례

  • 다중 라인 코드의 경우 명확성과 플랫폼 간 호환성을 보장하기 위해 펜스 코드블록(삼중 백틱)을 사용하십시오.
  • 구문 강조를 위해 여는 백틱 뒤에 언어를 지정하십시오(예: ```python).
  • 텍스트 내 짧은 스니펫 또는 명령어의 경우 인라인 코드를 사용하십시오.
  • 구문 강조를 지원하지 않고 읽기 어려울 수 있으므로 레거시 호환성이 필요한 경우가 아니라면 들여쓰기 코드블록 사용을 피하십시오.
  • 원시 마크다운에서 가독성을 높이기 위해 펜스 코드블록 앞뒤에 빈 줄을 배치하십시오.

특수 기능

  • 일부 플랫폼은 코드 변경 사항을 보여주는 diff와 같은 추가 언어 식별자를 지원하며, 이는 코드 리뷰에서 추가되거나 제거된 라인을 강조 표시합니다.
  • 코드블록 내부에 백틱을 표시하려면 더 많은 수의 백틱으로 블록을 감싸십시오(예: 내부의 삼중 백틱을 표시하기 위해 사중 백틱 사용).

빠른 참조 요약

기능 인라인 코드 들여쓰기 블록 펜스 블록
다중 라인 지원 아님 예 예
구문 강조 아님 아님 예
코드 권장 사항 아님 아님 예
사용 편의성 쉬움 보통 쉬움

최상의 가독성과 구문 강조를 위해 언어 식별자와 함께 펜스 코드블록을 사용하십시오. 인라인 코드는 짧은 스니펫용으로 예약하고, 호환성이 필요한 경우가 아니라면 들여쓰기 블록을 피하십시오.

코드블록은 잘 구조화된 기술 문서를 구축하기 위해 마크다운의 테이블과 자연스럽게 결합됩니다.


Diff 구문 강조

Diff 구문 강조는 코드 변경 사항을 명확하게 보여줄 수 있게 해줍니다 — 문서화, 코드 리뷰 및 기술 블로그에 유용합니다.

  • 블록의 시작과 끝을 위해 삼중 백틱(```)과 함께 펜스 코드블록을 사용하십시오.
  • 여는 백틱 바로 뒤에 diff를 언어 식별자로 지정하십시오.

예시:

- old line that will be removed
+ new line that will be added
  unchanged line
  • -로 시작하는 라인은 삭제(보통 빨간색)로 강조 표시됩니다.
  • +로 시작하는 라인은 추가(보통 초록색)로 강조 표시됩니다.
  • 접두사가 없는 라인은 특별히 강조 표시되지 않습니다.

모범 사례:

  • 원시 마크다운에서 더 나은 가독성을 위해 코드블록 앞뒤에 빈 줄을 배치하십시오.
  • diff 강조는 선행 문자에 기반하여 전체 라인만 색칠한다는 점을 유의하십시오; 라인 내 인라인 변경 사항을 강조하지 않습니다.

팁: Diff 강조는 GitHub, GitLab 및 대부분의 마크다운 렌더러에서 널리 지원되므로 코드 변경 사항을 전달하는 데 신뢰할 수 있는 선택입니다.


구문 강조를 위한 지원 언어

지원되는 언어의 정확한 세트는 사용하는 렌더러 또는 플랫폼에 따라 다릅니다. 마크다운은 언어 식별자를 렌더링 엔진에 전달하며, 엔진은 적절한 구문 강조를 적용합니다. 이는 Python으로 HTML을 마크다운으로 변환할 때 중요하며, <code> 태그에 언어 클래스 속성(예: class="language-python")이 포함되어 있으면 펜스 블록의 이러한 식별자로 직접 매핑됩니다.

주요 플랫폼(GitHub, VS Code, Bitbucket, Docusaurus, ReadMe)에서 일반적으로 지원되는 언어:

  • 웹 & 스크립팅: javascript (js), typescript (ts), html, css, json, xml, yaml, shell/bash (sh, bash, shell, zsh)
  • 프로그래밍: python (py), java, c, cpp (c++), csharp (c#), php, ruby, go, rust, scala, swift, kotlin, objective-c
  • 데이터 & 쿼리: sql, r, matlab
  • 마크업 & 설정: markdown, ini, toml, dockerfile, makefile
  • 특수: diff, mermaid, geojson, topojson, stl (GitHub의 다이어그램 및 데이터 시각화를 위한 것) — 특히 mermaid 식별자는 지원되는 플랫폼에서 전체 다이어그램 렌더링을 활성화합니다; 완전한 구문 참조 및 Hugo 설정 가이드는 Mermaid 다이어그램 빠른 시작 및 치트시트를 참조하십시오.
  • 기타: jsx, tsx, perl, lua, julia, dart, groovy, powershell, vb, elixir, erlang, fortran, haskell, lisp, scheme 등 다수

언어 지정 방법:

```python
def hello():
    print("Hello, world!")
```

대부분의 렌더러에서 지원하는 언어 식별자:

언어 일반적인 식별자
Python python, py
JavaScript javascript, js
TypeScript typescript, ts
Java java
C c
C++ cpp, c++
C# csharp, cs, c#
Go go
Ruby ruby, rb
PHP php
Rust rust
Swift swift
Kotlin kotlin
HTML html
CSS css
Shell/Bash shell, bash, sh, zsh
SQL sql
JSON json
YAML yaml, yml
Markdown markdown, md
Perl perl
Lua lua
R r
Matlab matlab
Makefile makefile

참고: 대부분의 렌더러는 언어 이름에 대해 대소문자를 구분하지 않습니다. 지원되지 않는 식별자를 사용하면 코드블록이 일반 텍스트로 렌더링됩니다.

지원되는 언어 전체 목록 찾기:

  • GitHub: Linguist를 사용하여 수백 가지 언어를 지원합니다.
  • VS Code 및 많은 웹 렌더러: highlight.js 또는 Pygments를 사용합니다 — 포괄적인 목록은 해당 문서를 참조하십시오.
  • Bitbucket: CodeMirror modes 및 Pygments lexers를 참조합니다.

마크다운 코드블록에서 파일명 지정

코드블록 옆에 파일명을 표시하면 독자가 스니펫이 어느 파일에 속하는지 식별하는 데 도움이 됩니다. 지원 여부는 플랫폼에 따라 다릅니다.

1. 코드블록 레이블에서 파일명 (메타 구문)

일부 마크다운 엔진(특정 정적 사이트 생성기 및 문서화 플랫폼)은 언어 뒤에 콜론으로 구분하여 파일명을 추가하는 메타 구문을 지원합니다:

```js:app.js
console.log("Hello, world!");
```

이렇게 하면 파일명이 코드블록 위 또는 옆에 표시됩니다. 이 사이트의 Hugo 렌더러는 이를 지원하지 않습니다:

console.log("Hello, world!");

참고: 이는 GitHub flavored Markdown에서 지원되지 않습니다.

2. 수동 파일명 제목 또는 인라인 코드

범용 호환성(GitHub, Stack Overflow 및 대부분의 마크다운 렌더러 포함)을 위해 굵은 인라인 코드를 사용하여 코드블록 위에 파일명을 배치하십시오:

**`app.js`**

```js
console.log("Hello, world!");
```

또는 제목과 함께:

#### `app.js`

```js
console.log("Hello, world!");
```

이 방법은 어디서나 작동하며 시각적으로 파일명을 코드블록과 연관시킵니다.

3. 코드 내부의 주석으로 파일명

코드블록 자체 내에서 주석으로 파일명을 포함하십시오:

```js
// app.js
console.log("Hello, world!");
```

이는 코드를 복사할 때 파일명이 보이기를 원할 때 특히 유용합니다.

호환성 요약

방법 GitHub Docs/Blogs Universal
메타 구문 (예: :app.js) 아님 때때로 아님
제목/인라인 코드 위 예 예 예
코드 내부 주석 예 예 예

최대한의 호환성을 위해 코드블록 위에 굵은 인라인 코드를 사용하고, 플랫폼 간 공유 시 명확성을 위해 코드 내부 주석을 고려하십시오.


코드블록 내부 백틱 이스케이프

코드블록 내부에 백틱 펜스를 표시하려면 — 예를 들어 마크다운 자체에 대한 문서를 작성할 때 — 블록을 더 많은 수의 백틱으로 중첩하십시오:

````markdown
```python
# This triple-backtick fence is inside a four-backtick fence
print("hello")
```
````

외부 펜스로 사중 백틱을 사용하면 내부에 삼중 백틱 예시를 보여줄 수 있어 마크다운 튜토리얼 및 치트시트에 유용합니다.


Hugo 전용: Highlight Shortcode

Hugo를 사용하는 경우, 내장된 highlight 쇼트코드는 일반 펜스 블록보다 더 많은 제어를 제공하며, 라인 번호 및 강조 표시된 라인을 포함합니다:

{{< highlight python "linenos=true,hl_lines=2 4" >}}
def greet(name):
    print(f"Hello, {name}!")

greet("world")
{{< /highlight >}}

옵션:

  • linenos=true — 라인 번호 표시
  • hl_lines=2 4 — 2번 및 4번 라인 강조
  • linenostart=10 — 10에서 라인 번호 시작

이는 특정 라인에 주목을 끌고 싶은 튜토리얼 또는 문서화에 특히 유용합니다. 더 많은 서식 기능은 Markdown Cheatsheet를, Hugo 명령 및 템플릿에 대한 광범위한 참조는 Hugo Cheat Sheet을 참조하십시오.


유용한 링크

구독하기

시스템, 인프라, AI 엔지니어링에 관한 새 글을 받아보세요.