나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2024-12-01 10:28:01

나무위키:문법 도움말/개발


파일:상위 문서 아이콘.svg   상위 문서: 나무위키:문법 도움말
파일:나무위키:로고2.png파일:나무위키:로고2 c7c7c7.svg 나무위키의 규정
기본방침 (문서 관리 방침 · 토론 관리 방침 · 이용자 관리 방침 · 운영 관리 방침 /운영진 선출) · 편집지침 (일반 문서 · 특수 문서 · 특정 분야 (인문사회 · 과학기술 · 문화예술 · 창작물) · 등재 기준 · 표제어)
파일:나무위키:로고2.png파일:나무위키:로고2 c7c7c7.svg 나무위키의 도움말
FAQ · 도움말 (기능 · 편집 · 문법 (심화 · 수식 · 개발) · 토론 · 설정 · 소명 · 권리침해 · 자주 하는 실수 · 문서 삭제식 이동 · 더미)
파일:나무위키:로고2.png파일:나무위키:로고2 c7c7c7.svg 나무위키의 운영
관리자 · 중재자 · 역대 운영진 · 운영진 지원 · 운영 도움말 (관리 · 중재 · 권한) · 접근 제한 (문서 목록) · 운영회의 (시행규칙 · 안건 건의) · 운영진 임명 회의 /진행 중인 회의 · 봇 리스트 · 투명성 보고서 · 소급 적용 규정 일람 · 공지 목록
파일:나무위키:로고2.png파일:나무위키:로고2 c7c7c7.svg 나무위키의 기능
분류 · 게시판 · 엔진 (업데이트) · 계정 · 통계 · 연습장 · 내 문서함 · 문서 작성 요청
파일:나무위키:로고2.png파일:나무위키:로고2 c7c7c7.svg 나무위키의 분류
프로젝트 · 주요 페이지 링크 · 보존문서 · 파일 · · 템플릿


1. 개요2. 전제
2.1. 문법의 적용 순위2.2. 해석 범위
3. 1순위
3.1. 리다이렉트3.2. 문단 구문3.3. 매크로 구문3.4. 링크 구문
3.4.1. 외부 링크3.4.2. 파일3.4.3. 분류
3.5. 3중괄호 구문
3.5.1. #!(shebang) 사용
3.5.1.1. folding3.5.1.2. wiki3.5.1.3. syntax
3.6. 리스트, 인용문3.7. 주석
4. 2순위
4.1. 각주
5. 3순위
5.1. 텍스트 효과5.2. <math> 구문5.3. 셀 구문

1. 개요

이 문서는 나무위키의 문법을 프로그래밍 언어론적 관점에서 분석하며, 사용법 자체에 대한 서술은 매우 자제하여 서술한다. 사용법에 대해서는 상위 문서를 참고.

개발진이 직접 공인한 것은 거의 없고, 위키 문법을 실험한 것을 바탕으로 역설계하여 작성한다.

2. 전제

2.1. 문법의 적용 순위

  1. 구문 A를 연다.
  2. 구문 B를 연다.
  3. 구문 C를 처리한다.
  4. 구문 B를 처리한다.
  5. 구문 B를 닫는다.
  6. 구문 A를 처리한다.
  7. 구문 A를 닫는다.



다음과 같은 예시를 보자.
링크와 매크로를 서로 엮은 모습
[[[pagecount(]])] [pagecount([[)] ]]
매크로 pagecount와 링크 구문이 서로 엮여있다. 분명 두 구문은 모두 유효하다.[1] 그렇다면 어떤 구문이 먼저 적용될까?
링크가 적용됨 매크로가 적용됨
[pagecount()] 부팅중 ]]
정답은 먼저 연 구문이 우선 적용된다. 다른 문법 구문들 사이에서도 대체로 순서가 먼저 온 것이 우선적으로 적용된다. 하지만 이런 관계는 항상 성립하는 것은 아니다. 다음과 같은 예시를 보자.


굵기 효과와 매크로를 서로 엮은 모습
'''[pagecount(''')]
[pagecount(''')]'''
이런 경우, 첫번째 셀은 굵기 구문이 먼저 시작되었으니 [pagecount\()]처럼 작성될 것 같아 보인다. 하지만 결과는 다르다.
굵기 효과와 매크로를 서로 엮은 모습
[pagecount()]
부팅중'''
이와 같이 무조건 매크로가 먼저 적용된 것을 볼 수 있다.

일반적으로, 하이퍼링크 문법이나 텍스트 문법 등 내부의 텍스트에 나무마크를 적용할 수 있는 문법을 후순위로 처리하게 된다. 따라서 위의 사례와 같이 나무마크를 처리하지 않는 매크로 문법이 먼저 처리된 것으로 볼 수 있다.

2.2. 해석 범위

설명에 앞서 구문에 칠한 색상에 대해 설명한다.

3. 1순위

특이점이라면, 문법 구문 내에서 개행이 지원되는 문법은 전부 1순위에 해당한다.

3.1. 리다이렉트

-텍스트
#redirect @대상문서
(이후 구문은 무시됨)

3.2. 문단 구문

-텍스트(=)*1~6 #나무마크-개행 (=)*1~6-텍스트
-텍스트(=)*1~6# #나무마크-개행 #(=)*1~6-텍스트
구문이 반드시 한 행을 전부 차지해야 한다.

양옆의 등호(=)는 서로 갯수가 같아야 한다.

양쪽 등호 안쪽에 #을 넣으면 기본 숨김 상태가 된다.

문단 구문은 해당 위치에 암묵적으로 's-(문단 번호)'와 '(문단 이름)' 앵커를 남긴다.

3.3. 매크로 구문

[$매크로 이름]
[$매크로 이름(@매개변수)]
유효한 매크로 이름
매개변수가 사용됨 매개변수가 사용되지 않음
age, anchor, dday, include, youtube, nicovideo, kakaotv, pagecount, navertv, vimeo br, clearfix, date, datetime, footnote, tableofcontents, 각주, 목차
매크로의 인수는 0~1개이다. 소괄호 밖은 단일 행이지만, 소괄호 안은 다중 행을 지원한다. 유효한 매크로 외 다른 이름을 호출하려고 시도하면 매크로 문법으로 취급되지 않는다. 대소문자는 구분하지 않는다.

매개변수 구문 내에는 공백을 포함한 어떤 텍스트를 쓰든 매크로 구문 자체는 유효하다.

|| [include(||)] || 와 같이 적었을 때 표가 뜨지 않는 것으로 보아 매개변수를 받는 매크로 구문 역시 셀(3순위)보다 먼저 처리되는 것으로 보인다. 만약 4순위 이후에 처리된다면, 아래와 같이 나와야 정상이다.
\[include\()]

그러나 실제 출력 결과는 아래와 같다.
[include()]

3.4. 링크 구문

\[\[@하위문법-개행]]
\[\[@하위문법#@앵커-개행]]
\[\[#@앵커-개행]]
\[\[@하위문법|#나무마크-개행]]
\[\[@하위문법#@앵커|#나무마크-개행]]
\[\[#@앵커|#나무마크-개행]]
6개의 바리에이션이 있다.

인수는 1~3개를 받는다. 단일 행 문법이며, 위에 적은 것부터 적용된다.

구조적으로 링크 속 링크가 가능해보이지만 실제 결과는 조금 다르게 나온다.

[[가#나#다]]처럼 링크를 건다면 ‘가#나’ 문서의 ‘다’ 앵커로 링크가 걸린다.

3.4.1. 외부 링크

\[\[$프로토콜://@하위문법-개행]]
\[\[$프로토콜://@하위문법|#나무마크-개행]]
유효한 프로토콜
http, https, ftp

하위문법은 URL에서 프로토콜을 뺀 부분이다. (앵커도 하위문법에 포함된다.)

URL의 호스트 부분에는 2글자 이상의 최상위 도메인과 2단계 도메인이 있어야 유효한 외부 링크이다.

인수는 2~3개를 받는다. 단일 행 문법이며, 위에 적은 것부터 적용된다.

3.4.2. 파일

\파일:{{{#blue,#skyblue @하위문법}}}{{{
\파일:{{{#blue,

3.4.3. 분류

\
\

3.5. 3중괄호 구문

3.5.1. #!(shebang) 사용

\{\{\{#!$기능 이름 @속성
#본문}}}
유효한 기능 이름
folding, wiki, syntax
3.5.1.1. folding
\
{{{#green #제목}}}
#본문\
어떤 내용을 숨겼다가 사용자가 제목을 누르면 펼쳐서 볼 수 있게 하는 문법이다.

#제목에는 접기 문법의 제목을 받는다. 해당 내용은 접힌 상태이든지 펼쳐진 상태이든지 항상 표시된다. 굵게 표시되며, 본문을 접거나 펼치는 기능의 링크가 걸린다. 입력하지 않으면 More이 표시된다.

#본문에는 숨길 내용을 입력한다. 기본적으로는 숨겨져 있으며 제목을 누르면 표시된다.
3.5.1.2. wiki
\
#본문\
위키 문법을 포함하고 CSS 스타일을 적용할 수 있는 div 블록을 만든다.

@스타일에는 div 블록에 적용할 CSS 스타일을 입력한다. CSS 문법을 활용한다.

#본문에 입력된 위키 문법이 div 블록의 내용으로 들어간다.
3.5.1.3. syntax
\
#!syntax {{{#gray $언어명}}}
{{{#gray &소스 코드}}}\
특정 프로그래밍 언어로 작성된 소스 코드의 문법을 강조하여 표시한다.

유효한 $언어명나무위키:문법 도움말/심화 참조.

&소스 코드 부분에 강조하여 표시할 소스 코드를 입력한다.

3.6. 리스트, 인용문

-텍스트( )*1~*#나무마크
-텍스트( )*1~$번호.#나무마크
-텍스트( )*1~$번호.#@시작#나무마크
-텍스트(>)*1~#나무마크
유효한 번호
1, a, A, i, I

@시작에는 0 이상의 정수가 유효하다.

3.7. 주석

-텍스트\#\#&주석 내용

4. 2순위

4.1. 각주

5. 3순위

5.1. 텍스트 효과

\+{{{#blue,#skyblue @크기}}} {{{#green #나무마크}}}\
\-{{{#blue,#skyblue @크기}}} {{{#green #나무마크}}}\
\#{{{#blue,#skyblue @색상}}} {{{#green #나무마크}}}\
\#{{{#blue,#skyblue @라이트모드 색상}}},#{{{#blue,#skyblue @다크모드 색상}}} {{{#green #나무마크}}}\
인수는 1개에서 2개를 받는다. 단일 행 문법이다.

5.2. <math> 구문

파일:상세 내용 아이콘.svg   자세한 내용은 나무위키:문법 도움말/심화/TeX 문서
번 문단을
부분을
참고하십시오.

5.3. 셀 구문


[1] 매크로 pagecount의 매개변수로 이름공간이 와야 의미가 있지만 소괄호 안에 무엇이 오든 매크로 구문 자체는 성립한다. pagecount의 경우 매개변수에 알맞은 이름공간이 오지 않으면 전체 문서의 수를 보여준다.