최근 수정 시각 : 2024-01-20 21:52:26

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


파일:상위 문서 아이콘.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()] 7119979 ]]
정답은 먼저 연 구문이 우선 적용된다. 다른 문법 구문들 사이에서도 대체로 순서가 먼저 온 것이 우선적으로 적용된다. 하지만 이런 관계는 항상 성립하는 것은 아니다. 다음과 같은 예시를 보자.


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

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

2.2. 해석 범위

설명에 앞서 구문에 칠한 색상에 대해 설명한다.
  • #나무마크: 내부에 다른 나무마크 구문이 개입할 수 있다.
  • @변수: 인클루드 매개변수 구문만 개입할 수 있으며, 타 나무마크 문법을 적용할 수 없다.
    • @하위문법: 인클루드 매개변수만 적용되는 영역 중에서 별도의 문법이 적용되기도 하는데 이를 '하위문법'이라고 한다. 매크로의 소괄호 내부나, 링크에서의 문서간 상대 링크 지정을 하위문법이라고 부른다.
  • $상수: 매개변수 구문을 포함한 모든 나무마크 구문이 개입할 수 없다. 반드시 정해진 값들중에서만 골라 써야한다.
  • -텍스트: 어떤 텍스트도 허용되지 않는다.
  • -개행: 개행이 허용되지 않는다. "\
    " 매크로에 의한 개행은 허용된다.
  • (반복)*n~m: 괄호 안의 내용이 n번에서 m번까지 반복될 수 있다. 괄호는 상황에 따라 (소괄호) 뿐만 아니라 {중괄호}, [대괄호]도 쓰일 수 있다.

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 @하위문법}}}{{{
\ 파일:{{{

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

5.2. <math> 구문

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

5.3. 셀 구문


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