ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* how to number poetry?
@ 2005-07-13 20:59 Paul Tremblay
  2005-07-14 17:14 ` Paul Tremblay
  2005-07-18 12:18 ` Mojca Miklavec
  0 siblings, 2 replies; 4+ messages in thread
From: Paul Tremblay @ 2005-07-13 20:59 UTC (permalink / raw)


What is the best way to number lines of poetry?

1  This is the first line
   This is the second line
   ...

5  this is the fifth
   ...

10 this is the tenth.

I can supply the number myself. I really don't want the numbers in the
margin. Instead, I want the whole poem indented right, with the
numbers left of the indent.

I have tried using tabulate, but tabulate doesn't let me control the
space between "lines," or really cells.

Thanks

Paul


-- 

************************
*Paul Tremblay         *
*phthenry@iglou.com    *
************************

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

* Re: how to number poetry?
  2005-07-13 20:59 how to number poetry? Paul Tremblay
@ 2005-07-14 17:14 ` Paul Tremblay
  2005-07-18 12:18 ` Mojca Miklavec
  1 sibling, 0 replies; 4+ messages in thread
From: Paul Tremblay @ 2005-07-14 17:14 UTC (permalink / raw)


On Wed, Jul 13, 2005 at 04:59:05PM -0400, Paul Tremblay wrote:
> 
> What is the best way to number lines of poetry?
> 
> 1  This is the first line
>    This is the second line
>    ...
> 
> 5  this is the fifth
>    ...
> 
> 10 this is the tenth.
> 
> I can supply the number myself. I really don't want the numbers in the
> margin. Instead, I want the whole poem indented right, with the
> numbers left of the indent.
> 
> I have tried using tabulate, but tabulate doesn't let me control the
> space between "lines," or really cells.
> 

Answering my own question. One posibility is:

\startitemize
\sym{1} This is the first line 
\nop This is the second line
%% and so fourth
\stopitmeize

That allows you to control the space between the number and the actual
line. In addition, ConTeXt should (?) do a good job making sure a
single line doesn't become an orphan or widow.

The only drawback is that you cannot use hanging indents for long
lines:

This is the forest premiva. The mummuring pines and 
    the hemlocks

\startitemize
\sym{1} This is the forest premiva. The mummuring pines and 
\nop \hskip12pt the hemlocs
%% and so fourth
\stopitmeize

Paul



-- 

************************
*Paul Tremblay         *
*phthenry@iglou.com    *
************************

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

* Re: how to number poetry?
  2005-07-13 20:59 how to number poetry? Paul Tremblay
  2005-07-14 17:14 ` Paul Tremblay
@ 2005-07-18 12:18 ` Mojca Miklavec
  2005-07-18 13:44   ` Hans Hagen
  1 sibling, 1 reply; 4+ messages in thread
From: Mojca Miklavec @ 2005-07-18 12:18 UTC (permalink / raw)


Paul Tremblay wrote:
> What is the best way to number lines of poetry?
> 
> 1  This is the first line
>    This is the second line
>    ...
> 
> 5  this is the fifth
>    ...
> 
> 10 this is the tenth.

This is a solution, written in plain TeX. I hope it is commented well
enough so that you can change it if necessary. You have to surrond the
code with \start...\stop..., but I hope you can do it, otherwise ask
again on the list.

You can change the current line number any time by simply typing
\lineno=999. You probably have to set \lineno to 0 every time you
start typesetting a poem and restore \everypar={} after you are done
with the current poem (in the definition of \startnumberedpoem ...
\stopnumberedpoem of course, not manually).

The code attaches some stuff before every paragraph and there's a
macro that checks if the current paragraph number is divisible by
five. It is a macro with square complexity, so if you want to typeset
Iliad or Odyssey :), please let me know so that I'll change it to be
more efficient :)

The code has a small drawback: you have to write \\ for blank lines.
After I wrote the maco I noticed some comments about redefining the
\par command in Appendix D of the TeXBOOK, typesetting verbatim. If I
manage to fix that too, I'll post it here.

%%%%%%%%%%%%%%%%%%

% new counter for counting lines
% it is set to 0 at the beginning,
% but you can redefine it any time by saying \lineno=7 or similar
\newcount\lineno
% if 0, nothing happens, if 1, no line number will be printed
% and the line number won't advance for one
\newcount\isemptyline


%  templineno = lineno + 5
%  do {
%     templineno = templineno - 5
%  } while (templineno > 5);
%
%  if (templineno == 0) {
%     print lineno
%  }

% only prints \the\lineno if it is divisible by 5
\def\printonlyfives{%
	% define a new counter 'templineno'
	\newcount\templineno
	% set the temporary counter to the line counter
	\templineno=\lineno
	% subtract 5 from the temporary counter as long as the counter is positive
	\advance\templineno by5
	\loop\advance\templineno by-5\ifnum\templineno>5\repeat
	% if the line number is divisible by 5, the temporary counter is 0
	% and the line number will be printed out
	\ifnum\templineno=0{\the\lineno}\fi}

% add this before every paragraph:
% - if this is not an empty line
%    - add one to the line number
%    - print the line number (if divisible by five)
% - hfill (for right alignment)
\everypar={\ifnum\isemptyline=0 \advance\lineno by1 \printonlyfives\fi\hfill}

% (if '\\' is already defined for something else,
% you can use some other command name here)
% this will switch off line numbering, make a new line
% and switch line numbering on again
\def\\{\isemptyline=1\crlf\isemptyline=0}

\obeylines
\dorecurse{30}{the text goes here\par}

%%%%%%%%%%%%%%%%%%

Mojca

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

* Re: how to number poetry?
  2005-07-18 12:18 ` Mojca Miklavec
@ 2005-07-18 13:44   ` Hans Hagen
  0 siblings, 0 replies; 4+ messages in thread
From: Hans Hagen @ 2005-07-18 13:44 UTC (permalink / raw)


Mojca Miklavec wrote:

>Paul Tremblay wrote:
>  
>
>>What is the best way to number lines of poetry?
>>
>>1  This is the first line
>>   This is the second line
>>   ...
>>
>>5  this is the fifth
>>   ...
>>
>>10 this is the tenth.
>>    
>>
>
>This is a solution, written in plain TeX. I hope it is commented well
>enough so that you can change it if necessary. You have to surrond the
>code with \start...\stop..., but I hope you can do it, otherwise ask
>again on the list.
>
>You can change the current line number any time by simply typing
>\lineno=999. You probably have to set \lineno to 0 every time you
>start typesetting a poem and restore \everypar={} after you are done
>with the current poem (in the definition of \startnumberedpoem ...
>\stopnumberedpoem of course, not manually).
>
>The code attaches some stuff before every paragraph and there's a
>macro that checks if the current paragraph number is divisible by
>five. It is a macro with square complexity, so if you want to typeset
>Iliad or Odyssey :), please let me know so that I'll change it to be
>more efficient :)
>
>The code has a small drawback: you have to write \\ for blank lines.
>After I wrote the maco I noticed some comments about redefining the
>\par command in Appendix D of the TeXBOOK, typesetting verbatim. If I
>manage to fix that too, I'll post it here.
>
>%%%%%%%%%%%%%%%%%%
>
>% new counter for counting lines
>% it is set to 0 at the beginning,
>% but you can redefine it any time by saying \lineno=7 or similar
>\newcount\lineno
>% if 0, nothing happens, if 1, no line number will be printed
>% and the line number won't advance for one
>\newcount\isemptyline
>
>
>%  templineno = lineno + 5
>%  do {
>%     templineno = templineno - 5
>%  } while (templineno > 5);
>%
>%  if (templineno == 0) {
>%     print lineno
>%  }
>
>% only prints \the\lineno if it is divisible by 5
>\def\printonlyfives{%
>	% define a new counter 'templineno'
>	\newcount\templineno
>	% set the temporary counter to the line counter
>	\templineno=\lineno
>	% subtract 5 from the temporary counter as long as the counter is positive
>	\advance\templineno by5
>	\loop\advance\templineno by-5\ifnum\templineno>5\repeat
>	% if the line number is divisible by 5, the temporary counter is 0
>	% and the line number will be printed out
>	\ifnum\templineno=0{\the\lineno}\fi}
>
>% add this before every paragraph:
>% - if this is not an empty line
>%    - add one to the line number
>%    - print the line number (if divisible by five)
>% - hfill (for right alignment)
>\everypar={\ifnum\isemptyline=0 \advance\lineno by1 \printonlyfives\fi\hfill}
>
>% (if '\\' is already defined for something else,
>% you can use some other command name here)
>% this will switch off line numbering, make a new line
>% and switch line numbering on again
>\def\\{\isemptyline=1\crlf\isemptyline=0}
>
>\obeylines
>\dorecurse{30}{the text goes here\par}
>  
>
\setuplinenumbering
  [start=2,
   step=2,
   distance=-1em]

\startlinenumbering
\startlines
\fakewords{5}{8}
\fakewords{5}{8}
\fakewords{5}{8}
\fakewords{5}{8}

\fakewords{5}{8}
\fakewords{5}{8}
\fakewords{5}{8}
\fakewords{5}{8}
\stoplines
\stoplinenumbering

\setupparagraphnumbering[state=start,distance=-1em]

\fakewords{5}{8} \par
\fakewords{5}{8} \par
\fakewords{5}{8} \par
\fakewords{5}{8} \par

\fakewords{5}{8} \par
\fakewords{5}{8} \par
\fakewords{5}{8} \par
\fakewords{5}{8} \par


-- 

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
     tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com
                                             | www.pragma-pod.nl
-----------------------------------------------------------------

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

end of thread, other threads:[~2005-07-18 13:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-07-13 20:59 how to number poetry? Paul Tremblay
2005-07-14 17:14 ` Paul Tremblay
2005-07-18 12:18 ` Mojca Miklavec
2005-07-18 13:44   ` Hans Hagen

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