ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* horizontal alignment
@ 2010-07-08 23:32 Michael Goerz
  2010-07-09 11:13 ` Michael Murphy
  0 siblings, 1 reply; 4+ messages in thread
From: Michael Goerz @ 2010-07-08 23:32 UTC (permalink / raw)
  To: ntg-context

Hi everyone,

I'm trying to do some horizontal alignment, for typesetting poetry.
There are lines that are continuations of the previous line, and should
be aligned to the end of that previous line. Currently, I'm doing this
by using \phantom text, which for some reason I also have to wrap into
an \mbox to avoid a line break. As an example:

    \startlines
    here we now see you ~~  already in grief
    as you see ~~  yourselves ~~  as the last of the lasts
    we are mirrors of your consciousness
    \mbox{\phantom{we are mirrors of your consciousness} as you see the end}
    and you see us ~~ deep in the spring of the universe
    seeing you deep ~~ in the gravity well of the heat death
    we are dying ~~ in the spring as we watch you die
    we are grieving in the spring as you begin to grieve for all
    we are talking about bone-dry at the bottom of the well of time
    we are already parched
    \mbox{\phantom{we are already parched} for time is transparent}
    and we are all rats in the glassy
    \mbox{\phantom{and we are all rats in the glassy} labyrinth of time.
    \stoplines

How would you solve this kind of problem? I've considered defining a
macro \BrokenLine[line1][line2] that does the above. But, there are
also instances where there are two or more lines as a continuation of
one previous line. Maybe there is a possibility to mark a horizontal
position temporarily, and then jump to that position later?

Thanks,
Michael
___________________________________________________________________________________
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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: horizontal alignment
  2010-07-08 23:32 horizontal alignment Michael Goerz
@ 2010-07-09 11:13 ` Michael Murphy
  2010-07-10  5:15   ` Michael Goerz
  2010-07-11  7:22   ` Wolfgang Schuster
  0 siblings, 2 replies; 4+ messages in thread
From: Michael Murphy @ 2010-07-09 11:13 UTC (permalink / raw)
  To: ntg-context

On 09/07/10 01:32, Michael Goerz wrote:
> Hi everyone,
>
> I'm trying to do some horizontal alignment, for typesetting poetry.
> How would you solve this kind of problem? I've considered defining a
> macro \BrokenLine[line1][line2] that does the above. But, there are
> also instances where there are two or more lines as a continuation of
> one previous line. Maybe there is a possibility to mark a horizontal
> position temporarily, and then jump to that position later?

Didn't know you were into ConTeXt...

Anyway, this is a crappy solution and you could probably make it better. 
As far as I'm aware, there is no way to get the current horizontal 
position across the page at any particular moment. The method below 
essentially just measures the length of the line that you want to enter, 
and sets this as the indent.

\dimendef\indentl=10

\def\savewidth#1{%
   \setbox0=\hbox{#1}%
   \copy0%
   \indentl=\wd0%
}

\def\addtosavewidth#1{%
   \setbox0=\hbox{#1}%
   \mindent\copy0%
   \advance\indentl by \wd0%
}

\def\mindent{\hskip\indentl}

\starttext
\startlines
   here we now see you ~~  already in grief
   as you see ~~  yourselves ~~  as the last of the lasts
   \savewidth{we are mirrors of your consciousness }
   \mindent as you see the end
   \savewidth{and you see us ~~ deep }
   \addtosavewidth{in }
   \addtosavewidth{the spring }
   \mindent of the universe
   seeing you deep ~~ in the gravity well of the heat death
   we are dying ~~ in the spring as we watch you die
   we are grieving in the spring as you begin to grieve for all
   we are talking about bone-dry at the bottom of the well of time
   \savewidth{we are already parched }
   \mindent for time is transparent
   \savewidth{and we are all rats in the glassy }
   \mindent labyrinth of time.
   \stoplines
\stoptext


-- 
Michael Murphy
___________________________________________________________________________________
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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: horizontal alignment
  2010-07-09 11:13 ` Michael Murphy
@ 2010-07-10  5:15   ` Michael Goerz
  2010-07-11  7:22   ` Wolfgang Schuster
  1 sibling, 0 replies; 4+ messages in thread
From: Michael Goerz @ 2010-07-10  5:15 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On Fri, Jul 9, 2010 at 7:13 AM, Michael Murphy
<michael.murphy@uni-ulm.de> wrote:
> On 09/07/10 01:32, Michael Goerz wrote:
>> I'm trying to do some horizontal alignment, for typesetting poetry.
>> How would you solve this kind of problem? I've considered defining a
>> macro \BrokenLine[line1][line2] that does the above. But, there are
>> also instances where there are two or more lines as a continuation of
>> one previous line. Maybe there is a possibility to mark a horizontal
>> position temporarily, and then jump to that position later?
>
> Anyway, this is a crappy solution and you could probably make it better. As
> far as I'm aware, there is no way to get the current horizontal position
> across the page at any particular moment. The method below essentially just
> measures the length of the line that you want to enter, and sets this as the
> indent.
>
> \dimendef\indentl=10
>
> \def\savewidth#1{%
>  \setbox0=\hbox{#1}%
>  \copy0%
>  \indentl=\wd0%
> }
>
> \def\addtosavewidth#1{%
>  \setbox0=\hbox{#1}%
>  \mindent\copy0%
>  \advance\indentl by \wd0%
> }
>
> \def\mindent{\hskip\indentl}
Thanks, Michael, that works great!

Just out of interest: why does \savewidth create a newline
if there's more text on the same line,
(like this:
   \savewidth{start of line} and some more text
)
while \addtosavewidth does not? The difference is the \hskip in front
of the \copy0%; if I add \hskip0pt in front of the the \copy in
\savewidth, there's also no newline -- but how does that make sense?

Michael
___________________________________________________________________________________
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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: horizontal alignment
  2010-07-09 11:13 ` Michael Murphy
  2010-07-10  5:15   ` Michael Goerz
@ 2010-07-11  7:22   ` Wolfgang Schuster
  1 sibling, 0 replies; 4+ messages in thread
From: Wolfgang Schuster @ 2010-07-11  7:22 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Am 09.07.10 13:13, schrieb Michael Murphy:
> On 09/07/10 01:32, Michael Goerz wrote:
>> Hi everyone,
>>
>> I'm trying to do some horizontal alignment, for typesetting poetry.
>> How would you solve this kind of problem? I've considered defining a
>> macro \BrokenLine[line1][line2] that does the above. But, there are
>> also instances where there are two or more lines as a continuation of
>> one previous line. Maybe there is a possibility to mark a horizontal
>> position temporarily, and then jump to that position later?
>
> Didn't know you were into ConTeXt...
>
> Anyway, this is a crappy solution and you could probably make it better.
> As far as I'm aware, there is no way to get the current horizontal
> position across the page at any particular moment. The method below
> essentially just measures the length of the line that you want to enter,
> and sets this as the indent.
>
> \dimendef\indentl=10
>
> \def\savewidth#1{%
> \setbox0=\hbox{#1}%
> \copy0%
> \indentl=\wd0%
> }
>
> \def\addtosavewidth#1{%
> \setbox0=\hbox{#1}%
> \mindent\copy0%
> \advance\indentl by \wd0%
> }
>
> \def\mindent{\hskip\indentl}


Nice solution but you can improve it with a few context functions:

\newdimen\indentleft

\def\savewidth
   {\dowithnextbox
      {\indentleft\nextboxwd
       \copy\nextbox}
      \hbox}

\def\addtosavewidth
   {\dowithnextbox
      {\mindent\copy\nextbox
       \advance\indentleft\nextboxwd}
      \hbox}

\def\mindent{\hskip\indentleft}


A different solution is to store the end of the last line in one run and 
reuse this value in the next:

\def\SKIP
   {\doglobal\increment\SKIPcount
    \xypos{NP:\SKIPcount}%
    \par\hskip\dimexpr\MPx{NP:\SKIPcount}-\MPx{text:\realfolio}\relax}

\def\LASTSKIP
   {\par\hskip\dimexpr\MPx{NP:\SKIPcount}-\MPx{text:\realfolio}\relax}

\starttext
\startlines
here we now see you ~~  already in grief
as you see ~~  yourselves ~~  as the last of the lasts
we are mirrors of your consciousness \SKIP as you see the end
and you see us ~~ deep \SKIP in \SKIP the spring
\LASTSKIP of the universe
seeing you deep ~~ in the gravity well of the heat death
\stoplines
\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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-07-11  7:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-08 23:32 horizontal alignment Michael Goerz
2010-07-09 11:13 ` Michael Murphy
2010-07-10  5:15   ` Michael Goerz
2010-07-11  7:22   ` 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).