ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Wolfgang Schuster <wolfgang.schuster.lists@gmail.com>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>,
	mf <massifr@fastwebnet.it>
Subject: Re: changing alignment inside a paragraph
Date: Wed, 11 Dec 2019 21:25:49 +0100	[thread overview]
Message-ID: <e598f261-0f6e-911e-038f-1e364a0a47e4@gmail.com> (raw)
In-Reply-To: <3586f8c3-5aa4-4918-6c98-fee59b33ad8e@fastwebnet.it>



mf schrieb am 11.12.2019 um 15:31:
> This is a good-enough solution to my problem:
>
> \setupalign[stretch]
>
> \starttext
>
> \def\Text{This is the text of an index term, that is normally justified,
> but I'd like the page numbers to be flushed to the right from
> their second line}
>
> \def\Pages{34, 57, 101-104, 276, 345, 401, 403, 512.}
>
> \type{\PlaceIndexTerm} has 6 parameters:
> \startitemize[n]
> \item the main text
> \item the pages' numbers
> \item the text width
> \item the left margin of the lines made only of page numbers
> \item the width of the separator (an hbox) before the first page 
> number, when there's room
>       in the last line of the text
> \item the minimum accepted space left at the end of the last line of 
> text, to put a page number
> \stopitemize
>
> \def\PlaceIndexTerm#1#2#3#4#5#6{%
> \newdimen\TextWidth \TextWidth=#3
> \newdimen\SBPN \SBPN=#5 % space before page numbers
> \newdimen\PagesIndentation \PagesIndentation=#4
> \newdimen\MSLLL \MSLLL=#6 % minimum space left on last line
> \parshape 1 0pt \TextWidth #1\par
> \newdimen\LLW \LLW=\lastlinewidth
> \page[no]
> \ifdim \dimexpr\TextWidth-\LLW-\SBPN > \MSLLL 
> \blank[-\the\lineheight,fixed]\fi
> \startalignment[flushright,stretch]
> \ifdim \dimexpr\TextWidth-\LLW-\SBPN > \MSLLL
> \parshape 2
> \LLW \dimexpr \TextWidth - \LLW
> \PagesIndentation \dimexpr \TextWidth - \PagesIndentation \red
> \else
> \parshape 1 \PagesIndentation \dimexpr \TextWidth - \PagesIndentation 
> \darkgreen
> \fi
> \noindent\ifdim \dimexpr\TextWidth-\LLW-\SBPN > \MSLLL\hbox to 
> \SBPN{}\fi #2\par
> \stopalignment}

\starttext

\startbuffer
This is the text of an index term, that is normally justified,
but I'd like the page numbers to be flushed to the right from
their second line\par
\startalignment[flushright]
\ifdim\dimexpr\hsize-\lastlinewidth\relax>2\emwidth
     \blank[overlay]
%   simple solution but doesn't indent the numbers on the following lines
%   \hskip\dimexpr\lastlinewidth+\emwidth\relax
     \parshape 2
         \dimexpr\lastlinewidth+\emwidth\relax 
\dimexpr\hsize-\lastlinewidth-\emwidth\relax
         \emwidth \dimexpr\hsize-\emwidth\relax
\else
     \parshape 1 \emwidth \dimexpr\hsize-\emwidth\relax
\fi
34, 57, 101-104, 276, 345, 401, 403, 512.
\stopalignment
\stopbuffer

\dorecurse
   {10}
   {\hsize\dimexpr.75\textwidth-#1\emwidth\relax
    \getbuffer
    \page}

\stoptext

Wolfgang

___________________________________________________________________________________
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

  reply	other threads:[~2019-12-11 20:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-10 11:27 mf
2019-12-10 17:07 ` Wolfgang Schuster
2019-12-11 14:31 ` mf
2019-12-11 20:25   ` Wolfgang Schuster [this message]
2019-12-12 14:56     ` mf
2019-12-12 20:43       ` Wolfgang Schuster

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=e598f261-0f6e-911e-038f-1e364a0a47e4@gmail.com \
    --to=wolfgang.schuster.lists@gmail.com \
    --cc=massifr@fastwebnet.it \
    --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).