Outils pour utilisateurs

Outils du site


issue131:inkscape

Continuing from last month’s introduction to extensions in Inkscape, this time I want to point out a few little utility extensions that can make some seemingly minor tasks a whole lot easier to achieve than would be possible with Inkscape’s native tools. Starting at the top of the menu, we find Arrange > Deep Ungroup. As its name suggests, it ungroups any grouped objects it finds, with the “deep” part indicating that it then continues down, ungrouping any groups that were nested inside those groups, then any groups within groups within groups – and so on, until every group in your document has been expanded back to its constituent objects. It can be particularly useful when importing SVG files from other programs, some of which nest groups to such an extent that it becomes difficult to edit the content with Inkscape.

Poursuivant notre introduction aux extensions d'Inkscape commencée le mois dernier, je veux cette fois-ci mettre en avant quelques extensions utilitaires qui peuvent rendre des tâches apparemment mineures bien plus facile à faire qu'avec les outils natifs d'Inkscape.

Dans le menu, nous trouvons Organiser > Dégrouper récursivement. Comme son nom le suggère, elle dégroupe tous objets groupés qu'elle trouve, le vocable « récursivement » indiquant qu'elle poursuit dans les niveaux inférieurs, dégroupant tous les groupes qui étaient imbriqués dans ces groupes, puis tous les groupes imbriqués dans les groupes à l'intérieur des groupes, et ainsi de suite, jusqu'à ce que tous les groupes de votre document aient été dégroupés en objets individuels. Elle peut être particulièrement utile quand vous importez des fichiers SVG venant d'autres programmes, dont certains imbriquent des groupes à un point tel qu'il devient difficile de modifier le contenu dans Inkscape.

Most of the time, the default options in this extension are fine. With nothing selected on the canvas, it will ungroup everything across all layers, no matter how deep (well… up to 65535 levels deep, which may as well be infinite in SVG terms). Be warned, however, that this will even remove any layers you have (since layers are just groups with extra attributes). You can limit its effect by selecting specific groups to operate on before running the extension. Whilst selecting specific groups lets you restrict the “breadth” of the changes, changing the values in the dialog lets you adjust the depth of nesting that will be affected. To demonstrate, I’ve put a single object inside a group, which is inside a group, which is inside a group… to 10 levels of nesting. The structure in Inkscape can be seen using the Object > Objects dialog (see part 63 of this series):

La plupart du temps, les options par défaut de ces extensions sont bonnes. Quand rien n'est sélectionné sur le canevas, elle dégroupera tout sur tous les calques, quel qu’en soit le niveau (en fait, jusqu'à 65 535 niveaux de profondeur, qui ressemble à l'infini en termes SVG). Cependant, faites attention, car cela supprimera tous les calques (car les calques sont des groupes avec des attributs supplémentaires). Vous pouvez limiter cet effet en sélectionnant des groupes particuliers à traiter, avant de lancer l'extension.

Alors que la sélection de groupes spécifiques vous permet de restreindre l'« étendue » des modifications, la modification des valeurs du dialogue vous permet d'ajuster la profondeur d'imbrication qui sera touchée. Comme démonstration, j'ai mis un objet unique dans un groupe, qui est à l'intérieur d'un groupe, dans un groupe, qui est dans un groupe… jusqu'à dix niveaux d'imbrication. Dans Inkscape, la structure peut être vue en utilisant le dialogue d'Objet > Objets (voir la partie 63 de cet article).

Using the default values, with nothing selected, breaks my path out of its deeply nested jail, and throws away the layer to boot. Better to select the topmost group, which breaks the path out whilst still leaving the layer intact: Change the Starting Depth parameter to 2, however, and the first two levels of grouping are left intact: With the starting depth back at 0, but the Stopping Depth at 5, I get this (note that it’s actually removed 6 levels of grouping as this figure appears to use “programmer’s numbering” where the count actually starts at zero):

L'utilisation des valeurs par défaut, sans rien de sélectionné, libère tout mon ensemble de sa prison profondément imbriquée et supprime le calque en plus. Mieux vaut sélectionner le groupe de plus haut niveau, car ainsi la structure est détruite tout en conservant le calque :

Cependant, mettez 2 dans le paramètre Profondeur de départ et les deux premiers niveaux de profondeur seront conservés :

Avec la profondeur de départ remise à 0, mais la Profondeur d'arrêt mise à 5, j'obtiens ceci (notez qu'elle a supprimé en fait 6 niveaux de regroupement car cette valeur semble utiliser la « numérotation du programmeur » dont le compte commence à 0) :

Exactly the same result can be achieved by setting the Stopping Depth back to 65535, and setting the Depth to Keep to 3. The difference is whether you want to start at the outermost group and count the levels down, or start at the innermost group and count up. I advise setting only one of these fields, leaving the other at 65535 (Stopping Depth) or 0 (Depth to Keep), as it’s not clear how they interact with each other. You can, however, combine one of these fields with the Starting Depth to keep the top few groups and the deepest groups, whilst chopping out all the ones in the middle. This can be useful when a file contains a lot of redundant nesting and you want to simplify it down without losing too much structure. For example, with the Starting Depth at 2 and the Depth to Keep at 3, my file ends up like this:

On obtient exactement le même résultat en réglant la Profondeur d'arrêt à nouveau à 65 535 et la profondeur à conserver à 3. La différence vient de votre choix, soit de démarrer par le groupe le plus haut et compter les niveaux vers le bas, soit de commencer avec le groupe le plus profond et compter en remontant. Je conseille de ne régler qu'un seul champ, en laissant l'autre à 65 535 (Profondeur d'arrêt) ou 0 (Profondeur à conserver), car leur interaction n'est pas claire. Cependant, vous pouvez combiner un de ces champs avec la Profondeur de départ pour garder les premiers groupes du haut et les plus profonds, tout en éliminant ceux du milieu. Ceci peut être utile quand un fichier contient beaucoup de groupes enfouis redondants et que vous voulez le simplifier sans trop perdre la structure. Par exemple, avec la profondeur de départ à 2 et la profondeur à conserver à 3, mon fichier devient :

Having removed all the groups in your document, you may now be faced with a whole load of individual objects that aren’t necessarily arranged the way you want them to be. Their position on the canvas should still be the same as it was when they were grouped, but their position in the z-stack could be all over the place. Much of the time this won’t matter, but, when objects overlap, or you need to use them in Boolean operations, the z-order can matter immensely. That’s where the Arrange > Restack extension comes into its own.

En ayant supprimé tous les groupes de votre document, vous pourriez vous trouver confronté à tout un tas d'objets individuels qui ne sont pas forcément arrangés de la manière que vous souhaiteriez. Leur position sur le canevas serait bien la même que quand ils étaient groupés, mais leur empilement sur l'axe z pourrait être chamboulé. La plupart du temps, ça n'a pas d'importance, mais, quand les objets se chevauchent, ou que vous avez besoin de les utiliser dans des opérations booléennes, leur ordre sur z peut avoir une grande importance. C'est ici que l'extension Organiser > Réempiler prend tout son sens.

In normal operation, this extension changes the z-index on each element based on its coordinates. With the settings shown here, for example, the object whose top left corner (the Object Reference Point) is furthest to the left will be moved to the bottom of the stack, with each subsequent object from left to right being placed on top, until the object whose top left corner is furthest to the right is placed on the top. Changing the Restack Direction popup lets you change that left to right ordering so that the stacking runs from right to left, top to bottom, or bottom to top. If none of those suit, you can use the Custom tab to choose an angle that works with your design. For restacking objects that are more circularly arranged, there are even options for Radial Outward and Radial Inward. In short, this extension lets you trivially achieve this:

Dans une opération normale, cette extension change l'index z de chaque élément en fonction de ses coordonnées. Avec les réglages présentés ici, par exemple, l'objet dont le coin en haut à gauche (Point de référence de l'objet) est le plus éloigné vers la gauche sera déplacé en bas de la pile et chaque objet suivant de la gauche vers la droite sera placé par dessus, jusqu'à l'objet dont le coin en haut à gauche est le plus éloigné vers la droite sera placé sur le dessus. Un changement du choix du Sens d'empilement vous fera passer d'un ordonnancement de gauche à droite à un empilement de droite à gauche, de haut en bas, ou de bas en haut. Si aucun de ceux-ci ne vous convient, vous pouvez utiliser l'onglet Personnaliser pour choisir un angle qui fonctionne avec votre dessin. Pour réempiler des objets qui sont plutôt dans un arrangement circulaire, les options Radial vers l'extérieur et Radial vers l'intérieur sont prévus. En résumé, cette extension vous permet de réaliser ceci simplement :

If your objects are already stacked in a sensible order, there are really only two things you might want to do with them: reverse the order, or randomise it. Both of these operations are also available in this extension, by switching to the “Based on Z-Order” tab. The Modify Path or Visualise Path submenus seems like good places to look for useful utilities, but so useful are the tools in them that many have been re-implemented as Live Path Effects in recent releases, and it’s usually best to use the LPE versions. Don’t forget you can use ‘Path’ > ‘Object to Path’ to “set” the results if you don’t want them to be “live”. For example, you can find both Envelope and Perspective extensions in the Modify Path submenu, each of which requires a source path to distort, and a four-node guide path to distort into. But they have different ideas about the order of the nodes in the guide path, and whilst Envelope will happily distort a group of paths, Perspective won’t, requiring you to ungroup and union the paths into a single object first. Far better to use the Perspective/Envelope LPE which avoids all these problems, and has the advantage of being able to interactively adjust the guide path.

Si vos objets sont déjà empilés dans un ordre logique, il n'y a vraiment que deux choses que vous pouvez vouloir faire avec eux : inverser leur ordre, ou le rendre aléatoire. Ces deux opérations sont aussi disponibles dans cette extension, en passant dans l'onglet « Basé sur l'ordre d'empilement ».

Les sous-menus Modifier le chemin et Visualisation du chemin semblent être les bons endroits pour chercher des services utiles, mais les outils inclus sont si utiles que beaucoup ont été ré-implémentés en Effets de chemin dynamiques (LPE) dans les dernières publications ; et il est largement préférable d'utiliser les versions des LPE. N'oubliez pas que vous pouvez utiliser « Chemin » > « Objet en chemin » pour paramétrer les résultats si vous ne voulez pas qu'ils soient « en direct ». Par exemple, vous pouvez trouver les deux extensions Enveloppe et Perspective dans le sous-menu Modifier le chemin, chacune d'elle nécessitant un chemin source à distordre et un chemin guide à quatre nœuds pour le faire. Mais leurs idées concernant l'ordre des nœuds dans le chemin guide diffèrent et, alors que Enveloppe distordra avec bonheur un groupe de chemins, Perspective ne le fera pas, vous imposant d'abord de dégrouper et d'unir les chemins en un objet unique. Il est de loin préférable d'utiliser les LPE Perspective/Enveloppe qui évitent tous ces problèmes et ont l'avantage d'être capables d'ajuster interactivement le chemin guide.

Although Scribus makes for a far better desktop publishing program, Inskcape is sometimes put to use for producing flyers or leaflets – and maybe even the occasional newsletter (although the lack of multi-page support would seem to limit its usefulness in that regard). It can also be a handy tool for mocking up a website layout. One thing that unites all these tasks is the need to lay out sections of text, either as real content itself, or as a placeholder to indicate where the real content will go. The Text submenu offers a few extensions that may help. For placeholder text, it’s hard to beat the classic “lorem ipsum” prose – a passage of nonsensical Latin that has traditionally been used for this purpose. You could go online to one of the many lorem ipsum generators, then copy and paste the text into Inkscape, or you could just use the Text > Lorem Ipsum extension. A word of caution though: this extension produces flowed text, which makes it great for mocking up a website, but no good for actually putting online. Use the ‘Text’ > ‘Convert to Text’ menu option to fix it as normal, non-flowed text (see part 10 for more details).

Bien que Scribus soit un bien meilleur programme de publication par ordinateur (PAO), Inkscape est parfois mis à profit pour produire des prospectus et des dépliants, et parfois peut-être d'occasionnelles lettres d'information (bien que l'absence de support du multi-page semblerait limiter son intérêt dans ce cas). Il peut aussi être un outil pratique pour maquetter la disposition d'un site Web. Une chose qui réunit toutes ces tâches est le besoin de positionner des sections de texte, que ce soit comme contenu réel, ou comme réserve, pour indiquer où le contenu réel ira. Le sous-menu Texte offre quelques extensions qui peuvent aider.

Pour la réserve de texte, il est difficile de battre la classique prose « lorem ipsum » - un passage de latin sans aucun sens qui est utilisé traditionnellement à cette fin. Vous pouvez aller sur Internet pour trouver l'un des nombreux générateurs de lorem ipsum, puis copier/coller le texte dans Inkscape, ou seulement utiliser l'extension Texte > Lorem ipsum. Un mot d'avertissement cependant : cette extension produit un texte étendu, qui le rend bon pour maquetter un site Web, mais mauvais pour le mettre réellement en ligne. Utilisez l'option de menu « Texte » > « Convertir en texte » pour le remettre en texte normal, non étendu (voir la partie 10 pour plus de détails).

Perhaps the most useful utilities in this submenu are those for dealing with small amounts of text that are already in a document. If you have several pieces of text that you want to use in another program, rather than editing each of them to copy the content to the clipboard one-by-one, the Text > Extract extension offers a means to pull out any text it finds in the page or selection, then present it to you concatenated into a single block of ASCII text in a dialog. From there you can easily copy and paste the entire text as one. Conversely you might want to join several smaller pieces of text into a single object within Inkscape. This can be the case when importing a document from another program, as sometimes lines of a paragraph are stored as separate text elements in the SVG file. It seems to be a particular issue with PDF files. In this case, select all the text that should be joined and use Text > Merge. In almost all cases the standard settings are fine, and it will result in your text being duplicated as a single block at the top left corner of the document for you to then adjust and position as you see fit.

Les services peut-être les plus utiles de ce sous-menu sont ceux qui traitent des petites quantités de texte déjà présentes dans un document. Si vous avez plusieurs morceaux de texte que vous voulez utiliser dans un autre programme, plutôt que les éditer individuellement pour les copier un par un dans le presse-papier, l'extension Texte > Extraire offre un moyen d'extraire tous les textes qu'elle trouve dans la page ou la sélection, puis de vous les présenter concaténés en un seul bloc de texte ASCII dans un dialogue. De là, vous pouvez facilement copier/coller tout le texte d'un seul coup.

Inversement, vous pourriez vouloir regrouper plusieurs petits morceaux de texte en un seul objet dans Inkscape. Ce peut être le cas lors de l'importation d'un document depuis un autre programme, car parfois les lignes d'un paragraphe sont enregistrées en éléments séparés dans le fichier SVG. Ça semble être particulièrement un problème avec les fichiers PDF. Dans ce cas, sélectionnez tout le texte qui est à regrouper et utilisez Texte > Fusionner. Dans presque tous les cas, les réglages standard conviennent et il en résultera une duplication de votre texte comme bloc unique en haut à gauche de votre document que vous pourrez ajuster et positionner comme vous le souhaitez.

The counterpoint to Merge is ‘Text’ > ‘Split Text’. This allows you to break a single text object into several separate objects, splitting by line break, word break, or even into individual characters. The styling and positioning of the text will often be lost in the process, though. One use I’ve had for this in the past is to split a too-long speech bubble in a cartoon into separate lines; they can then be rearranged to fit over two or three individual bubbles, and Text > Merge used to turn each group of lines back into a single text object. As well as not being a great DTP program, Inkscape is also a pretty poor choice for dealing with raster images (also known as bitmap images, though that term should not be confused with the image format of the same name that is common in the Windows world). Still, people persist in doing so, so I’ll finish this month with a quick look at the extensions that might help if you really want to go down that route.

Le contraire de Fusionner est « Texte » > « Diviser du texte ». Ceci vous permet de briser un objet texte unique en plusieurs objets séparés, le découpant par ligne, par mot ou même par caractère. Toutefois, le style et la position du texte seront souvent perdus dans le traitement. Je l'ai utilisé par le passé dans une bande dessinée pour éclater une trop longue bulle de dialogue en lignes séparées ; elles peuvent ensuite être arrangées pour tenir dans deux ou trois bulles séparées, et Texte > Fusionner est utilisé pour repasser chaque groupe de lignes en un unique objet texte.

De même qu'Inkscape n'est pas un super logiciel de PAO, il est plutôt pauvre aussi pour traiter des images matricielles (« raster », connues aussi comme des images bitmap, bien que ce terme ne doit pas être confondu avec le format d'image du même nom qui est commun dans le monde de Windows). Là encore, les gens persistent à le faire ; aussi, je terminerai ce mois-ci avec un aperçu des extensions qui peuvent aider si vous voulez vraiment poursuivre ce chemin.

As you may recall from part 15 of this series, when adding a raster image to Inkscape you have the choice to either embed it (in which case the raw bitmap data is included within your SVG file), or link to it (in which case the SVG contains the URL or path of the file). Embedding makes your SVG file more portable, at the expense of file size. Linking also has the advantage that edits made outside of Inkscape are automatically reflected in your document. One useful approach, therefore, is to link by default, but embed the final version of the image if you have to send your file to someone else. The Images > Embed Images extension will handle this for you. On the other hand, if you have a file with embedded images, the Images > Extract Image extension will save them to your hard drive and automatically replace the copy in your document with a link to the newly saved file. Note that it works with only one image at a time, and doesn’t complain if you have more than one selected, preferring to extract only the first one. If you subsequently need to move the saved files, you’ll see the following error image in Inkscape, in place of the missing file:

Comme vous pouvez vous souvenir de la partie 15, où, en ajoutant une image matricielle à Inkscape, vous aviez le choix, soit de l'incorporer (dans ce cas le bitmap brut est inclus dans votre ficher SVG), soit de la relier (dans ce cas, le fichier SVG contient l'URL ou le chemin du fichier). L'incorporation signifie que votre fichier SVG est plus portable, pour un poids de fichier plus élevé. La liaison a l'avantage que les modifications faites à l'extérieur d'Inkscape sont reflétées dans votre document. Ainsi, une approche utile est de relier par défaut mais d'incorporer la version finale de l'image, si vous devez envoyer votre fichier à quelqu'un d'autre. L'extension Images > Incorporer des images le fera pour vous.

En revanche, si vous avez un fichier avec des images incorporées, l'extension Images > Extraire des images les sauvegardera sur votre disque dur et remplacera automatiquement la copie dans votre document par un lien vers le fichier nouvellement sauvegardé. Notez que ça ne fonctionne que pour une seule image à la fois et que l'extension ne se plaint pas si vous en avez sélectionné plus d'une, préférant n'extraire que la première. Si, en conséquence, vous avez besoin de déplacer les fichiers sauvegardés, vous verrez l'image d'erreur suivante dans Inkscape, à la place du fichier manquant :

If you do see this, just right-click on it and select “Image Properties” in the context menu, then edit the path to match the new location of the file. In recent versions of Inkscape, you’ll also find that Embed Image and Extract Image have made their way to this context menu. It doesn’t matter whether you use those options or the extensions, the end result is the same. When dealing with raster images, you might be tempted by some of the options in the Raster submenu. My advice is to steer clear of these. They generally apply filters to your raster image (embedding it in the process, if it’s a linked image) – but these are not the editable SVG filters that you would find in Inkscape’s Filters menu. Instead, they are bitmap filters whose effect is to destructively change the pixels in your raster image. In that respect they’re no different to the result you would get if you just edited the image in an external program such as The GIMP, except that the range of filters available in a true raster editor vastly outweighs the paltry selection exposed as Inkscape extensions. Better to copy your original image to a new name, link it into Inkscape, then play around with the filters in a dedicated raster graphics program.

Si vous voyez ceci, il suffit de faire un clic droit dessus et sélectionner « Propriétés de l'image » dans le menu contextuel, puis modifiez le chemin pour correspondre au nouvel emplacement de votre fichier. Dans les récentes versions d'Inkscape, vous trouverez aussi que Incorporer une image et Extraire une image sont présents dans le menu contextuel. Il n'y a aucune importance si vous utilisez plutôt les extensions ; le résultat final est le même.

Quand vous avez à faire à des images matricielles, vous pourriez être tenté par certaines des options du sous-menu Images matricielles. Mon conseil est de les éviter complètement. Elles appliquent généralement des filtres à votre image matricielle (en l'incorporant pendant le traitement, si elle est reliée), mais ce ne sont pas des filtres SVG modifiables comme vous en trouveriez dans le menu Filtres d'Inkscape. À la place, ce sont des filtres bitmap dont l'effet est de modifier définitivement les pixels de votre image matricielle. Dans ce contexte, ils ne sont pas différents du résultat que vous obtiendriez si vous modifiiez l'image dans un programme externe tel que GIMP, sauf que l'étendue des filtres disponibles dans un vrai éditeur matriciel surclasse largement la misérable sélection exposée dans les extensions d'Inkscape. Mieux vaut copier l'image originale sous un autre nom, la relier à Inkscape, puis jouer avec les filtres dans un programme dédié aux images matricielles.

issue131/inkscape.txt · Dernière modification : 2018/04/12 18:05 de andre_domenech