# chickadee » contracts » define-macro-with-contract

##### Identifier search
(define-macro-with-contract code docstring body))syntax

where docstring is optional, code is the complete macro-code (name . args), i.e. the pattern of a macro call, and body is one of

``` (with-renamed (%sym ...) xpr . xprs)
(with-injected (sym ...) xpr . xprs)
xpr . xprs```

In the first case each %sym is a renamed version of sym, in the second sym is injected as is, i.e. not renamed, and in the last case no symbol is injected, i.e. the macro is hygienic.