Re: [NTG-context] Why does \doifsomething think there is content?

2023-01-15 Thread Aditya Mahajan via ntg-context
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
___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : https://contextgarden.net
___


[NTG-context] Why does \doifsomething think there is content?

2023-01-15 Thread Joel via ntg-context
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


___
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki : https://contextgarden.net
___