참고글:

https://arca.live/b/textgame/9442611


위 링크에서 PRINTW계 명령어를 사용할 경우는 위의 방법들을 적용하기 힘들다는 지적이 있어 만들어봄


@PRINTER(TEXT)
#DIMS DYNAMIC TEXT
#DIM DYNAMIC STRSTART
#DIM DYNAMIC STREND
#DIM DYNAMIC STRLENGTH

STRLENGTH = STRLENSU(TEXT)

WHILE 1
STREND = STRFINDU(TEXT, "\t", STRSTART)
SIF STREND < 0
BREAK

PRINTSW SUBSTRINGU(TEXT, STRSTART, STREND - STRSTART)

STRSTART = STREND + 1
WEND

PRINTS SUBSTRINGU(TEXT, STRSTART, STRLENGTH - STRSTART)

사용은 다음과 같이 하면 됨

@SYSTEM_TITLE
#DIMS TEXT

{
TEXT '=
@"내가 그의 이름을 불러주기 전에는\n" +
@"그는 다만\n" +
@"하나의 몸짓에 지나지 않았다\t" +
@"내가 그의 이름을 불러주었을 때,\n" +
@"그는 나에게로 와서\n" +
@"꽃이 되었다.\t"
}

CALL PRINTER, TEXT

큰따옴표 앞에 @를 붙인건 문자열식(PRINTFORM에서 쓰는 %%같은게 포함된 문자열)에도 대응시키기 위해서임. 그런거 없으면 떼도 무방함

이렇게 하면

이렇게 \n으로 끝나는 문장은 PRINTL처럼 줄바꿈되고, \t로 끝나는 문장은 PRINTW계 명령어처럼 일시정지하게 됨.

※주의: \t는 탭 기호임. 키보드의 Caps Lock 위에 있는 그 탭 맞음. 이 탭은 원래 특정 위치에 도달할 때까지 공백을 채워주는 것으로 알고 있을텐데, 에라는 이 기능이 비활성화되어있음.

그래서 실제로 써보면

이 둘 중 어느 방법을 택하든간에

이런 식으로 뜬금없이 동그라미를 출력하게 됨. 그래서 이 기능을 쓰지 않을 거라고 생각해 \t를 제어 문자로 정한거임.

따라서 자신이 일반 구문에 \t를 넣었다면 이 함수를 사용할 때 이상한 곳에서 일시정지할 수 있으니 조심.