ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Using *fleurons*
@ 2013-11-11 21:40 Francisco Gracia
  2013-11-11 21:56 ` Wolfgang Schuster
  0 siblings, 1 reply; 6+ messages in thread
From: Francisco Gracia @ 2013-11-11 21:40 UTC (permalink / raw)
  To: ntg-context


[-- Attachment #1.1: Type: text/plain, Size: 1004 bytes --]

Thanks for your contributions.

You are right in your remark about the path to images, Wolfgang. I was not
using any

\setupexternalfigure[location=default]

instruction. With your formulations the figure is recovered without problem.

Unfortunately the results of your rewrite of the macro are not so
satisfactory. Surely it is more *ConTeXt*ual than mine but it fails to
fulfill the main purpose of the exercice: it happily prints fleurons in
blank pages, as running your tests with 6 lines demonstrates. In such a
circumstance it should produce just two pages with six lines each, whereas
it outputs 4 pages, the two additional ones containing only ornaments.

Your suggestion, Bill, of using special decorative fonts will be a good
source of artistic material for the construction of alphabetically based
motives by artistically inclined future users of the code, as the
elaboration of the motives rests completely in their hands. The ones
provided are mere demonstration samples.

Regards

Fancisco

[-- Attachment #1.2: Type: text/html, Size: 1145 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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] 6+ messages in thread

* Re: Using *fleurons*
  2013-11-11 21:40 Using *fleurons* Francisco Gracia
@ 2013-11-11 21:56 ` Wolfgang Schuster
  0 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Schuster @ 2013-11-11 21:56 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 932 bytes --]

> Francisco Gracia <mailto:fgragu023@gmail.com>
> 11. November 2013 22:40
> Thanks for your contributions.
>
> You are right in your remark about the path to images, Wolfgang. I was 
> not using any
>
> \setupexternalfigure[location=default]
>
> instruction. With your formulations the figure is recovered without 
> problem.
>
> Unfortunately the results of your rewrite of the macro are not so 
> satisfactory. Surely it is more *ConTeXt*ual than mine but it fails to 
> fulfill the main purpose of the exercice: it happily prints fleurons 
> in blank pages, as running your tests with 6 lines demonstrates. In 
> such a circumstance it should produce just two pages with six lines 
> each, whereas it outputs 4 pages, the two additional ones containing 
> only ornaments.
I haven't spent much time to check my code but its main point
wa to show you a way how to write your own code in a more compact
and efficient way.

Wolfgang

[-- Attachment #1.2.1: Type: text/html, Size: 2260 bytes --]

[-- Attachment #1.2.2: compose-unknown-contact.jpg --]
[-- Type: image/jpeg, Size: 770 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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] 6+ messages in thread

* Re: Using *fleurons*
  2013-11-11 17:51 ` Bill Meahan
@ 2013-11-11 21:22   ` Wolfgang Schuster
  0 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Schuster @ 2013-11-11 21:22 UTC (permalink / raw)
  To: lists, mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 952 bytes --]

> Bill Meahan <mailto:subscribed_lists@meahan.net>
> 11. November 2013 18:51
>
>
> The following has worked quite well for me. I hate using a centered "* 
> * *" for a thematic break so I use a fleuron. I write fiction, not 
> math-filled academic-journal articles or textbooks so this may not be 
> applicable in your case.
>
> First, I use one of many available "dingbat" fonts to provide the 
> fleuron. I am partial to the curly-ques in Nymphette (a 
> readily-available free font) but there are many others.
>
> In my preamble I define:
>
> \definefont[FleuronFont] [nymphette sa 1.5]
>
> Then where I want to place a fleuron I can do something like this.
>
> \midaligned{{\MedBlue \FleuronFont g}}
>
> In this case, the text letter 'g' corresponds to the particular little 
> symbol I want.
>
> YMMV
Take a look at the fancybreak module: 
http://modules.contextgarden.net/dl/t-fancybreak/doc/context/third/fancybreak/fancybreak-doc.pdf

Wolfgang

[-- Attachment #1.2.1: Type: text/html, Size: 2313 bytes --]

[-- Attachment #1.2.2: compose-unknown-contact.jpg --]
[-- Type: image/jpeg, Size: 770 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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] 6+ messages in thread

* Re: Using *fleurons*
  2013-11-10 15:12 Francisco Gracia
  2013-11-10 18:56 ` Wolfgang Schuster
@ 2013-11-11 17:51 ` Bill Meahan
  2013-11-11 21:22   ` Wolfgang Schuster
  1 sibling, 1 reply; 6+ messages in thread
From: Bill Meahan @ 2013-11-11 17:51 UTC (permalink / raw)
  To: ntg-context

On 11/10/2013 10:12 AM, Francisco Gracia wrote:
> *Fleurons* are small decorative pieces that were often used in the 
> past for filling big blank spaces in books. They are seldom used 
> nowdays. As besides they will not appear more than a few times in any 
> book (mainly at the end of chapters), the easiest thing to do if one 
> insists in using them (for instance for simulating an old edition of 
> some past work) is to arrange its presence manually in the source 
> document in the way one would do for any other figure or piece of text.

The following has worked quite well for me. I hate using a centered "* * 
*" for a thematic break so I use a fleuron. I write fiction, not 
math-filled academic-journal articles or textbooks so this may not be 
applicable in your case.

First, I use one of many available "dingbat" fonts to provide the 
fleuron. I am partial to the curly-ques in Nymphette (a 
readily-available free font) but there are many others.

In my preamble I define:

\definefont[FleuronFont] [nymphette sa 1.5]

Then where I want to place a fleuron I can do something like this.

\midaligned{{\MedBlue \FleuronFont g}}

In this case, the text letter 'g' corresponds to the particular little 
symbol I want.

YMMV

-- 
Bill Meahan, Westland, Michigan

  
   “Writing is like getting married. One should never
    commit oneself until one is amazed at one's luck.”

                                —Iris Murdoch

This message is digitally signed with an X.509 certificate
to prove it is from me and has not been altered since it was sent.

___________________________________________________________________________________
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] 6+ messages in thread

* Re: Using *fleurons*
  2013-11-10 15:12 Francisco Gracia
@ 2013-11-10 18:56 ` Wolfgang Schuster
  2013-11-11 17:51 ` Bill Meahan
  1 sibling, 0 replies; 6+ messages in thread
From: Wolfgang Schuster @ 2013-11-10 18:56 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 12838 bytes --]



> Francisco Gracia <mailto:fgragu023@gmail.com>
> 10. November 2013 16:12
> *Fleurons* are small decorative pieces that were often used in the 
> past for filling big blank spaces in books. They are seldom used 
> nowdays. As besides they will not appear more than a few times in any 
> book (mainly at the end of chapters), the easiest thing to do if one 
> insists in using them (for instance for simulating an old edition of 
> some past work) is to arrange its presence manually in the source 
> document in the way one would do for any other figure or piece of text.
>
> I subscribe to this, which is without doubt the way to proceed if the 
> original document will allways be typesett in the same way. But if it 
> were an extensive work and one foresees different layouts for its 
> appearence as different *products*, then one would have one more 
> source of worries after every run of the work through *Context*, as 
> you can bet that sooner than later one page will have been included 
> somewhere whose only content will be the damned *fleuron*, something 
> that obviously should not happen.
>
> This is the problem that I tackled, because I did not find any 
> previous reference or solution to it. My reasoning, my explanations 
> and the working code are all contained in the rest of this message.
>
> It is conceived as being composed of two parts, but it can also be 
> saved and dealt as one piece. If one saves it as two independent files 
> (as should be done if one intends to use it for any other thing that 
> running the tests samples) the content of the first file will be the 
> one delimited as *Fleuron.tex* and that of the second 
> (*Fleuron_test.tex*) would be the rest of the message. The line of 
> this second file
>
>     % \input {Fleuron}
>
> should be uncommented if one intends to run it as such. The one file 
> version runs as it is.
>
> The script creates the new command *\Fleuron{\<motive name>}*, which 
> is the one to include at the place intended in the source document for 
> the *fleuron* to appear (of course after having incorporated the 
> contents of *Fleuron.tex* in its preamble with *\input{Fleuron}*). The 
> argument *<motive name>* allows the selection of a specific motive 
> among the several of them that could be available; the user can create 
> and organize all this according to his wishes. For instance 
> *\Fleuron{\MotiveFive}* would use the example labelled *\MotiveFive* 
> in the group of examples provided. The comments in *Fleuron.tex* 
> explain how to handle all this.
>
> Enjoy and critizice
>
> Francisco
>
> %%%%%%%%%%%%%%%%%%%%%%%
> %
> % Fleuron.tex
> % Script that explains and implements in *ConTeXt* Mk-IV the kind of 
> small ornaments
> % traditionally used by printers for filling big blank spaces in books 
> and printed works.
>
> %*Fleuron*: subst. masc. 2b) Élément décoratif de fantaisie ornant le 
> titre ou les blancs des principales divisions d'un ouvrage [livre] 
> (Trésor de la langue française informatisé).
> %
> %%%%%%%%%%%%%%%%%%%%%%%%%%%
>
> % Creation of the ornament as an entity (in the form of a box)
>
> % Typesetting true *fleurons* requires the use of *TeX*'s special *box 
> registers* as arguments;
> % here box register number *0* has been arbitrarily selected for the 
> proceedings.
> % The essential steps in the construction are:
> %    - (typo)graphical composition of the motive (as for instance 
> *\midaligned{Finis}* in the first example)
> %        or designation of the source file of an image,
> %    - enclosure of it in a vertical box (*\vbox{\midaligned{Finis}}*) and
> %     - finally association of the boxed motive with boxregister *0* 
> (*\setbox0= ...*), all of which happens
> %          in reverse order, from right to left, in the code.
> % Here are several examples of this:
> %\setbox0=\vbox{\midaligned{Finis}}
> %\setbox0=\vbox{\midaligned{Finis\\coronat\\opus}}
> %\setbox0=\vbox{\midaligned{*****} \Inter \midaligned{***} \Inter 
> \midaligned{*}}
>
> % In order to get in *TeX* something remotely similar to a normal 
> variable,
> % called *Motivo*, the following machinery has to be implemented
> \def\Motivo{\copy0}        % get a copy of register's *0* content
>
> % the graphic parts of several (typographical) test motives follow:
> \def\MotOne{{\midaligned{\em Finis}}}
> \def\MotTwo{{\midaligned{\em Finis\\\em coronat\\\em opus}}}
> \def\MotThree{{\midaligned{*****} \Inter \midaligned{***} \Inter 
> \midaligned{*}}}
> \def\MotFour{{\midaligned{___________}}}
> \def\MotFive{{\bf \midaligned{\hl[1]} \Inter \midaligned{\hl[5]} 
> \Inter \midaligned{\hl[1]}}}
>
> %%%%%%%%%%%%%%%%%%%%%%%%%
> %
> % THINGS THAT DO NOT WORK
> %
> %\setbox0=\vbox{\midaligned{\switchtobodyfont[20pt]*}}    % executing 
> these corrupt the whole script
> %\setbox0=\vbox{\switchtobodyfont[20pt] \midaligned{*****\\***\\*}}
> %\def\Grande{\midaligned{\switchtobodyfont[50pt]*}}        % in any 
> form it is tried
> %\setbox0=\vbox{\Grande}
> %
> %%%%%%%%%%%%%%%%%%%%%%%%%
>
> %%%%%%%%%%%%%%%%%%%%%%%%%
> %
> % USING FIGURES AS MOTIVES
> %
> % Most *fleurons* will be based on figures (usually images of 
> schematic line drawings)
> % rather than on elements of the alphabetical character set.
> % So it is important to insure that also this alternative works as it 
> should.
> % *Contextref* says that just giving the name of the figure's file is 
> enough,
> %\useexternalfigure [cow] [cow.pdf] [scale=300]
> % but this usually does not work, so better give the whole path to the 
> figure in your machine
> \useexternalfigure [cow] 
> [L:/ConTeXt/context/tex/texmf-context/tex/context/sample/cow.pdf] 
> [hfactor=20]
> %\setbox0=\vbox{\externalfigure [cow] }
> \def\MotCow{{\externalfigure [cow] }}
> %
> %%%%%%%%%%%%%%%%%%%%%%%%%
>
> %%%%%%%%%%%%%%%%%%%%%%%%%
> %
> % This is the algorithmically interesting part of the whole business. 
> It rests upon one instruction,
> % *pagespace*, which gets and handles some of *TeX*'s internal 
> magnitudes of the page.
> % Its code was devised, implemented and very well explained by D. Salomon
> % in *Output Routines: Examples and Techniques.
> % Part I: Introduction and Examples.* Tugboat 11 nº 1: 71.), from 
> where the following extract originates:
> %
> % "As an example, the two variables [*pagetotal*, *t*, and *pagegoal*, 
> *g*] will be used
> % to determine how much space is left on the current page.
> % If *t* is zero, the space left on the page is the entire page 
> (*\vsize*).
> % Otherwise, it is the difference *g - t*. Macro *\pagespace* 
> calculates that difference".
>
> % The interpretations and comments that follow are on the contrary mine;
> % so be careful: they can be wrong!
> % Determination of the space available in *TeX*'s *current page*
> \newdimen\Spaceleft            % the result will be stored under this name
> % computation of the datum
> \def\pagespace{%
>    \ifdim\pagetotal=0pt        % if the page is empty (i.e. if it is a 
> new page)
>       \Spaceleft=\vsize            % the available space is the full 
> design page
>    \else                    % otherwise
>       \Spaceleft=\pagegoal        % the required amount is the design 
> maximum size
>       \advance\Spaceleft -\pagetotal    % less the already used space
>    \fi}
>
> % We also need for our purposes certain numerical information about 
> the ornament,
> % mainly its height; so let's get it algorithmically
> %\def\Talla{100pt}
> \newdimen\Orn                % the height of the ornament in points
> \newdimen\Talla                % the space requested from the page 
> (with some *air* around)
> \newdimen\Respiro            % the blank space between text and *fleuron*
>
> % let us construct the selected *fleuron*
> \def\Instance#1{%            % we get the (typo)graphical content as 
> argument,
>    \setbox0=\vbox{#1}        % put it in a box and assign the box to 
> register *0*
>    \Orn=\ht0                % after which we can get the required 
> values through this register
>    \Talla=\ht0                % (getting as an aside a little sample 
> of the daunting *texan* arithmetic)
>    %\advance \Talla by 0.5\Talla    % compute half the height of the 
> ornament
>    \advance \Talla by \Talla        % twice the height of the ornament
> %   \Respiro=0.5\ht0            % half the height of the ornament
> }
>
> % and the operative command can be finally issued
> \def\Fleuron#1{%
>    \Instance{#1}                % assemble the object
>    \pagespace                % get from *TeX* the relevant magnitudes 
> about the *current page*
>
> % (transitory debug information
> %   Available: \the\Spaceleft\par  % this shows the information on the 
> document itself
> %   Required: \the\Talla\par
> %   Ornament: \the\Orn\par
> %   Disponible: \show\Spaceleft\par  % and this shows it in the terminal
> %   Requerido: \show\Talla\par
> %   Ornamento: \show\Orn\par     % )
>
>    \ifdim\Spaceleft>4\Orn        % if there are lots of space available
> %    \Respiro=\ht0            % insert a bigger separation
>       \Respiro=\Orn            % insert a bigger separation
>    \else
>       \Respiro=0.5\Orn        % insert a smaller separation
>    \fi
>
>    \ifdim\Spaceleft<\vsize        % only when the page has already 
> some previous content
>       \ifdim\Spaceleft>\Talla        % but keeps also enough space for 
> the ornament,
>          \vskip\Respiro            % add a reasonable separation from 
> the text
> %       \vskip 0.5\Orn             % (as could be half the size of the 
> ornament)
>          \midaligned{\Motivo}        % and typeset the ornament centered
>       \fi
>    \fi
> }
>
>
> \def\Inter{\vskip 0.1pt}        % small downward displacement
>
> %%%%%%%%%%%%%%%%%%%%%
> %
> %End of *Fleuron.tex*
> %
> %%%%%%%%%%%%%%%%%%%%%
>
> %%%%%%%%%%%%%%%%%%%%%
> %
> % *Fleuron_test.tex*
> % Test script for the *Fleuron* instruction
>
> %\input {Fleuron}            % incorporate the contents of *Fleuron.tex*
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> %
> % some layout provisions for the test document
>
> \setuplayout[lines=10]    % size of the output page in lines
> \preloadtypescripts
> \usetypescript[latinmodern]
> \setupbodyfont[9pt]
>
> %\tracingpages=1        % show some internal typrographical magnitudes 
> in the *.log* file
>
>
> %%%%%%%%%%%%%%%%%%%%%
> %
> % Typesetting and display
> %
>
> \starttext
>
> Test script for the \em Fleuron \em complement.\par
>
> %\placefigure [none] {}{\externalfigure[cow]}    % testing if figure 
> reproduction works by itself
>
> \dorecurse{2}{Line \recurselevel\par}        % fill the page with some 
> lines and show the *fleuron*
> %\dorecurse{6}{Line \recurselevel\par}        % (more lines could 
> exclude the *fleuron*)
>
> % *\MotOne*, *\MotTwo*, *\MotThree*, *\MotFour*, *\MotFive*
> %  y *\MotCow* are available as example arguments
> \Fleuron{\MotTwo}            % passed argument allows selection among 
> available motives
>
> \stoptext

1. To use graphics from the TeX directory add 
\setupexternalfigures[location=default] (or better 
location={local,global,default}) to your document, avoid abolsute paths.

2. Add braces around the words where you want to change the font with 
\em, e.g. {\em this text is emphasized}.

3. Use context programming stuff when you want to write a command, e.g. 
\dowithnextboxcs. With \dimexpr you can also simplify calculations 
because you don't have to store dimension to multiply or add them

Below is a simpler version of your \Fleuron command but I haven't 
checked if everything works as expected.

\unprotect

\unexpanded\def\fleuron
   {\par
    \begingroup
    \setupalign[\v!middle]%
    \dowithnextboxcs\fleuron_direct\vbox}

\def\fleuron_direct
   {\ifzeropt\pagetotal
      % new page, don't place the fleuron
    \else
      \ifdim\dimexpr\pagegoal-\pagetotal-\htdp\nextbox\relax<\textheight
        
\ifdim\dimexpr\pagegoal-\pagetotal\relax<\dimexpr\htdp\nextbox*4\relax
          \vskip.5\htdp\nextbox
        \else
          \vskip\htdp\nextbox
        \fi
        \box\nextbox
      \fi
    \fi
    \endgroup}

\protect

\setuplayout[lines=10]

\setupexternalfigure[location=default] % use figures from the tex directory

\setupbodyfont[9pt]

\showframe

\starttext

Test script for the {\em Fleuron} complement.\par

\dorecurse{2}{Line \recurselevel\par}

\fleuron{\em Finis\\\em coronat\\\em opus}

\page

\dorecurse{2}{Line \recurselevel\par}

\fleuron{\dontleavehmode\externalfigure[cow][height=2cm]}

\stoptext

Wolfgang

[-- Attachment #1.2.1: Type: text/html, Size: 16704 bytes --]

[-- Attachment #1.2.2: compose-unknown-contact.jpg --]
[-- Type: image/jpeg, Size: 770 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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] 6+ messages in thread

* Using *fleurons*
@ 2013-11-10 15:12 Francisco Gracia
  2013-11-10 18:56 ` Wolfgang Schuster
  2013-11-11 17:51 ` Bill Meahan
  0 siblings, 2 replies; 6+ messages in thread
From: Francisco Gracia @ 2013-11-10 15:12 UTC (permalink / raw)
  To: ntg-context


[-- Attachment #1.1: Type: text/plain, Size: 10550 bytes --]

*Fleurons* are small decorative pieces that were often used in the past for
filling big blank spaces in books. They are seldom used nowdays. As besides
they will not appear more than a few times in any book (mainly at the end
of chapters), the easiest thing to do if one insists in using them (for
instance for simulating an old edition of some past work) is to arrange its
presence manually in the source document in the way one would do for any
other figure or piece of text.

I subscribe to this, which is without doubt the way to proceed if the
original document will allways be typesett in the same way. But if it were
an extensive work and one foresees different layouts for its appearence as
different *products*, then one would have one more source of worries after
every run of the work through *Context*, as you can bet that sooner than
later one page will have been included somewhere whose only content will be
the damned *fleuron*, something that obviously should not happen.

This is the problem that I tackled, because I did not find any previous
reference or solution to it. My reasoning, my explanations and the working
code are all contained in the rest of this message.

It is conceived as being composed of two parts, but it can also be saved
and dealt as one piece. If one saves it as two independent files (as should
be done if one intends to use it for any other thing that running the tests
samples) the content of the first file will be the one delimited as
*Fleuron.tex* and that of the second (*Fleuron_test.tex*) would be the rest
of the message. The line of this second file

    % \input {Fleuron}

should be uncommented if one intends to run it as such. The one file
version runs as it is.

The script creates the new command *\Fleuron{\<motive name>}*, which is the
one to include at the place intended in the source document for the
*fleuron* to appear (of course after having incorporated the contents of
*Fleuron.tex* in its preamble with *\input{Fleuron}*). The argument
*<motive name>* allows the selection of a specific motive among the several
of them that could be available; the user can create and organize all this
according to his wishes. For instance *\Fleuron{\MotiveFive}* would use the
example labelled *\MotiveFive* in the group of examples provided. The
comments in *Fleuron.tex* explain how to handle all this.

Enjoy and critizice

Francisco

%%%%%%%%%%%%%%%%%%%%%%%
%
% Fleuron.tex
% Script that explains and implements in *ConTeXt* Mk-IV the kind of small
ornaments
% traditionally used by printers for filling big blank spaces in books and
printed works.

%*Fleuron*: subst. masc. 2b) Élément décoratif de fantaisie ornant le titre
ou les blancs des principales divisions d'un ouvrage [livre] (Trésor de la
langue française informatisé).
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Creation of the ornament as an entity (in the form of a box)

% Typesetting true *fleurons* requires the use of *TeX*'s special *box
registers* as arguments;
% here box register number *0* has been arbitrarily selected for the
proceedings.
% The essential steps in the construction are:
%    - (typo)graphical composition of the motive (as for instance
*\midaligned{Finis}* in the first example)
%        or designation of the source file of an image,
%    - enclosure of it in a vertical box (*\vbox{\midaligned{Finis}}*) and
%     - finally association of the boxed motive with boxregister *0*
(*\setbox0= ...*), all of which happens
%          in reverse order, from right to left, in the code.
% Here are several examples of this:
%\setbox0=\vbox{\midaligned{Finis}}
%\setbox0=\vbox{\midaligned{Finis\\coronat\\opus}}
%\setbox0=\vbox{\midaligned{*****} \Inter \midaligned{***} \Inter
\midaligned{*}}

% In order to get in *TeX* something remotely similar to a normal variable,
% called *Motivo*, the following machinery has to be implemented
\def\Motivo{\copy0}        % get a copy of register's *0* content

% the graphic parts of several (typographical) test motives follow:
\def\MotOne{{\midaligned{\em Finis}}}
\def\MotTwo{{\midaligned{\em Finis\\\em coronat\\\em opus}}}
\def\MotThree{{\midaligned{*****} \Inter \midaligned{***} \Inter
\midaligned{*}}}
\def\MotFour{{\midaligned{___________}}}
\def\MotFive{{\bf \midaligned{\hl[1]} \Inter \midaligned{\hl[5]} \Inter
\midaligned{\hl[1]}}}

%%%%%%%%%%%%%%%%%%%%%%%%%
%
% THINGS THAT DO NOT WORK
%
%\setbox0=\vbox{\midaligned{\switchtobodyfont[20pt]*}}    % executing these
corrupt the whole script
%\setbox0=\vbox{\switchtobodyfont[20pt] \midaligned{*****\\***\\*}}
%\def\Grande{\midaligned{\switchtobodyfont[50pt]*}}        % in any form it
is tried
%\setbox0=\vbox{\Grande}
%
%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%
%
% USING FIGURES AS MOTIVES
%
% Most *fleurons* will be based on figures (usually images of schematic
line drawings)
% rather than on elements of the alphabetical character set.
% So it is important to insure that also this alternative works as it
should.
% *Contextref* says that just giving the name of the figure's file is
enough,
%\useexternalfigure [cow] [cow.pdf] [scale=300]
% but this usually does not work, so better give the whole path to the
figure in your machine
\useexternalfigure [cow]
[L:/ConTeXt/context/tex/texmf-context/tex/context/sample/cow.pdf]
[hfactor=20]
%\setbox0=\vbox{\externalfigure [cow] }
\def\MotCow{{\externalfigure [cow] }}
%
%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This is the algorithmically interesting part of the whole business. It
rests upon one instruction,
% *pagespace*, which gets and handles some of *TeX*'s internal magnitudes
of the page.
% Its code was devised, implemented and very well explained by D. Salomon
% in *Output Routines: Examples and Techniques.
% Part I: Introduction and Examples.* Tugboat 11 nº 1: 71.), from where the
following extract originates:
%
% "As an example, the two variables [*pagetotal*, *t*, and *pagegoal*, *g*]
will be used
% to determine how much space is left on the current page.
% If *t* is zero, the space left on the page is the entire page (*\vsize*).
% Otherwise, it is the difference *g - t*. Macro *\pagespace* calculates
that difference".

% The interpretations and comments that follow are on the contrary mine;
% so be careful: they can be wrong!
% Determination of the space available in *TeX*'s *current page*
\newdimen\Spaceleft            % the result will be stored under this name
% computation of the datum
\def\pagespace{%
   \ifdim\pagetotal=0pt        % if the page is empty (i.e. if it is a new
page)
      \Spaceleft=\vsize            % the available space is the full design
page
   \else                    % otherwise
      \Spaceleft=\pagegoal        % the required amount is the design
maximum size
      \advance\Spaceleft -\pagetotal    % less the already used space
   \fi}

% We also need for our purposes certain numerical information about the
ornament,
% mainly its height; so let's get it algorithmically
%\def\Talla{100pt}
\newdimen\Orn                % the height of the ornament in points
\newdimen\Talla                % the space requested from the page (with
some *air* around)
\newdimen\Respiro            % the blank space between text and *fleuron*

% let us construct the selected *fleuron*
\def\Instance#1{%            % we get the (typo)graphical content as
argument,
   \setbox0=\vbox{#1}        % put it in a box and assign the box to
register *0*
   \Orn=\ht0                % after which we can get the required values
through this register
   \Talla=\ht0                % (getting as an aside a little sample of the
daunting *texan* arithmetic)
   %\advance \Talla by 0.5\Talla    % compute half the height of the
ornament
   \advance \Talla by \Talla        % twice the height of the ornament
%   \Respiro=0.5\ht0            % half the height of the ornament
}

% and the operative command can be finally issued
\def\Fleuron#1{%
   \Instance{#1}                % assemble the object
   \pagespace                % get from *TeX* the relevant magnitudes about
the *current page*

% (transitory debug information
%   Available: \the\Spaceleft\par  % this shows the information on the
document itself
%   Required: \the\Talla\par
%   Ornament: \the\Orn\par
%   Disponible: \show\Spaceleft\par  % and this shows it in the terminal
%   Requerido: \show\Talla\par
%   Ornamento: \show\Orn\par     % )

   \ifdim\Spaceleft>4\Orn        % if there are lots of space available
%    \Respiro=\ht0            % insert a bigger separation
      \Respiro=\Orn            % insert a bigger separation
   \else
      \Respiro=0.5\Orn        % insert a smaller separation
   \fi

   \ifdim\Spaceleft<\vsize        % only when the page has already some
previous content
      \ifdim\Spaceleft>\Talla        % but keeps also enough space for the
ornament,
         \vskip\Respiro            % add a reasonable separation from the
text
%       \vskip 0.5\Orn             % (as could be half the size of the
ornament)
         \midaligned{\Motivo}        % and typeset the ornament centered
      \fi
   \fi
}


\def\Inter{\vskip 0.1pt}        % small downward displacement

%%%%%%%%%%%%%%%%%%%%%
%
%End of *Fleuron.tex*
%
%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%
%
% *Fleuron_test.tex*
% Test script for the *Fleuron* instruction

%\input {Fleuron}            % incorporate the contents of *Fleuron.tex*

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% some layout provisions for the test document

\setuplayout[lines=10]    % size of the output page in lines
\preloadtypescripts
\usetypescript[latinmodern]
\setupbodyfont[9pt]

%\tracingpages=1        % show some internal typrographical magnitudes in
the *.log* file


%%%%%%%%%%%%%%%%%%%%%
%
% Typesetting and display
%

\starttext

Test script for the \em Fleuron \em complement.\par

%\placefigure [none] {}{\externalfigure[cow]}    % testing if figure
reproduction works by itself

\dorecurse{2}{Line \recurselevel\par}        % fill the page with some
lines and show the *fleuron*
%\dorecurse{6}{Line \recurselevel\par}        % (more lines could exclude
the *fleuron*)

% *\MotOne*, *\MotTwo*, *\MotThree*, *\MotFour*, *\MotFive*
%  y *\MotCow* are available as example arguments
\Fleuron{\MotTwo}            % passed argument allows selection among
available motives

\stoptext

[-- Attachment #1.2: Type: text/html, Size: 13188 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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] 6+ messages in thread

end of thread, other threads:[~2013-11-11 21:56 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-11-11 21:40 Using *fleurons* Francisco Gracia
2013-11-11 21:56 ` Wolfgang Schuster
  -- strict thread matches above, loose matches on Subject: below --
2013-11-10 15:12 Francisco Gracia
2013-11-10 18:56 ` Wolfgang Schuster
2013-11-11 17:51 ` Bill Meahan
2013-11-11 21: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).