Why does \doifsomething think there is content?
I am creating a book that presents readers with a list of recommended materials. If materials are listed, then its displayed under the \subject{Materials} heading in a simple itemized list. I'm using \doifsomething{} to check if any items are listed. The problem I'm having is, when fed a blank macro, `\define\needsoven{}` it thinks there is content, so it displays the "Materials" heading, but an empty list. I have a custom macro that determins "if oven is needed" independent of these other items. So I need `\define\needsoven{}` to be regarded as nothing. How can I get \doifsomething{} to think \define\needsoven{} is an empty value? --Joel My minimal working example is below: \define\needsoven{} \define[1]\materialsneeded{% \doifsomething{#1}{ \subject{Materials} \startitemize #1 \stopitemize } } \starttext \chapter{Recipe 1} \materialsneeded{\needsoven} \subject{Instructions} Spread peanut butter on sandwich. \chapter{Recipe 2} \materialsneeded{\item pizza cutter \item stove} \subject{Instructions} Preheat oven to 450 degrees F. \stoptext
On Sun, 15 Jan 2023, Joel via ntg-context wrote:
I am creating a book that presents readers with a list of recommended materials. If materials are listed, then its displayed under the \subject{Materials} heading in a simple itemized list. I'm using \doifsomething{} to check if any items are listed.
Try \doiftext which typesets the material and checks its width.
The problem I'm having is, when fed a blank macro, `\define\needsoven{}` it thinks there is content, so it displays the "Materials" heading, but an empty list. I have a custom macro that determins "if oven is needed" independent of these other items. So I need `\define\needsoven{}` to be regarded as nothing.
\define\needsoven makes \needsoven non-expandable. You either need \defineexpandable\needsoven or use \doiftext Aditya
participants (2)
-
Aditya Mahajan
-
Joel