# マクロとは

マクロとは、「複数のタグや文章を一つのタグで表せるようにする」ための物です。
既存のタグや文章を組み合わせて、自由に新しいタグを定義する方法です。
KAG では、いくつも、何回も同じようなタグを指定しなければいけない場面が多いかと思いますが、マクロの機能を使えば、そのような作業を大幅に減らすことが出来ます。
おきまりのタグの連続は、マクロ化して楽しましょう`(^^)`

# 基本的な使い方

マクロを使うには、まずマクロを「定義」しなければなりません。マクロは一度だけ定義すれば、あとはそのマクロを何回でも使うことができます。ですので、マクロを定義する場合はfirst.ksの最初などに書いておくとよいでしょう。
マクロを定義する場合は、macro タグと endmacro タグで、マクロにしたい部分を囲みます。macro タグの属性 name には、マクロ名を指定します。
`[wait time=200]
*start|スタート
[cm]
; -- マクロの定義 --
[macro name=newtag][font color=0xff0000]こんな風にマクロを作ります[resetfont][endmacro]
`
これを使いたい場合は、タグを書くのとまったく同じ要領でマクロ名を使います。
`; -- マクロを使う --
[newtag]
`
これを実行すると、`[newtag]` のところで、この `[newtag]` というタグが、 `[font color=0xff0000]こんな風にマクロを作ります[resetfont]` に置き換わるため、赤い文字で「こんな風にマクロを作ります」と表示されるはずです。
複数行に書くこともできます。
`[wait time=200]
*start|スタート
[cm]
; -- マクロの定義 --
[macro name=newtag]
[font color=0xff0000]
こんな風にマクロを作ります
[resetfont]
[endmacro]
`
`; -- マクロを使う --
[newtag]
`

# マクロの属性

マクロに属性を与え、その属性をマクロ中で置き換えることが出来ます。
マクロ中で、属性の値に % で始まるものを指定すると、それがマクロに与えられた属性に置き換わります。
以下の例を見てください。
`[wait time=200]
*start|スタート
[cm]
; -- マクロの定義 --
[macro name=newtag]
[font color=%iro]
こんな風にマクロを作ります
[resetfont]
[endmacro]
`
`; -- マクロを使う --
[newtag iro=0x00ff00]
`
この例では、iro という属性を与え、それをエンティティにより font タグの color 属性と置き換えています。
実行すると、緑色の文字で「こんな風にマクロを作ります」と表示されるはずです。
また、マクロ中のタグの属性に * を指定すると、マクロに渡された属性をすべて渡すことができます。たとえば、trans タグのあとに wt タグをつけたマクロを作りたい場合、
`[macro name=transwait][trans *][wt][endmacro]
`
と書くことができます。このようにすると、たとえば transwait マクロを使うときに、transwait マクロに対して指定した属性がそっくりそのまま trans タグに渡されるので、既存のタグに毛の生えた程度のマクロを作るときに便利です。
マクロ中にあったマクロは再び展開されますので、マクロの中に自分のマクロを書かないようにご注意ください(^^)
値が省略されたときに、デフォルトの値を指定したい場合は、% 付きの属性に、 | ( 縦棒 ) を書き、そのあとに省略された場合の値を指定します。下の例を見てください。
`[wait time=200]
*start|スタート
[cm]
; -- マクロの定義 --
[macro name=newtag]
[font color=%color|0xff0000]
こんな風にマクロを作ります
[resetfont]
[endmacro]
`
`; -- マクロを使う --
[newtag color=0x00ff00]
[newtag]
`
最初の [newtag] を使っているところでは color 属性を指定しているので、その属性の値である 0x00ff00 と置き換わり、緑色で文字が表示されています。
二番目の [newtag] を使っているところでは、属性がなにも指定されていないので、デフォルトである "0xff0000" が採用され、文字は赤で表示されます。
Note
属性名の指定には英半角小文字を用いてください。大文字を指定すると正常に動作しません。