ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* startnarrower
@ 2009-10-03 16:08 Wolfgang Schuster
  0 siblings, 0 replies; only message in thread
From: Wolfgang Schuster @ 2009-10-03 16:08 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hi Hans,

here is a new attempt to get a more generalized version of the  
startnarrower macros, now mkiv only.

Wolfgang

\unprotect

\def\narrowerparameter          #1{\csname\donarrowerparameter{\??sl 
\@@narrower}#1\endcsname}
\def\donarrowerparameter      #1#2{\ifcsname#1#2\endcsname#1#2\else 
\expandafter\donarrowerparentparameter\csname#1\s!parent\endcsname#2\fi}
\def\donarrowerparentparameter#1#2{\ifx#1\relax\s!empty\else 
\donarrowerparameter#1#2\fi}

\getparameters
   [\??sl]
   [\c!before=\endgraf,
    \c!after=\endgraf,
    \c!left=1.5em,
    \c!right=1.5em,
    \c!middle=1.5em]

\def\definenarrower
   {\dodoubleempty\dodefinenarrower}

\def\dodefinenarrower[#1][#2]%
   {\getparameters[\??sl#1][\s!parent=\??sl,#2]%
    \setvalue{\e!start#1}{\dodoubleempty\dostartnarrower[#1]}%
    \setvalue{\e!stop #1}{\dostopnarrower}}

\def\setupnarrower
   {\dodoubleempty\dosetupnarrower}

\def\dosetupnarrower[#1][#2]%
   {\doifelsenothing{#2}
      {\getparameters[\??sl][#1]}
      {\def\docommand##1{\getparameters[\??sl##1][#2]}%
       \processcommacommand[#1]\docommand}}

\definenarrowermethod[\v!left   ]{\global\advance\ctxleftskip   
\narrowerparameter\c!left  \relax}
\definenarrowermethod[\v!middle ]{\global\advance\ctxmidskip    
\narrowerparameter\c!middle\relax}
\definenarrowermethod[\v!right  ]{\global\advance\ctxrightskip  
\narrowerparameter\c!right \relax}
\definenarrowermethod[-\v!left  ]{\global\advance\ctxleftskip - 
\narrowerparameter\c!left  \relax}
\definenarrowermethod[-\v!middle]{\global\advance\ctxmidskip  - 
\narrowerparameter\c!middle\relax}
\definenarrowermethod[-\v!right ]{\global\advance\ctxrightskip- 
\narrowerparameter\c!right \relax}
\definenarrowermethod[\v!reset  ]{\global\ctxleftskip \zeropoint
                                   \global\ctxmidskip  \zeropoint
                                   \global\ctxrightskip\zeropoint\relax}
\definenarrowermethod[\v!none   ]{}

\def\dostartnarrower[#1][#2]%
   {\bgroup
    \ifsecondargument % \doifsomethingelse{#2}?
      \dodostartnarrower[#1][#2]%
    \else
      \dodostartnarrower[#1][\v!middle]%
    \fi}

\def\dodostartnarrower[#1][#2]%
   {\edef\@@narrower{#1}%
    \narrowerparameter\c!before
    \global\ctxleftskip \zeropoint
    \global\ctxrightskip\zeropoint
    \global\ctxmidskip  \zeropoint
    \processcommalistwithparameters[#2]\donarrower
    \advance\leftskip \dimexpr\ctxleftskip +\ctxmidskip\relax
    \advance\rightskip\dimexpr\ctxrightskip+\ctxmidskip\relax
    \seteffectivehsize}

\def\dostopnarrower
   {\narrowerparameter\c!after
    \egroup}

\def\v!narrower{narrower}

\definenarrower[\v!narrower]

\protect

\definenarrower[wide]  [before={\blank[2*line]},after={\blank 
[2*line]},middle=0.5em]
\definenarrower[narrow][before={\blank[4*line]},after={\blank 
[4*line]},middle=4.0em]

\starttext

\input ward

\startnarrower
\input ward\endgraf
\stopnarrower

\input ward

\startnarrow
\input ward\endgraf
\stopnarrow

\input ward

\startwide
\input ward\endgraf
\stopwide

\input ward

\stoptext

___________________________________________________________________________________
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  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-10-03 16:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-10-03 16:08 startnarrower Wolfgang Schuster

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).