Cookware
You can define the tools and equipment needed for a recipe using the # symbol.
Basic Declaration
Like an @ingredient, if the #cookware name is a single word and you only need one of it, you can omit the braces {}.
Heat the #pan.If the name contains spaces or you want to specify a quantity, you must use braces {}.
Take a #baking sheet{}.Quantities vs Dimensions
Unlike an @ingredient (which can have complex units like grams or cups), #cookware has a strict syntax separation between its count and its physical description.
1. Quantity (Integer Count)
The braces {} are strictly reserved for the number of items you need. This must be a pure integer.
#pan // Defaults to 1 pan
#ramekins{4} // 4 ramekins2. Dimensions and Materials
To specify the size, dimensions, material, or any other description of the #cookware, you must use parentheses ().
#pan(20cm) // 1 pan, sized 20cm
#baking sheet{2}(non-stick) // 2 baking sheets, non-stickWARNING
Do not put dimensions inside quantity braces (e.g. ❌ #pan{20cm}). Gram expects a strict integer inside {}. Use parentheses instead: ✅ #pan(20cm).
Scaling Behavior
Unlike an @ingredient which usually scales linearly by default, #cookware scaling behavior depends on how the quantity is specified:
| Format | Example | Behavior | Description |
|---|---|---|---|
| No quantity | #pan | Fixed | Does not scale. |
| With quantity | #pan{1} or #ramequins{4} | Scalable | Doubling the recipe asks for 2 pans or 8 ramequins. |
| Explicit Fixed | #=pan{2} | Fixed | Even if you double the recipe, it will still only ask for 2 pans. |
Modifiers and Advanced Syntax
#cookware supports many of the same advanced syntax features as an @ingredient. For a detailed deep-dive on these concepts, refer to the Ingredients documentation.
Modifiers
You can use the Optional (?), Hidden (-), and Fixed (=) modifiers on #cookware.
Use a #?wok if you have one, otherwise a #-large pan will do.Component Alias (Renaming)
You can rename #cookware for display purposes using the : operator.
Use the #cast iron skillet:skillet{}.Alternatives
You can define acceptable alternatives using the pipe | operator.
Cook in a #pan|#wok.