I think you are over-using your "semantic tags", relying on a single tag to represent 2 different relationships.
While it mike make sense to have a collection of things tagged `Section2`, including things in that group that you do not want shown on a ToC built with that tag in the tree will cause headaches. Use `SectionX` only for things you want in the ToC, and use an alternate, like `ConceptX` to tag the others. Then you can tag ConceptX with SectionX and it can be a reference index in the ToC to all the ConceptX(s). You can use filter to add or remove the SectionX tag from ConceptX to show/hide that in the ToC dynamically. Best, Joshua Fontany On Tuesday, January 21, 2020 at 1:40:26 PM UTC-8, TonyM wrote: > > Si, > > I opened this thread > <https://groups.google.com/forum/?hl=en#!topic/tiddlywiki/RTzc2MGT__Y>to > introduce the idea of building your own TOC macros when more detailed > customisation I required. > > I have looked at a sophisticated solution to similar requirements to your > own, if I can I will add it to the above thread. > > This would be my design approach > > - Use my own Recursive macros (not the TOC macros) > - Permit the addition of a field in any tiddler eg > tableofcontents-filter > - Since the same tiddler could be a member of another toc I suggest > this filter field be named related to the root tiddler. > - If the field exists with a value use this as the next level filter > to call "each-other-level" > - The filters in tiddlers should decide which children to show in the > next level down. > - Remember the filter may be recursive (called over and over again) so > a filter in a tiddler should perhaps define only a limited set of tiddlers. > > Regards > Tony > > On Wednesday, January 22, 2020 at 5:50:32 AM UTC+11, si wrote: >> >> Hi Mark. >> >> Sorry I realize that I had made my post more convoluted than it needed to >> be. >> >> *What I want to do is apply a filter to only a specific tiddler and its >> descendants within a TOC. Any tiddlers higher up in the hierarchy should >> not be subject to the filter.* >> >> By adapting your solution I am able to do this for a filter that >> *excludes* certain tags, but not for a filter that returns *only* tiddlers >> with a certain tag. >> >> Thank you for your patience. Si >> >> On Tuesday, January 21, 2020 at 4:10:20 PM UTC, Mark S. wrote: >>> >>> !!tag-filter will use the tag-filter field of the tiddler from which the >>> TOC macro is launched. >>> >>> It's unclear where you want the tag-filter field to be coming from. >>> >>> It seems like you want a tiddler to have a tag-filter field AND be >>> marked "spam", which doesn't quite make sense to me. >>> >>> Sometimes it helps to explain the big picture of what you want to do, >>> rather than look narrowly at a particular technological solution. >>> >>> Good luck! >>> >>> On Tuesday, January 21, 2020 at 7:49:17 AM UTC-8, si wrote: >>>> >>>> Thank you Mark, that works perfectly, but I have realized that it is >>>> less adaptable than I initially thought. >>>> >>>> I have tried adapting it to filter for *only* tiddlers tagged with >>>> "spam". >>>> >>>> I first tried the following with the field "tag-filter=spam" in the >>>> section I want to filter: >>>> >>>> <<toc-selective-expandable 'Section' >>>> sort:"sort[title]]+[tag{!!tag-filter}">> >>>> >>>> The problem is that in other sections without a "tag-filter" field the >>>> filter becomes "[sort[title]]+[tag[]]" which returns nothing. >>>> >>>> I've spent the last hour trying to figure out another way of doing it >>>> to no avail. Can you see a way to do this? >>>> >>>> Thanks again for your help. >>>> On Monday, January 20, 2020 at 6:33:46 PM UTC, Mark S. wrote: >>>>> >>>>> You can use the sort attribute to insert whole filter runs. However, >>>>> the syntax will look lopsided: >>>>> >>>>> <<toc-selective-expandable 'Section' sort:"sort[title]]+[!tag[spam]">> >>>>> >>>>> Notice that the brackets are not balanced. Basically the macro is >>>>> providing the final, right-hand square bracket. You need to provide sort >>>>> criteria because you're over-riding the default. >>>>> >>>>> This seemed to work in my tests. Topmost elements were tagged with >>>>> "Section" so that they all hung together. >>>>> >>>>> Good luck! >>>>> >>>>> On Monday, January 20, 2020 at 6:08:24 AM UTC-8, si wrote: >>>>>> >>>>>> Hi folks. >>>>>> >>>>>> How could you exclude all tiddlers with a certain tag from a >>>>>> Table-of-Contents, but *only* within a specific sub-section of the >>>>>> hierarchy? >>>>>> >>>>>> For example, say that I have a the following table of contents: >>>>>> >>>>>> - Section1 >>>>>> - Subitem >>>>>> - Subitem >>>>>> - Section2 >>>>>> - Subitem >>>>>> - Subitem >>>>>> - Section3 >>>>>> - Subitem >>>>>> - Subitem >>>>>> >>>>>> How could I apply a filter to the macro that excludes all tiddlers >>>>>> with the tag "spam", but only apply it to the descendants of "Section2"? >>>>>> >>>>>> I have tried a couple of things so far: >>>>>> >>>>>> First I tried creating separate Table-of-Contents macros for each >>>>>> Section: >>>>>> >>>>>> <div class="tc-table-of-contents"> >>>>>> >>>>>> <<toc-selective-expandable 'Section1Tag'>> >>>>>> <<toc-selective-expandable 'Section2Tag' sort:"!tag[spam]">> >>>>>> <<toc-selective-expandable 'Section3Tag'>> >>>>>> >>>>>> </div> >>>>>> >>>>>> This works but puts a blank line between each section in the TOC. >>>>>> Maybe I'm being nitpicky but it makes the TOC look much uglier than it >>>>>> needs to and takes up an impractical amount of space when you have a lot >>>>>> of >>>>>> sections. >>>>>> >>>>>> I have also tried using the following: >>>>>> >>>>>> <div class="tc-table-of-contents"> >>>>>> >>>>>> <<toc-selective-expandable 'TableOfContents' sort: >>>>>> "!tag{!!exclude-tag}">> >>>>>> >>>>>> </div> >>>>>> >>>>>> And then adding the field "exclude-tag=spam" to the "Section2" >>>>>> tiddler. This didn't work at all. >>>>>> >>>>>> Does anyone know of a tidy way to do this? >>>>>> >>>>>> Thanks a lot for your help. Si >>>>>> >>>>> -- You received this message because you are subscribed to the Google Groups "TiddlyWiki" group. To unsubscribe from this group and stop receiving emails from it, send an email to tiddlywiki+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/8cfa03e2-a0db-4578-8d9e-021f525e2481%40googlegroups.com.