(FR) Introdution au Format de fichier SLA pour Scribus 1.4: Difference between revisions

From Scribus Wiki
Jump to navigation Jump to search
No edit summary
 
(22 intermediate revisions by the same user not shown)
Line 1: Line 1:
= Introduction au format de fichier .SLA pour Scribus 1.4 =
= Format XML des fichiers SLA =


Afin de générer des fichiers SLA dans un programme PHP, j'ai étudié le format SLA de Scribus. Voici les notes qui m'ont permis d'aboutir au résultat voulu. Elles ne portent que sur les éléments qui m'ont été utiles pour ce projet, et ne prétend aucunement à l'exhaustivité.
Afin de générer des fichiers SLA dans un programme PHP, j'ai étudié le format SLA de Scribus. Voici les notes qui m'ont permis d'aboutir au résultat voulu. Elles ne portent que sur les éléments qui m'ont été utiles pour ce projet, et ne prétend aucunement à l'exhaustivité. La page [[File_Format_Specification_for_Scribus_1.4]] dresse la liste des balises et de leurs attributs, mais il n'y a aucune explication.


Le format XML de Scribus est assez clair à comprendre et cette étude s'est faite assez simplement par 'rétro engineering'. Les balises XML ont des noms parfois opaques, mais les attributs ont des dénominations plus intuitives, même s'il y a quelques faux amis, s'ils sont parfois en anglais et parfois en allemand.  
Le format XML de Scribus est assez clair à comprendre et cette étude s'est faite assez simplement par 'rétro engineering'. Les balises XML ont des noms parfois opaques, mais les attributs ont des dénominations plus intuitives, même s'il y a quelques faux amis, et même s'ils sont parfois en anglais et parfois en allemand. A partir d'un fichier modèle fait avec SCRIBUS il est possible de voir les parties intéressantes, d'y faire des modifs et de vérifier le résultat dans Scribus.


A partir d'un fichier modèle fait avec SCRIBUS il est possible de voir les parties intéressantes, d'y faire des modifs et de vérifier le résultat dans Scribus.
Attention : les noms des tags et des attribus sont sensibles à la casse. Parfois ils sont en majuscules, parfois ils sont en CamelCase, il faut respecter cela, donc soyez vigilants.


Après une entête <code><?xml version="1.0" encoding="UTF-8"?></code>, un fichier SLA se compose d'une balise DOCUMENT qui comprend   
= Balise DOCUMENT =
 
Après une entête <code><?xml version="1.0" encoding="UTF-8"?></code>, un fichier SLA se compose d'une balise <code><DOCUMENT...></code> qui comprend   
* la définition de l'environnement (préférences, styles et autres éléments)  
* la définition de l'environnement (préférences, styles et autres éléments)  
* le contenu lui même.
* le contenu lui même.
Attention : les noms des tags et des attribus sont sensibles à la casse. Parfois ils sont en majuscule, parfois ils sont en CamelCase, donc soyez vigilant.
== Balise DOCUMENT ==


Dans le cas d'un format A5, ça donne :
Dans le cas d'un format A5, ça donne :
Line 23: Line 21:
Par exemple, pour un document d'un autre format que le A5, les dimensions PAGEWIDTH et PAGEHEIGHT seront différentes.
Par exemple, pour un document d'un autre format que le A5, les dimensions PAGEWIDTH et PAGEHEIGHT seront différentes.


SHOWLINK="1" pour montrer les liens entre linked frames (0 sinon) (très pratique pour élaborer la structure du document)
SHOWLINK="1" demande de montrer dans scribus les liens entre linked frames (0 sinon). C'est très pratique pour élaborer la structure du document.
LANGUAGE="French" sert probablement pour les césures et pour le correcteur orthographique si il voulait bien marcher


== Environnement==
LANGUAGE="French" sert probablement pour les césures et pour le correcteur orthographique lorsqu'il marche.


L'environnement comporte les valeurs des préférences :
= Environnement=


Je n'ai travaillé que sur les styles et les couleurs.
L'environnement comporte les valeurs des préférences. Je n'ai travaillé que sur les styles et les couleurs, que je détaille un peu ici. Le reste peut être recopié telquel à partir d'un fichier modèle.
Le reste peut être recopié telquel à partir d'un fichier modèle.


=== Définition des styles ===
== Définition des styles ==
Ici : définition du style de paragraphe par défaut, d'un style de paragraphe "ParMonstyle" et d'un style de caractère "ChaMonstyle".
Ici : définition du style de paragraphe par défaut, d'un style de paragraphe "ParMonstyle" et d'un style de caractère "ChaMonstyle".


Line 45: Line 41:
ANAME c'est le nom du style.
ANAME c'est le nom du style.


====Pour les styles de paragraphes====
===Pour les styles de paragraphes===


CPARENT indique le style de caractère sur lequel est basé le style de paragraphe.
CPARENT indique le style de caractère sur lequel est basé le style de paragraphe.
Le champ ALIGN vaut :
Le champ ALIGN vaut :
0 pour un alignement à gauche,
0 pour un alignement à gauche,
Line 54: Line 51:
3 pour justifié
3 pour justifié
4 pour justification totale (yc dernière ligne incomplète)
4 pour justification totale (yc dernière ligne incomplète)
Le champ VOR vaut l'espace avant un paragraphe et le champ NACH vaut l'espace après.
Le champ VOR vaut l'espace avant un paragraphe et le champ NACH vaut l'espace après.


=== Couleurs ===
== Couleurs ==


Les couleurs peuvent être en RGB ou en CMJN  
Les couleurs peuvent être en RGB ou en CMJN  


en RGB <COLOR NAME="Green" RGB="#00ff00" Spot="0" Register="0"/>
en RGB <code><COLOR NAME="Green" RGB="#00ff00" Spot="0" Register="0"/></code>


en CMJN <COLOR NAME="couldept01" CMYK="#789abc00" Spot="0" Register="0"/>
en CMJN <code><COLOR NAME="couldept01" CMYK="#789abc00" Spot="0" Register="0"/></code>


=== Autres définitions de l'environnement ===
== Autres définitions de l'environnement ==


Les autres éléments de l'environnement sont
Les autres éléments de l'environnement sont
Line 76: Line 74:
et quelques autres structures.
et quelques autres structures.


== Contenu ==
= Contenu =
Le contenu c'est ce qui se voit : les pages qui sont le support du contenu, et le contenu lui même : cadres contenant et texte contenu des cadres.
Le contenu c'est ce qui se voit : les pages qui sont le support du contenu et le contenu lui-même : cadres contenant et texte contenu des cadres.
 
Il y a aussi les calques <LAYERS...> que je n'ai pas étudié.


=== Les pages PAGE ===
== Les pages PAGE ==


Les pages sont définies par des objets <PAGE>
Les pages sont définies par des objets <PAGE>


<PAGE PAGEXPOS="519.5" PAGEYPOS="18442.9924" PAGEWIDTH="419.527559055118" PAGEHEIGHT="595.275590551181" BORDERLEFT="28.3464566929134" BORDERRIGHT="28.3464566929134" BORDERTOP="34.0157480314961" BORDERBOTTOM="42.5196850393701" NUM="59" NAM="" MNAM="Normal" Size="A5" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides=""  AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/>
<code><PAGE PAGEXPOS="519.5" PAGEYPOS="18442.9924" PAGEWIDTH="419.527559055118" PAGEHEIGHT="595.275590551181" BORDERLEFT="28.3464566929134" BORDERRIGHT="28.3464566929134" BORDERTOP="34.0157480314961" BORDERBOTTOM="42.5196850393701" NUM="59" NAM="" MNAM="Normal" Size="A5" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides=""  AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/></code>


La structure <PAGE...> contient :
La structure <PAGE...> contient :
Line 98: Line 94:
Les pages sont séparées par un espace à l'écran paramétrable qui compte aussi pour PAGEYPOS.
Les pages sont séparées par un espace à l'écran paramétrable qui compte aussi pour PAGEYPOS.


=== Les cadres (frames) : PAGEOBJECTS ===
== Les cadres (frames) : PAGEOBJECTS ==


<PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="535" YPOS="54" WIDTH="375.874" HEIGHT="519" RADRECT="0" FRTYPE="0" CLIPEDIT="1" PWIDTH="1" PCOLOR="None" PCOLOR2="None" COLUMNS="2" COLGAP="8.5039" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="frame0" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0.0282114473731099" gWidth="782.276340162126" gHeight="519" LAYER="0" BOOKMARK="0" NEXTITEM="1" BACKITEM="-1">
<code><PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="535" YPOS="54" WIDTH="375.874" HEIGHT="519" RADRECT="0" FRTYPE="0" CLIPEDIT="1" PWIDTH="1" PCOLOR="None" PCOLOR2="None" COLUMNS="2" COLGAP="8.5039" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="frame0" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0.0282114473731099" gWidth="782.276340162126" gHeight="519" LAYER="0" BOOKMARK="0" NEXTITEM="1" BACKITEM="-1"> ...(contenu du cadre) ... </PAGEOBJECT></code>


* ANNAME contient le nom du frame visible dans la palette
* ANNAME contient le nom du frame visible dans la palette
* OWNPAGE contient le n° de l'item (doit commencer à 0 sinon plantage de scribus)  
* OWNPAGE contient le n° de l'item (doit commencer à 0 sinon plantage de scribus). Attention, ownpage peut valoir autre chose que la page courante lorsque cette notion n'est pas pertinente : dans le cas d'un frame à cheval sur plusieurs pages, dans un groupe d'objets ou pour les frames inline notemment. Dans ces derniers cas, ownframe vaut -1.
* NEXTITEM contient le n° de l'item linké suivant (qui doit exister sinon plantage) ou -1 sinon
* NEXTITEM contient le n° de l'item linké suivant (qui doit exister sinon plantage) ou -1 sinon
* BACKITEM contient le n° de l'item linké précédent  (qui doit exister sinon plantage) ou -1 sinon
* BACKITEM contient le n° de l'item linké précédent  (qui doit exister sinon plantage) ou -1 sinon
* XPOS, YPOS : coordonnées absolues depuis le haut gauche de l'espace de la 1ère planche (planche 0 de l'item 0)
* XPOS, YPOS : coordonnées absolues depuis le haut gauche de l'espace de la 1ère planche (planche 0 de l'item 0)
* PTYPE : type de cadre. PTYPE="4" indique un cadre de texte. Cette doc ne présente que les text frames.
Attention : Les cadres PAGEOBJECT sont définis au premier niveau de la balise <DOCUMENT>, au même niveau que les <PAGE> donc, et non à l'intérieur d'une PAGE. En effet un cadre peut être à cheval sur plusieurs pages. Le DOCUMENT contient donc tous ces éléments "en vrac", c'est les XPOS et YPOS qui indiquent leur positionnement.


Cette doc ne présente que les text frames.
A l'intérieur d'un cadre PAGEOBJECT, tout le contenu est défini par des <BALISEs> et notamment par des <ITEXT ...> pour le contenu textuel.


=== L'élément textuel de base : ITEXT ===
== L'élément textuel de base : ITEXT ==


Le texte apparaît à l'intérieur d'un <PAGEOBJECT>.
Le texte apparaît à l'intérieur d'un <PAGEOBJECT>, en valeur de l'attribut CH (pour "CHAINE" ?).


Basiquement, sans styles, c'est juste ça :             
Basiquement, sans styles, c'est juste ça :             
<ITEXT CH="Ici votre texte"/>
<ITEXT CH="Ici votre texte"/>


Cette balise doit ensuite être suivie par une balise de "fin de paragraphe" <PARA/> ou par <trail/> si c'est la fin du cadre.
Cette balise doit ensuite être suivie par une balise de "fin de paragraphe" <PARA/> ou par <trail/> si c'est la fin du cadre (donc : juste avant le </PAGEOBJECT>).


S'il y a 2 paragraphes c'est donc :
S'il y a 2 paragraphes c'est donc :
<code>
<ITEXT CH="Ici un premier paragraphe"/>
<ITEXT CH="Ici un premier paragraphe"/>
<para/>
<para/>
<ITEXT CH="Ici le 2ème paragraphe"/>
<ITEXT CH="Ici le 2ème paragraphe"/>
<trail/>
<trail/>
</code>


Le <para/> contient l'indication du style de paragraphe des ITEXTs précédents:
La balise <para/> contient aussi l'indication du style de paragraphe du texte contenu dans les ITEXTs précédents:
<ITEXT CH="Ce texte en style paragraghe ParMonstyle"/>
 
<para PARENT="ParMonstyle"/>
<code> <ITEXT CH="Ce texte en style paragraghe ParMonstyle"/>
<para PARENT="ParMonstyle"/></code>


Un <trail/> est après tout le texte, juste avant le </PAGEOBJECT>, quand il n'y a pas de <para/> à la fin.
Si il y a des styles de caractères localement sur "Mon texte" en plus du style de paragraphe, ceux ci sont indiqués en attribut de la balise <ITEXT> :


Si il y a des styles de caractères localement sur "Mon texte" en plus du style de paragraphe :
<code>
<ITEXT CPARENT="ChaMonstylelocal" CH="Passerelle Eco"/>
<ITEXT CPARENT="ChaMonstylelocal" CH="Un petit texte stylé"/>
<ITEXT CH="et on continue par le style normal du paragraphe"/>
<ITEXT CH="et on continue par le style normal du paragraphe"/>
<para PARENT="ParMonstyle"/>
<para PARENT="ParMonstyle"/>
</code>


ou, avec une couleur :
ou, avec une couleur :
    <ITEXT FONT="Webdings Regular" FCOLOR="monrouge" CH="X"/>


=== Les caractères spéciaux ===
<code>    <ITEXT FONT="Webdings Regular" FCOLOR="monrouge" CH="X"/>
</code>
 
== Les caractères spéciaux ==


* les doubles quotes dans un texte doivent être échappées en &quot;  
* les doubles quotes dans un texte doivent être échappées en <code>& quot ;</code>
<ITEXT CH="Il a dit &quot;héhé&quot;"/>
sinon elles se confondent avec les " de définition des valeurs des attributs


* les < et les > sont échappés en &lt; et &gt; pour ne pas interférer avec les définition des balises
<code><ITEXT CH="Il a dit & quot ;héhé& quot ;"/></code>
 
sinon elles se confondent avec les " de définition des valeurs des attributs dans le XML SLA
 
* les < et les > sont échappés en <code>& lt ; et & gt ;</code> pour ne pas interférer avec les définition des balises dans le XML


* s'il y a un saut de ligne dans une valeur de chaine, il est lu et bien compris par Scribus,
* s'il y a un saut de ligne dans une valeur de chaine, il est lu et bien compris par Scribus,
Line 155: Line 163:
ou  <ITEXT FONT="Webdings Regular" CH=""/>
ou  <ITEXT FONT="Webdings Regular" CH=""/>
* les espaces sont des caractères unicodes spéciaux, qui existent ou
* les différents espaces cadratins, demi-cadratin, fine et ultrafine sont codés par le caractère unicode spécial qui leur est dédié, à l'intérieur de la chaine dont ils font partie, sauf l'espace insécable qui est spécifié par un tag propre à scribus :  <nbspace> qui interrompt la chaine et nécessite donc un 2eme tag <ITEXT> pour la suite.
n'existent pas dans la police utilisée, sauf l'espace insécable,
 
qui est spécifié par un tag dédié :
Exemple :
 
<code>
             <ITEXT CH="espace cadratin"/>
             <ITEXT CH="espace cadratin"/>
             <ITEXT CH="espace demicadratin"/>
             <ITEXT CH="espace demicadratin"/>
Line 165: Line 175:
             <ITEXT CH="espace fine"/>
             <ITEXT CH="espace fine"/>
             <ITEXT CH="espace ultrafine"/>
             <ITEXT CH="espace ultrafine"/>
</code>
Certaines polices contiennent une bonne définition pour toutes ces espaces, mais pas toutes, loin de là. Il faut tester avant.
Certaines polices contiennent une bonne définition pour toutes ces espaces, mais pas toutes, loin de là. Il faut tester avant.

Latest revision as of 17:30, 8 February 2014

Format XML des fichiers SLA

Afin de générer des fichiers SLA dans un programme PHP, j'ai étudié le format SLA de Scribus. Voici les notes qui m'ont permis d'aboutir au résultat voulu. Elles ne portent que sur les éléments qui m'ont été utiles pour ce projet, et ne prétend aucunement à l'exhaustivité. La page File_Format_Specification_for_Scribus_1.4 dresse la liste des balises et de leurs attributs, mais il n'y a aucune explication.

Le format XML de Scribus est assez clair à comprendre et cette étude s'est faite assez simplement par 'rétro engineering'. Les balises XML ont des noms parfois opaques, mais les attributs ont des dénominations plus intuitives, même s'il y a quelques faux amis, et même s'ils sont parfois en anglais et parfois en allemand. A partir d'un fichier modèle fait avec SCRIBUS il est possible de voir les parties intéressantes, d'y faire des modifs et de vérifier le résultat dans Scribus.

Attention : les noms des tags et des attribus sont sensibles à la casse. Parfois ils sont en majuscules, parfois ils sont en CamelCase, il faut respecter cela, donc soyez vigilants.

Balise DOCUMENT

Après une entête <?xml version="1.0" encoding="UTF-8"?>, un fichier SLA se compose d'une balise <DOCUMENT...> qui comprend

  • la définition de l'environnement (préférences, styles et autres éléments)
  • le contenu lui même.

Dans le cas d'un format A5, ça donne : <DOCUMENT ANZPAGES="5" PAGEWIDTH="419.527559055118" PAGEHEIGHT="595.275590551181" BORDERLEFT="28.3464566929134" BORDERRIGHT="28.3464566929134" BORDERTOP="34.0157480314961" BORDERBOTTOM="42.5196850393701" PRESET="0" BleedTop="0" BleedLeft="0" BleedRight="0" BleedBottom="0" ORIENTATION="0" PAGESIZE="A5" FIRSTNUM="1" BOOK="1" AUTOSPALTEN="1" ABSTSPALTEN="11" UNITS="4" DFONT="Arial Regular" DSIZE="12" DCOL="1" DGAP="0" TabFill="" TabWidth="36" AUTHOR="" COMMENTS="" KEYWORDS="" PUBLISHER="" DOCDATE="" DOCTYPE="" DOCFORMAT="" DOCIDENT="" DOCSOURCE="" DOCLANGINFO="" DOCRELATION="" DOCCOVER="" DOCRIGHTS="" DOCCONTRIB="" TITLE="" SUBJECT="" VHOCH="33" VHOCHSC="66" VTIEF="33" VTIEFSC="66" VKAPIT="75" BASEGRID="14.4" BASEO="0" AUTOL="20" UnderlinePos="-1" UnderlineWidth="-1" StrikeThruPos="-1" StrikeThruWidth="-1" GROUPC="1" HCMS="0" DPSo="0" DPSFo="0" DPuse="0" DPgam="0" DPbla="1" DPMo="sRGB IEC61966-2.1" DPPr="Fogra27L CMYK Coated Press" DPIn="sRGB IEC61966-2.1" DPInCMYK="Fogra27L CMYK Coated Press" DPIn2="sRGB IEC61966-2.1" DPIn3="Fogra27L CMYK Coated Press" DISc="1" DIIm="0" ALAYER="0" LANGUAGE="French" MINWORDLEN="3" HYCOUNT="2" AUTOMATIC="1" AUTOCHECK="0" GUIDELOCK="0" SnapToGuides="0" SnapToGrid="0" MINGRID="20.0012598425197" MAJGRID="100.00062992126" SHOWGRID="0" SHOWGUIDES="1" showcolborders="1" SHOWFRAME="1" SHOWLAYERM="0" SHOWMARGIN="1" SHOWBASE="0" SHOWPICT="1" SHOWControl="0" SHOWLINK="1" rulerMode="1" showrulers="1" showBleed="1" rulerXoffset="0" rulerYoffset="0" GuideRad="10" GRAB="4" POLYC="4" POLYF="0.707106781186548" POLYR="0" POLYCUR="0" POLYFD="0" POLYS="0" AutoSave="1" AutoSaveTime="600000" ScratchBottom="20.0012598425197" ScratchLeft="100.00062992126" ScratchRight="100.00062992126" ScratchTop="20.0012598425197" GapHorizontal="0" GapVertical="39.9996850393701" StartArrow="0" EndArrow="0" PEN="Black" BRUSH="None" PENLINE="Black" PENTEXT="Black" StrokeText="Black" TextBackGround="None" TextLineColor="None" TextBackGroundShade="100" TextLineShade="100" TextPenShade="100" TextStrokeShade="100" STIL="1" STILLINE="1" WIDTH="1" WIDTHLINE="1" PENSHADE="100" LINESHADE="100" BRUSHSHADE="100" MAGMIN="10" MAGMAX="3200" MAGSTEP="200" CPICT="None" PICTSHADE="100" PICTSCX="1" PICTSCY="1" PSCALE="1" PASPECT="1" EmbeddedPath="0" HalfRes="1" dispX="0.0124" dispY="0.0124" constrain="15" MINORC="#00ff00" MAJORC="#00ff00" GuideC="#000080" BaseC="#c0c0c0" GuideZ="10" BACKG="1" PAGEC="#ffffff" MARGC="#0000ff" RANDF="0" currentProfile="PostScript">

C'est effrayant mais en fait il n'y a à comprendre que ce dont on a besoin, qu'il est facile de trouver et d'adapter aux besoins. Par exemple, pour un document d'un autre format que le A5, les dimensions PAGEWIDTH et PAGEHEIGHT seront différentes.

SHOWLINK="1" demande de montrer dans scribus les liens entre linked frames (0 sinon). C'est très pratique pour élaborer la structure du document.

LANGUAGE="French" sert probablement pour les césures et pour le correcteur orthographique lorsqu'il marche.

Environnement

L'environnement comporte les valeurs des préférences. Je n'ai travaillé que sur les styles et les couleurs, que je détaille un peu ici. Le reste peut être recopié telquel à partir d'un fichier modèle.

Définition des styles

Ici : définition du style de paragraphe par défaut, d'un style de paragraphe "ParMonstyle" et d'un style de caractère "ChaMonstyle".

<STYLE NAME="Default Paragraph Style" DefaultStyle="1" ALIGN="0" LINESPMode="0" LINESP="9" INDENT="0" RMARGIN="0" FIRST="0" VOR="0" NACH="0" DROP="0" DROPLIN="2" DROPDIST="0"/> <STYLE NAME="ParMonstyle" ALIGN="3" LINESP="8.5" INDENT="11.3385826771654" FIRST="0" VOR="0" CPARENT="ChaMonstyle"/> <CHARSTYLE CNAME="Default Character Style" DefaultStyle="1" FONT="Arial Regular" FONTSIZE="12" FEATURES="inherit" FCOLOR="Black" FSHADE="100" SCOLOR="Black" SSHADE="100" TXTSHX="5" TXTSHY="-5" TXTOUT="1" TXTULP="-0.1" TXTULW="-0.1" TXTSTP="-0.1" TXTSTW="-0.1" SCALEH="100" SCALEV="100" BASEO="0" KERN="0" LANGUAGE="French"/> <CHARSTYLE CNAME="ChaMonstyle" FONT="DejaVu Serif Condensed" FONTSIZE="8" wordTrack="0.9" LANGUAGE="French"/>

ANAME c'est le nom du style.

Pour les styles de paragraphes

CPARENT indique le style de caractère sur lequel est basé le style de paragraphe.

Le champ ALIGN vaut : 0 pour un alignement à gauche, 1 pour centré 2 pour aligné à droite 3 pour justifié 4 pour justification totale (yc dernière ligne incomplète)

Le champ VOR vaut l'espace avant un paragraphe et le champ NACH vaut l'espace après.

Couleurs

Les couleurs peuvent être en RGB ou en CMJN

en RGB <COLOR NAME="Green" RGB="#00ff00" Spot="0" Register="0"/>

en CMJN <COLOR NAME="couldept01" CMYK="#789abc00" Spot="0" Register="0"/>

Autres définitions de l'environnement

Les autres éléments de l'environnement sont

  • la définition des différents profiles PDFS : <CheckProfile Name="PDF 1.3"...>
  • l'imprimante <Printer.../>
  • les paramètres PDF <PDF.../>
  • les paramétrages de césure <HYPHEN .../>
  • les gabarits <MASTERPAGE.../>
  • le bloc des sections <sections/> contenant la définition de chaque section <section.../>

et quelques autres structures.

Contenu

Le contenu c'est ce qui se voit : les pages qui sont le support du contenu et le contenu lui-même : cadres contenant et texte contenu des cadres.

Les pages PAGE

Les pages sont définies par des objets <PAGE>

<PAGE PAGEXPOS="519.5" PAGEYPOS="18442.9924" PAGEWIDTH="419.527559055118" PAGEHEIGHT="595.275590551181" BORDERLEFT="28.3464566929134" BORDERRIGHT="28.3464566929134" BORDERTOP="34.0157480314961" BORDERBOTTOM="42.5196850393701" NUM="59" NAM="" MNAM="Normal" Size="A5" Orientation="0" LEFT="0" PRESET="0" VerticalGuides="" HorizontalGuides="" AGhorizontalAutoGap="0" AGverticalAutoGap="0" AGhorizontalAutoCount="0" AGverticalAutoCount="0" AGhorizontalAutoRefer="0" AGverticalAutoRefer="0" AGSelection="0 0 0 0"/>

La structure <PAGE...> contient : - leur positionnement PAGEXPOS et PAGEYPOS dans un même espace absolu contenant toutes les pages - leurs dimensions PAGEHEIGHT et PAGEWIDTH. - les marges - leur numéro : NUM etc

Dans l'exemple donné, vu la valeur de PAGEXPOS = 519, c'est une page de droite, et vu que c'est la page NUM=59 la valeur de PAGEYPOS=18442 est très grande.

Les pages sont séparées par un espace à l'écran paramétrable qui compte aussi pour PAGEYPOS.

Les cadres (frames) : PAGEOBJECTS

<PAGEOBJECT OwnPage="0" PTYPE="4" XPOS="535" YPOS="54" WIDTH="375.874" HEIGHT="519" RADRECT="0" FRTYPE="0" CLIPEDIT="1" PWIDTH="1" PCOLOR="None" PCOLOR2="None" COLUMNS="2" COLGAP="8.5039" NAMEDLST="" SHADE="100" SHADE2="100" GRTYP="0" ROT="0" PLINEART="1" PLINEEND="0" PLINEJOIN="0" LOCALSCX="1" LOCALSCY="1" LOCALX="0" LOCALY="0" PICART="1" PLTSHOW="0" BASEOF="0" textPathType="0" textPathFlipped="0" FLIPPEDH="0" FLIPPEDV="0" SCALETYPE="1" RATIO="1" PRINTABLE="1" ANNOTATION="0" ANNAME="frame0" TEXTFLOWMODE="0" TEXTFLOW="0" TEXTFLOW2="0" TEXTFLOW3="0" AUTOTEXT="0" EXTRA="0" TEXTRA="0" BEXTRA="0" REXTRA="0" FLOP="0" PFILE="" PFILE2="" PFILE3="" PRFILE="" EPROF="" IRENDER="1" EMBEDDED="1" LOCK="0" LOCKR="0" REVERS="0" TransValue="0" TransValueS="0" TransBlend="0" TransBlendS="0" isTableItem="0" TopLine="0" LeftLine="0" RightLine="0" BottomLine="0" isGroupControl="0" NUMDASH="0" DASHS="" DASHOFF="0" NUMPO="16" POCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMCO="16" COCOOR="0 0 0 0 375.908 0 375.908 0 375.908 0 375.908 0 375.908 518.972 375.908 518.972 375.908 518.972 375.908 518.972 0 518.972 0 518.972 0 518.972 0 518.972 0 0 0 0 " NUMGROUP="0" GROUPS="" startArrowIndex="0" endArrowIndex="0" OnMasterPage="" ImageClip="" ImageRes="1" Pagenumber="0" isInline="0" fillRule="1" doOverprint="0" gXpos="0" gYpos="0.0282114473731099" gWidth="782.276340162126" gHeight="519" LAYER="0" BOOKMARK="0" NEXTITEM="1" BACKITEM="-1"> ...(contenu du cadre) ... </PAGEOBJECT>

  • ANNAME contient le nom du frame visible dans la palette
  • OWNPAGE contient le n° de l'item (doit commencer à 0 sinon plantage de scribus). Attention, ownpage peut valoir autre chose que la page courante lorsque cette notion n'est pas pertinente : dans le cas d'un frame à cheval sur plusieurs pages, dans un groupe d'objets ou pour les frames inline notemment. Dans ces derniers cas, ownframe vaut -1.
  • NEXTITEM contient le n° de l'item linké suivant (qui doit exister sinon plantage) ou -1 sinon
  • BACKITEM contient le n° de l'item linké précédent (qui doit exister sinon plantage) ou -1 sinon
  • XPOS, YPOS : coordonnées absolues depuis le haut gauche de l'espace de la 1ère planche (planche 0 de l'item 0)
  • PTYPE : type de cadre. PTYPE="4" indique un cadre de texte. Cette doc ne présente que les text frames.

Attention : Les cadres PAGEOBJECT sont définis au premier niveau de la balise <DOCUMENT>, au même niveau que les <PAGE> donc, et non à l'intérieur d'une PAGE. En effet un cadre peut être à cheval sur plusieurs pages. Le DOCUMENT contient donc tous ces éléments "en vrac", c'est les XPOS et YPOS qui indiquent leur positionnement.

A l'intérieur d'un cadre PAGEOBJECT, tout le contenu est défini par des <BALISEs> et notamment par des <ITEXT ...> pour le contenu textuel.

L'élément textuel de base : ITEXT

Le texte apparaît à l'intérieur d'un <PAGEOBJECT>, en valeur de l'attribut CH (pour "CHAINE" ?).

Basiquement, sans styles, c'est juste ça : <ITEXT CH="Ici votre texte"/>

Cette balise doit ensuite être suivie par une balise de "fin de paragraphe" <PARA/> ou par <trail/> si c'est la fin du cadre (donc : juste avant le </PAGEOBJECT>).

S'il y a 2 paragraphes c'est donc :

<ITEXT CH="Ici un premier paragraphe"/> <para/> <ITEXT CH="Ici le 2ème paragraphe"/> <trail/>

La balise <para/> contient aussi l'indication du style de paragraphe du texte contenu dans les ITEXTs précédents:

<ITEXT CH="Ce texte en style paragraghe ParMonstyle"/> <para PARENT="ParMonstyle"/>

Si il y a des styles de caractères localement sur "Mon texte" en plus du style de paragraphe, ceux ci sont indiqués en attribut de la balise <ITEXT> :

<ITEXT CPARENT="ChaMonstylelocal" CH="Un petit texte stylé"/> <ITEXT CH="et on continue par le style normal du paragraphe"/> <para PARENT="ParMonstyle"/>

ou, avec une couleur :

<ITEXT FONT="Webdings Regular" FCOLOR="monrouge" CH="X"/>

Les caractères spéciaux

  • les doubles quotes dans un texte doivent être échappées en & quot ;

<ITEXT CH="Il a dit & quot ;héhé& quot ;"/>

sinon elles se confondent avec les " de définition des valeurs des attributs dans le XML SLA

  • les < et les > sont échappés en & lt ; et & gt ; pour ne pas interférer avec les définition des balises dans le XML
  • s'il y a un saut de ligne dans une valeur de chaine, il est lu et bien compris par Scribus,

mais c'est sauvegardé ensuite comme un saut de paragraphe (nouveau <para/>)

  • S'il y a des caractères genre dingbats, ils sont insérés directement,

sans décodage. Quand on lit le SLA avec un éditeur de code (ou dans ce wiki), c'est affiché dans la fonte par défaut de l'éditeur, qui parfois affiche le même glyphe, mais pas toujours. <ITEXT FONT="Liberation Mono Regular" CH="►●☻"/> ou <ITEXT FONT="Webdings Regular" CH=""/>

  • les différents espaces cadratins, demi-cadratin, fine et ultrafine sont codés par le caractère unicode spécial qui leur est dédié, à l'intérieur de la chaine dont ils font partie, sauf l'espace insécable qui est spécifié par un tag propre à scribus : <nbspace> qui interrompt la chaine et nécessite donc un 2eme tag <ITEXT> pour la suite.

Exemple :

           <ITEXT CH="espace cadratin"/>
           <ITEXT CH="espace demicadratin"/>
           <ITEXT CH="espace"/>
           <nbspace/>
           <ITEXT CH="insécable"/>
           <ITEXT CH="espace fine"/>
           <ITEXT CH="espace ultrafine"/>

Certaines polices contiennent une bonne définition pour toutes ces espaces, mais pas toutes, loin de là. Il faut tester avant.