| 2026-09-08T15:51:00 |
Aha00a |
1
|
0
|
= Variable 문서 변수 |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
1
|
문서 안에서 여러 번 쓰이거나 자주 바뀌는 값을 한 곳에 모아 두고 본문에서 꺼내 씁니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
2
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
3
|
== 문법 |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
4
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
5
|
값은 문서 맨 위 `#!var` 디렉티브로 정하고, 본문에서 `{{이름}}` 으로 꺼냅니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
6
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
7
|
[[[#!Vim text |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
8
|
#!var 제품명 AhaWiki |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
9
|
#!var 담당자 홍 길동 |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
10
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
11
|
= {{제품명}} 계약서 |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
12
|
담당: {{담당자}} |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
13
|
]]] |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
14
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
15
|
* '''`#!var` 는 문서 맨 위에 있어야 합니다.''' 디렉티브는 `#!` 로 시작하는 줄이 이어지는 동안만 읽고, `#!` 아닌 줄이 처음 나오면 거기서 끝납니다. `#!read` · `#!write` 같은 다른 디렉티브와 나란히 두면 됩니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
16
|
* '''첫 공백까지가 이름, 나머지가 값입니다.''' 값에 공백·쉼표가 들어가도 됩니다 — `#!var 계약금액 금100,000,000원` 은 그대로 들어갑니다. 이름과 값은 양쪽 공백을 떼고 저장합니다. |
| 2026-09-12T10:08:28 |
Aha00a |
2
|
17
|
* '''이름에 한글을 써도 됩니다.''' 공백·탭과 `}` 만 아니면 무엇이든 이름이 됩니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
18
|
* '''정의하지 않은 이름은 그대로 남습니다.''' `{{없는이름}}` 은 오류가 아니라 `{{없는이름}}` 으로 출력됩니다. |
| 2026-09-12T10:08:28 |
Aha00a |
2
|
19
|
* '''백틱 안은 치환하지 않습니다.''' `` `{{제품명}}` `` 은 글자 그대로 나옵니다 — 문법 자체를 설명할 때 쓸 수 있습니다. 단, `#!Paper` 문서에서는 백틱 안도 치환됩니다 — Paper 가 위키 문법보다 먼저 치환하기 때문입니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
20
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
21
|
== 어디까지 되나 |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
22
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
23
|
치환은 '''문서 하나 안'''에서만 일어납니다. 다른 문서의 변수를 꺼내 쓸 수는 없습니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
24
|
|
| 2026-09-15T17:25:24 |
Aha00a |
3
|
25
|
`[[[...]]]` 블록 '''안에서도''' 치환됩니다. 다만 [InterpreterPaper] 의 `class` · `docId` 와 [InterpreterGantt] 의 `defaultEst` 는 치환이 아니라, 그 인터프리터가 받은 본문 맨 위의 `#!var` 줄에서 읽습니다. 블록으로 쓸 때는 `[[[#!Gantt` 바로 아랫줄에 두고, 바깥 문서의 `#!var` 는 블록 안 인터프리터에게 가지 않습니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
26
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
27
|
== 옛 방식 |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
28
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
29
|
2026-09-08 이전에는 `[[Set(이름,값)]]` · `[[Get(이름)]]` 매크로가 같은 일을 했습니다. [MacroGetMacroSet] 참고. 두 체계가 나란히 있었고, 실사용은 `#!var` 쪽으로 이미 기울어 있었습니다 — 조사 시점에 `#!var` 는 329곳, `Set`/`Get` 은 문서 3장뿐이었습니다. 그 3장을 옮기고 매크로는 제거했습니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
30
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
31
|
`[[Set]]` 은 문서 중간에서도 값을 정할 수 있었지만 `#!var` 는 맨 위에만 옵니다. 옮긴 문서들은 이미 전부 맨 위에 모아 두고 있어서 실제로 잃은 것은 없었습니다. |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
32
|
|
| 2026-09-08T15:51:00 |
Aha00a |
1
|
33
|
== 관련 문서 |
| 2026-09-08T15:51:00 |
Aha00a |
1
|
34
|
|
| 2026-09-15T17:25:24 |
Aha00a |
3
|
35
|
* [InterpreterPaper] |
| 2026-09-15T17:25:24 |
Aha00a |
3
|
36
|
* [InterpreterGantt] |
| 2026-09-15T17:56:27 |
Aha00a |
4
|
37
|
* [MacroGetMacroSet] |