마크다운(Markdown)

박지선
∙∙조회 10

1. 마크다운이란

  1. 개념
  • 마크다운은 일반 텍스트에 몇 가지 기호를 섞어 문서의 구조를 표현하는 표기 방식이다.
  • HTML(HyperText Markup Language, 웹 문서를 기술하는 표기 언어)은 # ++제목++처럼 태그로 감싸고, 워드프로세서는 파일 안에 서식 정보를 따로 저장합니다. 두 방식 모두 서식을 적용한 뒤에는 원본이 사람이 읽기 어려운 형태가 된다.
  • 즉, 기호를 붙인 상태에서도 그냥 읽히는 것이 목표이다.
  • 코드와 함께 텍스트 파일로 보관할 수 있고, 변경 이력을 줄 단위로 비교할 수 있기 때문이다. GitHub의 저장소 설명 문서,이슈와 코드 리뷰 본문,기술 문서가 대부분 마크다운으로 작성된다.
  1. 표준과 확장
  • 마크다운에는 이 점이 처음 배울때 혼란을 일으키는 원인이므로 먼저 정리한다
css
A["원본 명세<br/>Gruber, 2004"] --> B["ComminMark<br/>표준화"]
B --> C["GFM<br/>GitHub 확장"]
B --> D["Obsidian<br/>자체 확장"]
  • 원본 명세 :2004년에 발표된 최초 규격

-CommonMark:**** 모호함을 없애기 위해 만들어진 표준 규격

-GFM: (GitHub Flavored MArkdown) - FitHub이 CommonMark 위에 표, 작업 목록 같은 기능을 얹은 것

-obsidian: 위키링크와 하이라이트가 해당되며, obsidian이 자체적으로 얹는 문법이 따로 있다.


1.문서 제목

이 파일을 마크다운을 이해하는 프로그램(GitHub, Obsidian 등)에서 열면 기호가 실제 서식으로 바뀌어 보입니다. 이 변환 과정을 렌더링(rendering)이라고 하고, 변환하는 프로그램을 렌더러(renderer)라고 부른다.

실행방법

  1. 저장소를 내려받는다.
  2. Unity Hub 에서 프로젝트를 연다.
  3. 'Scenes/Main' 씬을 열고 재상한다.

 

2.제목

-개념: 문서를 단계로 나누는 표시. 글자를 크게 만드는 기능이 아닌 문서의 뼈대를 만드는 이다.
크기만 맞추려고 굵은 글자를 대신 쓰면 겉보기는 비슷해도 이런 기능이 동작하지 않는다.

2-1. 문법 형식

-'#'의 개수가 단계를 뜻하며 1개부터 6개까지 쓸 수 있다

1단게 제목 -----'#' 1개

2단계 제목 ----'#' 2개

3단계 제목 ----'#' 3개

.

.

.

표기단계HTML로 바꿈
'#'1''
'##'2''
'###'3''
  • '#' 뒤의 공백은 생략 불가능
    ex). '# 제목' -> 제목으로 인식
    '#제목' -> #제목 이 표시
  • 글 아래 줄에 '='를 이어 쓰면 1단계, '-'를 이어 쓰면 2단계가 된다.
    다만, 2단계까지만 되고 '-' 가 다른 문법과 헷갈리기 쉬워 잘 쓰지 않는다

 

3. 문단과 줄바꿈

3-1 개념

  • GitHub 기준으로  줄을 그냥 바꾸면 줄이 바뀌지 않는다.
    편집기에서 엔터를 눌러 줄을 나누고 저장했는데, 렌더링 결과는 한줄로 이어져 있는 경우가 해당된다.
    줄을 나누는 방법은 두 가지가 있는데, 문단을 나누는 것과 문단 안에서 줄만 바꾸는 것이다.

 

ex)

markdown
연락처는 아래와 같습니다.

담당자: 홍길동\
소속: 개발팀\
내선: 1234

4. 강조

4-1 개념

  • 강조는 문장 안의 일부를 굵게 하거나 기울려 표시, 마크다운은 별료('*')나 밑줄('-')로 쓴다.
    강조에 두 단계가 있는데, 하나로 감싸면 기울임, 두 개로 감싸면 굵게 표시된다.

4-2 별표와 밑줄의 차이

  • 밑줄은 앞뒤가 글자로 둘러싸인 자리에서는 강조로 인식되지 않는다. 별표에는 그런 제약이 없다.
입력결과
GameObjectGameObject - 강조가 적용됩니다
Game_Object_Game_Object_ - 글자 그대로 표시됩니다

-이 방법은 강조 기호 뿐만 아니라 '#', '-', ' [', ` 등에도 쓸 수 있습니다.

4-3 주의

  • 빌드 전에 ==반드시== Scenes/Main 씬이 Build Settings에 등록되어 있는지
    확인합니다. 등록되지 않은 씬은 빌드 결과물에 포함되지 않는다.
    게임 오브젝트에 기능을 붙이는 단위를 컴포넌트라고 부른다.

 

5. 목록

5-1 개념

  • 목록은 여러 항목을 나열하는 표시이다. 순서가 의미를 갖는지에 따라 두 종류러 나뉜다.
    순서 없는 목록 - 항목 사이에 순서가 없다. 준비물이나 특징을 나열할 때 쓴다.
    순서 있는 목록 - 항목의 순서가 의미를 갖습니다. 절차나 단계를 적을 때 쓴다.
  1. 순서 없는 목록 줄 앞에 -, +, * 중 하나를 놓고 공백을 넣습니다. 세 기호 모두 같은 결과를 냅니다.
markdown
- 첫째 항목
- 둘째 항목
- 셋째 항목

  1. 순서 있는 목록 줄 앞에 숫자와 마침표를 놓고 공백을 넣습니다.
markdown
1. 저장소를 내려받습니다.
2. Unity Hub에서 프로젝트를 엽니다.
3. 씬을 열고 재생합니다.
  `

### 5-2 중첩

- 목록 안에 목록을 넣으려면 들여쓰기를 한다.  
들여쓰기 칸 수는 ==정해진 숫자가 아니라 상위 항목의 내용이 시작되는 위치==에 맞춘다.
- 상위 항목
- 하위 항목
- 하위 항목
- 상위 항목

### 5-3 목록 안에 다른 내용 넣기

- 목록 항목 아래에 문단이나 코드 블록을 넣으려면 같은 규칙으로 들여씁니다.

```markdown
1. 프로젝트를 내려받는다.

 내려받은 뒤 압축을 풀어 둡다.

2. 아래 명령으로 확인한다.

git --version

실행 방법

  1. 저장소를 내려받는다.
  2. Unity Hub에서 Add를 눌러 폴더를 지정한다.
  3. Scenes/Main 씬을 연다.
  4. 재생 버튼을 누른다.

 

6. 코드

6-1 개념

  • 문서 안에 코드를 넣을 때는 일반 문장과 구분되게 표시한다. 구분하지 않으면 두 가지 문제가 생긴다.
  1.  코드 안의 기호가 마크다운 문법으로 해석된다.
  2. 읽는 사람이 어디까지가 코드인지 알기 어렵다
  • 코드 표시에는 두 가지가 있는데, 문장 중간에 짧게 넣는 인라인 코드와, 여러 줄을 통째로 넣는 코드 블록이다.

6-2 문법 형식

  1. 인라인 코드
  • 백틱()으로 감쌉니다. 백틱은 키보드에서 숫자 1 왼쪽, 물결표(~)와 같은 자리에 있다. 설정 파일은 config.json이며Assets` 폴더 아래에 둔다.
    설정 파일은 config.json 이며 Assets 폴더 아래에 둔다.
  1. 코드 블록
  • 백틱 세 개로 시작하고 세 개로 닫습니다. 이 표시를 펜스(fence)라고 부른다.
markdown

using UnityEngine;

public class Player : MonoBehaviour { private void Start() { } }

plain text
  1. 언어 지정
  • 여는 펜스 뒤에 언어 이름을 적으면 그 언어의 문법에 맞게 색이 입혀진다.```csharp

    markdown
    ```csharp
    using UnityEngine;
    
    public class Player : MonoBehaviour
    {
        [SerializeField] private float _moveSpeed = 5f;
    
        private void Update()
        {
            float horizontal = Input.GetAxis("Horizontal");
            transform.Translate(Vector3.right * horizontal * _moveSpeed * Time.deltaTime);
        }
    }
    
    csharp
    ```csharp
    using UnityEngine;
    
    public class Player : MonoBehaviour
    {
        [SerializeField] private float _moveSpeed = 5f;
    
        private void Update()
        {
            float horizontal = Input.GetAxis("Horizontal");
            transform.Translate(Vector3.right * horizontal * _moveSpeed * Time.deltaTime);
        }
    }
    
  • 언어를 지정하지 않으면 색 없이 고정폭 글꼴로만 표시

    언어지정자
    C#'csharp'
    JSON'json'
    마크다운'markdown'
    명령어'bash'

6-3 백틱 개수

  • 여는 펜스가 백틱 3개일 때 안쪽 내용에 백틱 3개짜리 줄이 나오면, 그 줄이 닫는 펜스 조건을 만족하므로 거기서 코드 블록이 끝나 버립니다. 바깥을 4개로 하면 안쪽의 3개는 닫는 조건을 만족하지 않아 내용으로 남는다.
바깥 펜스안쪽의 백틱 3개를결과
백틱 3개닫는 펜스로 인식코드 블록이 중간에 끊깁니다
백틱 4개조건 미달로 판단내용으로 그대로 남습니다

ex).

csharp
private void Update()
{
    float horizontal = Input.GetAxis("Horizontal");
    transform.Translate(Vector3.right * horizontal * _moveSpeed * Time.deltaTime);
}

-명령어를 안내할 때도 코드 블록을 쓴다.

go
````markdown
버전을 확인합니다.

```bash
git --version
yaml

---

&nbsp;

# 7. 인용문과 수평선

### 7-1 개념

- 인용문은 다른 것에서 가져온 문장이나 특별히 구분해 보일 내용을 표시합니다.  
렌더링하면 왼쪽에 세로선이 붙고 안쪽으로 들여쓰인 형태로 표시된다.  
수평선은 문서에 **가로선**을 그어 내용을 크게 나눈다.

**인용문**  
**-줄 앞에 '>'를 붙인다**

---

&nbsp;

7. 인용문과 수평선

7-1 개념

  • 인용문은 다른 곳에서 가져온 문장이나 특별히 구분해 보일 내용을 표시한다.
  • 렌더링하면 왼쪽에 세로선이 붙고 들여쓰인 형태로 표시된다.

7-2 인용문

  • 줄 앞에 '>'를 놓고 공백을 넣는다.
  • '>'를 여러 개 겹치면 인용 안의 인용이 된다.
  • 인용문 안에는 목록,코드 블록 같은 다은 문법을 넣을 수 있다.

8. 링크와 이미지

8-1 개념

  • ㄹ이크는 다른 문서나 웹 주소로 이동하는 표시이고, 이미지는 그림을 문서 안에 표시하는 것이다.
  • 두 문법은 형태가 거의 같고 이미지 문법이 링크 문법 앞에 느낌표를 붙인 모양이다.

8-2 문법 형식

  • 대괄호에 표시할 글자를, 소괄호에 주소를 쓴다.
  • 주소 뒤에 따옴표로 설명을 붙이면 마우스를 올렸을 떄 표시된다.

문서 내 이동

  • 같은 문서 안의 제목으로 이동하는 링크를 만들 수 있다.
  • 주소 자리에 '#'과 제목을 소문자로 바꾸고 공백을 '-'로 바꾼 값을 쓴다.

상대 경로

  • 같은 저장소 안의 다른 파일로 연결할 떄는 전체 주소 대신 상대 경로를 쓴다.
요소위치역할
!맨 앞링크가 아니라 이미지임을 표시
[대체 텍스트]대괄호이미지를 볼 수 없을 때 표시할 설명
(경로)소괄호이미지 파일의 위치

9. 표

9-1 개념

  • 표는 항목을 행과 열로 정리해 보이는 것이다.
  • 여러 대상을 같은 기준으로 비교할 때 문장보다 읽기 쉽다.

9-2 문법 형식

  • 파이프(|)로 칸을 나눕니다. 첫 줄이 열 이름이고, 둘째 줄은 -로 이뤄진 구분행이며, 셋째 줄부터 내용입니다.
markdown
| 컴포넌트 | 역할 |
|---|---|
| Transform | 위치·회전·크기 |
| Rigidbody | 물리 연산 |
| Collider | 충돌 판정 |

정렬

  • 구분행에 콜론을 넣어 열의 정렬을 지정합니다.
    markdown
    | 왼쪽 | 가운데 | 오른쪽 |
    |:---|:---:|---:|
    | 1 | 2 | 3 |
    | 10 | 20 | 30 |
    
    

10. 확장 문법

10-1 개념

  • 표준 마크다운에 없지만 GitHub에서 쓸 수 있는 문법들이 있다.
  • 표도 그중 하나였고, 이 장에서는 나머지를 모아 다룬다
  • GFM에는 공식 명세 문서가 있는데, 그 문서에 실린 확장 목록과 GitHub이 실제로 렌더링하는 문법의 범위가 같지 않는다.

10-2 문법 형식

  • 목록 항목 앞에 대괄호를 넣어 완료 여부를 표시한다.
markdown
- [x] 플레이어 이동 구현
- [x] 장애물 생성
- [ ] 점수 표시
- [ ] 사운드 추가

렌더링하면 각 항목 앞에 체크 상자가 붙고, [x]로 표시한 항목은 체크된 상태로 나타난다.

 

취소선

  • 물결표 두 개로 감싼다
markdown
~~취소된 내용~~

취소된 내용

수정 이력을 남길 때나 더 이상 유효하지 않은 항목을 표시할 때 쓴다.

 

각주

  • 본문에 표시를 남기고 문서 아래쪽에 내용을 적는다.

알림 상자

  • 인용문 첫 줄에 정해진 표시를 넣으면 색과 아이콘이 붙은 상자로 표시된다.
    markdown
    > [!NOTE]
    > 참고할 내용입니다.
    
    > [!WARNING]
    > 주의가 필요한 내용입니다.
    

GitHub이 지원하는 종류는 다섯 가지입니다.

표시용도
[!NOTE]알아 두면 좋은 내용
[!TIP]도움이 되는 요령
[!IMPORTANT]반드시 알아야 할 내용
[!WARNING]주의가 필요한 내용
[!CAUTION]위험을 알리는 내용

다이어그램

  • 코드 블록의 언어 자리에 ' mermaid'를 적으면 그 안의 내용이 그림으로 그려진다

수식

  • 수학 식을 넣을 수 있습니다. LaTeX(레이텍, 수식을 글자로 적는 표기법) 문법으로 쓰면 식의 모양으로 그려집니다.
  • 문장 안에 넣을 때는 달러 기호로 감쌉니다.
markdown
화면 비율은 $16:9$ 이고 대각선 길이는 $\sqrt{16^2 + 9^2}$ 입니다.

달러 기호를 글자로 쓸 때는 자리에 따라 방법이 다릅니다. 한 줄 안에 달러 기호가 두 개 나오면 그 사이가 식으로 해석될 수 있어, 가격을 적을 때 자주 겪습니다.

 

문서에 주의 사항을 넣을 때 알림 상자를 씁니다.

markdown
> [!WARNING]
> 이 스크립트는 씬에 하나만 존재해야 합니다.
> 두 개 이상이면 입력이 중복 처리됩니다.

11. 렌더러에 따른 차이

11-1 개념

  • 같은 .md 파일이라도 어떤 프로그램으로 여느냐에 따라 결과가 달라진다. 표준에 있는 문법은 어디서나 같게 보이지만, 확장 문법은 그 확장을 지원하는 곳에서만 동작한다.

11-2 문법 형식

 

문법뜻GitHub에서는
[[노트 이름]]위키링크. 같은 볼트(vault, Obsidian이 하나의 묶음으로 다루는 폴더)의 다른 노트로 연결글자 그대로 표시됩니다
![[파일명]]임베드. 다른 파일의 내용을 문서 안에 끌어와 표시글자 그대로 표시됩니다
글자하이라이트. 형광펜 표시등호가 그대로 보입니다

비슷하지만 다른 문법

  • 인용문에 표시를 넣어 상자를 만드는 문법은 양쪽 모두에 있다.

환경별 지원 정리

문법표준GitHubObsidian
제목·문단·강조·목록OOO
인용문·수평선OOO
링크·이미지OOO
코드 블록OOO
꺾쇠 자동 링크 <주소>OOO
맨 주소 자동 링크XOO
표XOO
작업 목록XOO
취소선XOO
각주XOO
다이어그램(mermaid)XOO
수식 $...$ · $$...$$XOO
수식 백틱형 · math 코드 블록XO공식 문서에 없음
알림 상자·콜아웃XO (5종)O (다수)
하이라이트 ==XXO
위키링크 [[ ]]XXO
임베드 ![[ ]]XXO

11-3 사용 예

  • 두 환경 모두에서 문제없이 보여야 하는 문서는 아래 기준으로 쓴다.

-링크와 이미지는 표준 문법으로 씁니다. [[ ]]를 쓰지 않습니다.

-강조는 *와 로 합니다. ==를 쓰지 않습니다.

-표·작업 목록·취소선은 써도 됩니다. 양쪽 모두 지원합니다.

-알림 상자를 쓴다면 GitHub이 지원하는 다섯 종류 안에서 고릅니다.