ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Steffen Wolfrum <context@st.estfiles.de>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: blank line and signals
Date: Tue, 16 Mar 2010 10:59:29 +0100	[thread overview]
Message-ID: <AEFE8584-873C-4B10-B9BD-C686D45EC680@st.estfiles.de> (raw)
In-Reply-To: <3BF648E0-01A3-4698-BA32-471446789F47@uni-koblenz.de>


Am 16.03.2010 um 10:32 schrieb Andreas Harder:

> 
> Am 16.03.2010 um 01:32 schrieb Wolfgang Schuster:
> 
>> Am 14.03.10 15:07, schrieb Andreas Harder:
>>> If one removes the blank line after \section{Section} the output is correct, otherwise \TestSpace is ignored …
>>> 
>> \def\DefineSectionBlank
>> {\dotripleempty\doDefineSectionBlank}
>> 
>> \def\doDefineSectionBlank[#1][#2][#3]#4%
>> {\edef\CurrentSection{#1}%
>>  \setvalue{#1:#2:\ifthirdargument\the\dimexpr#3\relax\fi}{#4}}
>> 
>> \def\SectionBlank#1#2%
>> {\edef\CurrentSection{#1}%
>>  \executeifdefined{#1:#2:\LastSectionBlankSignal}{\executeifdefined{#1:#2:\the\dimexpr\zeropoint\relax}{\getvalue{#1:#2:}}}%
>>  \doif{#2}{after}{\SectionBlankSignal}}
>> 
>> \let\LastSectionBlankSignal\zeropoint
>> 
>> \EveryPar{\let\LastSectionBlankSignal\zeropoint}
>> 
>> \def\SectionBlankSignal
>> {\setevalue{LastSectionBlankSignal}{\the\dimexpr\csname\CurrentSection Signal\endcsname\relax}}
>> 
>> % chapter
>> 
>> \DefineSectionBlank [Chapter] [before] {\blank[force,48pt]}
>> \DefineSectionBlank [Chapter] [after]  {\blank[20pt]}
>> 
>> \newsignal\ChapterSignal
>> 
>> \setuphead
>> [chapter]
>> [before=\SectionBlank{Chapter}{before},
>>  after=\SectionBlank{Chapter}{after}]
>> 
>> % section
>> 
>> \newsignal\SectionSignal
>> 
>> \DefineSectionBlank [Section] [before] [\ChapterSignal] {\blank[18pt]}
>> \DefineSectionBlank [Section] [before]                  {\blank[24pt]}
>> \DefineSectionBlank [Section] [after]                   {\blank[18pt]}
>> 
>> \setuphead
>> [section]
>> [before=\SectionBlank{Section}{before},
>>  after=\SectionBlank{Section}{after}]
>> 
>> \showgrid
>> 
>> \starttext
>> 
>> \chapter{Chapter}
>> 
>> \section{Section}
>> 
>> \chapter{Chapter}\edef\CurrentSection{Section}\SectionBlankSignal % tell \section the last header was \section too!
>> 
>> \section{Section}
>> 
>> \chapter{Chapter}
>> 
>> text
>> 
>> \section{Section}
>> 
>> \stoptext
> 
> Hello Wolfgang,
> 
> thank you for your elaborate example!
> 
> In the meantime I played a little with weak/strong blanks, before I figured out that this already works out of the box. It seams that the blank before a head gets a higher priority and overrides the blank after the previous head, so that there is no need for signals at all …?



In some projects it might look better if the space between two consecutive section heads is smaller than the regular space between section head and text.
That's where signals are needed and where Wolfgang's code does a great job.

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

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


      reply	other threads:[~2010-03-16  9:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-14 14:07 Andreas Harder
2010-03-14 16:19 ` Hans Hagen
2010-03-14 16:27   ` Wolfgang Schuster
2010-03-14 16:45     ` Hans Hagen
2010-03-14 17:00       ` Wolfgang Schuster
2010-03-14 17:50         ` Hans Hagen
2010-03-16  0:32 ` Wolfgang Schuster
2010-03-16  9:32   ` Andreas Harder
2010-03-16  9:59     ` Steffen Wolfrum [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AEFE8584-873C-4B10-B9BD-C686D45EC680@st.estfiles.de \
    --to=context@st.estfiles.de \
    --cc=ntg-context@ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).