[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

18. Macros: Defining New Texinfo Commands

Texinfo 매크로(macro)를 사용하면 새로운 Texinfo 명령어를 글이나 이미 있는 명령어(다른 매크로까지 포함해서)를 붙여서 정의할 수 있다. 매크로는 파라미터(parameter)—매크로를 쓸 때마다 매크로에 제공하는 글—를 몇개라도 가질 수 있다. (이 매크로는 @defmac 명령어와는 아무런 관계가 없다. @defmac는 매뉴얼의 내용상의 매크로를 문서화하는 것이다; see section The Template for a Definition.)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

18.1 Defining Macros

매크로를 정의하는 데는 @macro Texinfo 명령어를 쓴다. 예를 들어:

 
@macro macro-name{param1, param2, …}
text … \param1\ …
@end macro

파라미터(parameter) param1, param2, …는 매크로가 문서에서 앞으로 사용될때 제공해야 할 인자이다. (다음 절을 보라).

매크로에 파라미터(parameter)가 필요없으면, 텅 빈 리스트로 쓰거나 (‘@macro foo {}’) 아예 중괄호를 쓰지 않으면 된다 (‘@macro foo’).

매크로의 본체(body)에는 앞에서 정의한 매크로까지 포함해서 어떤 Texinfo 명령이든 들어갈 수 있다. (상호 재귀적인(mutually recursive) Texinfo 매크로를 쓰는 것은 불가능하다.) 본체(body)에서, 파라미터(parameter)의 값을 사용하려면 위의 예에서 ‘\param1\’와 같이 백슬래쉬(backslash)로 둘러싼다. 이것은 매크로를 부를때 대응되는 인자로 바꿔진다.

foo라는 매크로는 @unmacro foo로 정의를 취소할 수 있다. 이미 정의된 매크로를 취소하는 것은 애러가 아니다. 예를 들어:

 
@unmacro foo

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

18.2 Invoking Macros

매크로를 정의한 후에 (앞의 절을 보라), 다음과 같이 문서 내에서 그 매크로를 사용할(invoke) 수 있다.

 
@macro-name {arg1, arg2, …}

그리고 결과는 그 자리에 macro-name의 본체(body)를 타이프한 것과 같다. 예를 들어:

 
@macro foo {p, q}
Together: \p\ & \q\.
@end macro
@foo{a, b}

가 매크로였다면 결과는 다음을 만들어 내게 된다:

 
Together: a & b.

즉, 인자(argument)와 파라미터(parameter)는 쉼표로 나눠지고, 중괄호로 ㄱㅜ분된다; 쉼표 뒤의 (앞에는 아니다) 공백은 무시된다. 인자(argument)에 쉼표, 중괄호, 또는 백슬래쉬(backslash)를 넣으려면, 다음과 같이 앞에 백슬래쉬(backslash)를 붙인다.

 
@macro-name {\\\{\}\,}

이렇게 하면 macro-name 매크로에 ‘\{},’의 인자를 (하지만 거의 분명히 애러를 발생한다) 보내주게 된다.

매크로가 한개의 인자를 받도록 정의되어 있고, 중괄호가 없이 사용된다면, 매크로 이름 뒤의 나머지 줄은 인자로 사용된다. 예를 들어:

 
@macro bar {p}
Twice: \p\, \p\.
@end macro
@bar aah

는 다음을 만들어 낸다.

 
Twice: aah, aah.

와 같이 된다.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Autobuild on July 8, 2017 using texi2html 1.82.