8.3. Source de programme avec zones


ProgramListingCO = (AreaSpec, ProgramListing, CalloutList*)

AreaSpec = ( (Area | AreaSet )+
           )

Area = EMPTY

AreaSet = ( Area+ )

ProgramListing = ( ( CO | LineAnnotation | %para.char.mix;)+
                 )

CalloutList = ( ( Title, TitleAbbrev? )?,
                Callout+
              )

Callout = ( (%component.mix;)+ )

Éléments : ProgramListingCO, AreaSpec, ProgramListing, CalloutList, Area, AreaSet, CO, LineAnnotation, Title, TitleAbbrev, Callout.

L'élément ProgramListingCO permet de définir un listing de programme contenant des renvois vers des descriptions se trouvant à l'extérieur du listing, les positions des renvois dans le listing étant définies par leurs coordonnées.

Un élément ProgramListingCO est constitué :

8.3.1. Collection de régions

Attributs : Units, OtherUnits, Coords.

Une collection de régions AreaSpec est constitué d'un ou plusieurs des éléments suivants, dans un ordre quelconque :

Un ensemble de région AreaSet est, lui, constitué d'une ou plusieurs régions Area.

Les éléments AreaSpec, AreaSet et Area acceptent des attributs Units et OtherUnits, permettant de définir dans quelle unité sont définis les coordonnées précisées par l'élément Area inclus.

L'attribut Units peut prendre les valeurs suivantes :

CALSPair x1,y1 x2,y2

coordonnées bas-gauche et haut-droit dans un rectangle décrivant la zone de reproduction du graphique, où les dimensions X et Y prennent une valeur entre 0 et 10000, indiquant un pourcentage*100 de la dimension totale du graphique. Ce type de coordonnées est utilisé pour les graphiques seulement, et non pour les environnements spécifiques en ligne comme ProgramListing ou Screen.

LineColumn ligne colonne

Numéro de ligne et numéro de colonne où commence la zone, dans un environnement spécifique en ligne.

LineRange ligne_début ligne_fin

La zone est contenue entre les lignes ligne_début et ligne_fin, dans un environnement spécifique en ligne.

LineColumnPair ligne1 colonne1 ligne2 colonne2

La zone est comprise entre les points (ligne1, colonne1) et (ligne2, colonne2), les lignes comprises entre ligne1 et ligne2 étant entièrement inclues dans la zone, dans un environnement spécifique en ligne.

Other

L'attribut OtherUnits définit l'unité des coordonnées.

La valeur par défaut de l'attribut Units dépend de l'élément englobant. Pour un élément ProgramListingCO ou ScreenCO, la valeur par défaut est LineColumn.

L'attribut OtherUnits est utilisé lorsque la valeur de Units est Other. Les valeurs possibles pour OtherUnits dépendent du système de traitement.

Si les attributs Units et OtherUnits ne sont pas définis dans des éléments AreaSet ou Area, leurs valeurs sont héritées des éléments AreaSpec ou AreaSet englobants.

L'élément Area permet de définir l'attribut Coords, donnant les coordonnées de la zone, dans l'unité définie par les attributs Units et OtherUnits de l'élément courant ou de l'élément englobant.

L'élément AreaSet doit aussi contenir un attribut Coords, mais la valeur de cet attribut n'est pas utilisée. En effet, l'attribut Coords est obligatoirement redéfini dans les éléments Area contenus dans un AreaSet.

Enfin, il faut définir un attribut ID pour les éléments AreaSet et Area. Cet ID permettra de faire référence à la zone ou à l'ensemble de zones correspondant à partir de l'élément CalloutList inclu dans le même élément ProgramListingCO ou ScreenCO.

8.3.2. Listing de programme

L'élément ProgramListing permet de définir un environnement verbatim contenant un listing ou un extrait de listing de programme.

L'élément ProgramListing peut contenir des éléments en ligne, ainsi que des éléments CO et LineAnnotation.

Les éléments en ligne fourniront le listing du programme. Les éléments LineAnnotation permettront d'insérer des notes dans l'environnement verbatim. Les éléments CO permettront d'insérer des renvois vers des descriptions se trouvant en dehors de l'environnement verbatim.

Lorsque l'élément ProgramListing se trouve à l'intérieur d'un élément ProgramListingCO, il est préférable d'utiliser une spécification de régions AreaSpec plutôt que des éléments CO pour définir des zones à l'intérieur du listing de programme.

8.3.3. Liste d'annotations

Attributs : AreaRefs.

Un élément CalloutList est une liste d'annotations. Chaque élément Callout de cette liste, représentant une annotation distincte, pointe vers une région d'un élément Graphic, ImageObject, MediaObject, ProgramListing ou Screen. Cette région aura été définie soit à partir d'un élément AreaSpec, soit à partir d'un élément CO.

Un élément CalloutList est constitué :

Chacune des annotations Callout contient des éléments de type bloc, qui donnent une description de la zone vers laquelle elle pointe.

L'attribut obligatoire AreaRefs de l'élément Callout permet d'indiquer la zone (Area), l'ensemble de zones (AreaSet) ou le pointeur de zone (CO) décrit par cette annotation. Il prend pour valeur la valeur de l'attribut ID de l'élément cible.

8.3.4. Exemple


<programlistingco>
  <areaspec>
    <area coords="2 4" id="zone1" units="linerange">
    <areaset coords="" units="linecolumn" id="zone2">
      <area coords="1 6" id="zone2.1">
      <area coords="5 6" id="zone2.2">
    </areaset>
  </areaspec>
  <programlisting>ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
</programlisting>
  <calloutlist>
    <callout arearefs="zone1">
      <para>Zone 1</para>
    </callout>
    <callout arearefs="zone2">
      <para>Points 2</para>
    </callout>
  </calloutlist>
</programlistingco>