Skip to content
created by Aha00aAha00a at 2019-12-22
last modified by Aha00aAha00a at 2026-09-26
revision: 33

Interpreter

AhaMark

인터프리터는 본문을 무엇으로 읽을지 고르는 장치입니다. 같은 글자라도 어느 인터프리터가 읽느냐에 따라 위키 문법이 되기도 하고, Markdown 이 되기도 하고, 표나 다이어그램이 되기도 합니다.

Macro가 문서 안에서 짧은 기능 하나를 부르는 것이라면, 인터프리터는 그 구간의 문법 자체를 바꿉니다. 매크로는 문장 사이에 끼워 넣고, 인터프리터는 문서나 구간을 통째로 맡깁니다.

1. 문서 전체에 지정하기

문서 첫 줄에 Shebang(#!)과 이름을 적습니다. 첫 줄이 #!Markdown 이면 그 문서 전체가 Markdown 으로 읽힙니다.

지정하지 않으면 InterpreterWiki 입니다.

2. 구간만 맡기기

대괄호 3개로 감싼 구간은 그 안의 첫 줄이 가리키는 인터프리터가 읽습니다. 아래는 왼쪽이 쓴 것, 오른쪽이 그려진 것입니다.

Raw Preview
[[[#!Table tsv 1
이름	설명
가	첫째 줄
나	둘째 줄
]]]

이름

설명

가

첫째 줄

나

둘째 줄

구간 안의 기본값은 InterpreterText 입니다. 문서 기본값(Wiki)과 다릅니다 — 이름 없이 감싸면 위키 문법으로 읽지 않고 쓴 글자 그대로 나옵니다(백틱은 예외 — 아래 구간 안의 백틱). 단, 첫 줄이 #!var · #!read · #!write · #!redirect 같은 디렉티브이면 Text 가 아니라 위키 문법으로 읽고, 그 #! 줄들은 화면에 나오지 않습니다. 이런 줄을 보여 주려면 [[[#!Vim text 로 감쌉니다.

구간은 하나씩 따로 편집됩니다. 그려진 구간마다 그 구간의 줄 범위를 가리키는 편집 링크가 붙어서, 긴 문서에서도 표나 차트 하나만 열어 고칠 수 있습니다.

3. 이름 뒤에 오는 것은 인자입니다

이름 다음의 낱말들은 그 인터프리터에게 넘어갑니다.

이름은 대소문자를 가리지 않습니다. #!table, #!Table, #!TABLE 이 모두 같습니다. 2026-09-12 전에는 #!Vim 과 #!Schema 만 이 표기 그대로 써야 했습니다 — #!vim 은 Error! 를 냈고, #!schema 는 페이지 전체를 오류로 끝냈습니다.

4. 인터프리터가 아닌 #! 줄

문서 맨 위의 #! 줄은 여러 개 이어 쓸 수 있고, 인터프리터 이름이 아닌 것도 섞입니다. redirect, var, read, write 는 인터프리터를 찾을 때 건너뜁니다 — 그래서 #!redirect 를 적은 문서가 redirect 라는 인터프리터를 찾다가 실패하는 일이 없습니다.

#!read 와 #!write 는 이름만 남아 있고 권한 판정에는 더 이상 쓰이지 않습니다. AccessControl 을 보세요.

5. 이름을 못 찾으면

Interpreter not found. 오류 상자에 쓴 그대로가 다시 나옵니다. Macro 의 인자 오류와 같은 방식이라, 어느 구간의 어느 이름이 문제인지 문서에서 바로 보입니다.

닫는 ]]] 를 빠뜨려도 오류는 나지 않습니다. 여는 괄호는 그 뒤 처음 나오는 ]]](보통 다음 구간의 것)와 짝이 되어, 사이의 글과 다음 구간의 여는 줄까지 한 구간으로 먹힙니다. 뒤에 ]]] 가 하나도 없을 때만 여는 괄호부터 문서 끝까지가 본문 글자가 됩니다. 구간이 이상하게 보이면 닫는 괄호부터 찾으세요.

6. 그리다 실패하면

인터프리터가 예외를 내면 그 구간 자리에 #!이름 failed - 예외 오류 상자가 나오고, 문서의 나머지는 그대로 그려집니다. 예외 전체는 서버 로그에 남습니다. 2026-09-26 전에는 구간 하나의 예외가 문서 전체를 500 으로 만들었습니다 — 빈 #!Map 하나, vi 를 못 부른 #!Vim 하나가 그 문서의 다른 구간까지 전부 안 보이게 했습니다. 소유자가 «실패하지 않기로» 정해서, 못 찾은 이름과 같은 방식으로 상자에 담습니다. 매크로도 같습니다(Macro).

7. 구간 안의 백틱

리터럴 구간 안의 백틱은 쓴 그대로 나옵니다. [[[#!Text · [[[#!Vim 구간, InterpreterWikiSyntaxPreview 의 Raw 칸, 그리고 Text 로 읽히는 이름 없는 [[[...]]] 구간에서는 백틱이 코드로 바뀌지 않고 쓴 글자 그대로 보입니다. 백틱은 문서 전체에서 구간보다 먼저 처리되지만(백틱 안의 [[[ 와 {{변수}} 를 지키려는 것), 리터럴 구간은 그 처리에서 비켜 둡니다. 2026-05-30~2026-09-15 사이에는 그 범위가 구간 안까지 닿아 코드 모양(백틱 둘이면 복사 상자)으로 나왔었습니다.

본문을 그대로 넘기는 구간도 마찬가지입니다. #!Kanban · #!Gantt · #!Mermaid · #!Math · #!Html 은 본문을 브라우저 쪽이나 페이지에 그대로 넘깁니다. 넘기기 전에 백틱을 코드로 바꾸면 Mermaid 다이어그램이나 MathJax 수식, 직접 쓴 HTML 안에 <code> 가 들어갑니다. 가장 나빴던 것은 Kanban 입니다 — 보드는 그려진 본문을 태그를 떼고 읽어서, 다음 보드 저장이 백틱을 지운 채로 문서를 다시 썼습니다. 2026-09-25 부터 이 다섯도 백틱을 그대로 둡니다. 카드 글은 어차피 보드가 AhaMark 로 다시 그리므로, 백틱이 코드로 보이는 것은 거기서 일어납니다(InterpreterKanban).

위키형 구간(#!Quote · #!Table · #!Fold 등)은 본문을 다시 위키로 읽으므로, 그 안의 백틱은 예전과 같이 코드로 나옵니다. #!Markdown 도 그대로 둡니다 — txtmark 이 같은 코드 모양을 만들기 때문에 바꿀 이유가 없습니다. 문장 안에서도 백틱 둘로 감싸 코드로 보여 줍니다 — Copied!!.

8. List

10. See Also

10.2. Similar Pages

Similar pages by cosine similarity. Words after page name are term frequency.

  • 49.40% InterpreterWikiSyntaxPreview interpreter(29:9), 구간(10:1), 그대로(9:2), 이름(8:3), 안의(8:2), table(8:1), vim(8:1), preview(3:6), raw(2:7), wiki(5:3)
  • 36.49% Variable interpreter(29:4), 문서(11:8), 그대로(9:3), 이름(8:4), var(2:10), 백틱(6:2), 같은(5:2), wiki(5:1), 인터프리터가(5:1), 않습니다(4:2)
  • 31.83% AhaMark interpreter(29:2), wiki(5:1), 본문을(5:1), 위키(4:1), aha(3:2), mark(3:2), 문법(3:2), macro(2:1), 기본(1:2), 목록(1:2)

10.3. Adjacent Pages

Control
≤ 32
all
1.0x
1.0x
80
-120
ON
Metrics
Nodes(visible/total)0/0
Links(visible/total)0/0
Avg degree0.00
Depth coverage0
Queue(fetch/graph)0 / 0
Zoom(scale)1.00x
Ctrl/⌘ + Scroll: Zoom
Root 1-hop 2-hop+