conditional not working in \setuphead
Dear list, I have the following sample: \startbuffer[demo] <doc> <section id="section-i1"> <text>first</text> </section> <section id="section-i2"> <text>second</text> </section> </doc> \stopbuffer \startxmlsetups xml:initialize \xmlsetsetup{#1}{doc|section}{xml:*} \stopxmlsetups \xmlregistersetup{xml:initialize} \startxmlsetups xml:doc \xmlflush{#1} \stopxmlsetups \startxmlsetups xml:section \startsection[title={\xmlatt{#1}{id}}, beforesection={\doif{\xmlatt{#1}{id}}{\selectedtopic} {conditional}}] \xmlflush{#1} \doif{\xmlatt{#1}{id}}{\selectedtopic}{conditional} \stopsection \stopxmlsetups \def\selectedtopic{section-i1} \starttext \xmlprocessbuffer{main}{demo}{} \stoptext How can I make the conditional in the beforesection option work? Many thanks for your help, Pablo -- http://www.ousia.tk
Pablo Rodriguez schrieb am 20.04.2020 um 18:55:
Dear list,
I have the following sample:
\startbuffer[demo] <doc> <section id="section-i1"> <text>first</text> </section> <section id="section-i2"> <text>second</text> </section>
</doc> \stopbuffer
\startxmlsetups xml:initialize \xmlsetsetup{#1}{doc|section}{xml:*} \stopxmlsetups
\xmlregistersetup{xml:initialize}
\startxmlsetups xml:doc \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:section \startsection[title={\xmlatt{#1}{id}}, beforesection={\doif{\xmlatt{#1}{id}}{\selectedtopic} {conditional}}] \xmlflush{#1} \doif{\xmlatt{#1}{id}}{\selectedtopic}{conditional} \stopsection \stopxmlsetups
\def\selectedtopic{section-i1}
\starttext \xmlprocessbuffer{main}{demo}{} \stoptext
How can I make the conditional in the beforesection option work?
The argument of the beforesection-key is placed before ConTeXt stores the values of \startsection which means you can do it this way. What you can do here is to put whatever something in a macro before you call \startsection and access the value of this macro with the beforesection-key. You should ensure the content if this temporary macro is cleared when your conditional is false. \setuphead [section] [beforesection=\getvariable{xml}{beforesection}] \startxmlsetups xml:section \doifelse{\xmlatt{#1}{id}}{\selectedtopic} {\setvariable{xml}{beforesection}{conditional}} {\setvariable{xml}{beforesection}{}} \startsection[title={\xmlatt{#1}{id}}] \xmlflush{#1} \stopsection \stopxmlsetups Wolfgang
On 4/20/20 7:23 PM, Wolfgang Schuster wrote:
[...] The argument of the beforesection-key is placed before ConTeXt stores the values of \startsection which means you can do it this way.
What you can do here is to put whatever something in a macro before you call \startsection and access the value of this macro with the beforesection-key. You should ensure the content if this temporary macro is cleared when your conditional is false.
\setuphead [section] [beforesection=\getvariable{xml}{beforesection}]
\startxmlsetups xml:section
\doifelse{\xmlatt{#1}{id}}{\selectedtopic} {\setvariable{xml}{beforesection}{conditional}} {\setvariable{xml}{beforesection}{}}
\startsection[title={\xmlatt{#1}{id}}] \xmlflush{#1} \stopsection
\stopxmlsetups
Many thanks for your help, Wolfgang. Your sample works perfectly fine. Pablo -- http://www.ousia.tk
participants (2)
-
Pablo Rodriguez
-
Wolfgang Schuster