Premiers pas avec le post-scriptum

Description générale de PostScript

PostScript est un langage de programmation général complet de Turing, conçu et développé par Adobe Systems. Bon nombre des idées qui ont fleuri dans PostScript avaient été cultivées dans des projets pour Xerox et Evans & Sutherland.

Sa principale application dans le monde réel est historiquement un * langage de description de page * ou, sous sa forme EPS à page unique, un langage de description d’images vectorielles. Il est typé dynamiquement, à portée dynamique et basé sur la pile, ce qui conduit à une syntaxe principalement polonaise inversée.

Il existe trois versions majeures de PostScript.

  1. PostScript Niveau 1 — cela a été lancé sur le marché en 1984 en tant que système d’exploitation résident de l’ imprimante laser Apple LaserWriter , inaugurant l’ère de la publication assistée par ordinateur.
  2. PostScript Niveau 2 — publié en 1991, il contenait plusieurs améliorations importantes au niveau 1, notamment la prise en charge de la décompression d’image, la séparation in-RIP, les dictionnaires à croissance automatique, la récupération de place, les ressources nommées, les encodages binaires du flux de programme PostScript lui-même.
  3. PostScript 3 — la version la plus récente et peut-être la plus largement adoptée a été publiée en 1997. Elle contient également plusieurs améliorations d’importation par rapport au niveau 2, telles que Smooth Shading. Le terme «niveau” a été abandonné.

Bien que PostScript soit généralement utilisé comme langage de description de page - et soit donc implémenté dans de nombreuses imprimantes pour générer des images tramées - il peut également être utilisé à d’autres fins. En tant que calculateur de polissage inverse rapide avec des noms d’opérateurs plus mémorables que “bc”. En tant que format de sortie généré par un autre programme (généralement dans une autre langue).

Bien que les fichiers PostScript soient généralement en ASCII 7 bits, il existe plusieurs types de codage binaire décrits dans la norme de niveau 2. Et étant programmable, un programme peut implémenter son propre schéma de codage arbitrairement complexe pour lui-même. Il existe un concours international de postscript obfusqué, un peu moins actif que celui du C.

Références en ligne

  • Résoudre les erreurs PostScript - Conseils de débogage. (158 Ko HTML)

  • Acumen Journal - Archive d’articles de programmation Postscript et PDF. (répertoire html des pdf compressés)

  • [Illustrations mathématiques : un manuel de géométrie et de post-scriptum] (http://www.math.ubc.ca/~cass/graphics/manual/) - par Bill Casselman. (répertoire html des chapitres pdf et des téléchargements de code)

  • [Thread avec de nombreuses implémentations d’algorithmes de tri] (https://groups.google.com/d/topic/comp.lang.postscript/p9gr6p-q3Gk/discussion) (archive Usenet)

  • Les [pages gourou] de Don Lancaster (http://www.tinaja.com/)

  • [Utilisation directe du langage Postscript] d’Anastigmatix (http://www.anastigmatix.net/postscript/direct.html)

  • Étape par étape open-source [Débogueur pour le code Postscript] (https://github.com/luser-dr00g/debug.ps)

FAQ

  • [FAQ Usenet (vers 1995)] (ftp://ftp.cs.brown.edu/pub/comp.lang.postscript/FAQ.txt)

  • [FAQ PostScript Wikibooks] (http://en.wikibooks.org/wiki/PostScript_FAQ)

  • [Questions SO PostScript triées par les plus fréquemment consultées] (http://stackoverflow.com/questions/tagged/postscript?sort=frequent)

Livres

  • Postscript Language Reference Manual, 1ed, 1985. Recommandé pour sa petite taille et son index d’opérateur facile à partir des pages de résumé (manquant dans les éditions ultérieures).

  • Post-scriptum du monde réel. Chapitres de divers auteurs sur divers sujets, y compris une excellente couverture des demi-teintes.

Exemple de Hello World

Sélectionnez une police et une taille de police, sélectionnez l’emplacement, la chaîne “afficher”.

%!PS
/Palatino-Roman 20 selectfont
300 400 moveto
(Hello, World!) show
showpage

Notes et pièges courants :

  • Échec de la définition d’une police (ce qui entraîne soit l’absence de texte, soit une police par défaut (laide))

  • Utiliser findfont et setfont mais en oubliant de scalefont entre les deux. L’utilisation de selectfont de niveau 2 évite ce problème et est plus concise.

  • Ne pas définir un point avec moveto, ou définir le point en dehors de la page. Pour le papier à lettres US 8,5x11 correspond à 792x612 points ps. Il est donc facile de se souvenir d’environ 800 x 600 (mais un peu plus court et plus large). Donc “300 400” est à peu près le centre de la page (un peu haut, un peu à gauche).

  • Oublier d’appeler showpage. Si vous prévisualisez un programme ps avec gs et qu’il ne se termine pas par showpage, gs peut afficher une image pour vous. Et pourtant, le fichier échouera mystérieusement à produire une sortie lorsque vous essayez de convertir en pdf ou autre chose.

Curriculum

Lisez la documentation dans cet ordre pour apprendre facilement le postscript :

  1. L’excellent tutoriel de Paul Bourke : http://paulbourke.net/dataformats/postscript/

  2. Blue Book, première moitié, le tutoriel officiel original : http://www-cdf.fnal.gov/offline/PostScript/BLUEBOOK.PDF

  3. Green Book, comment utiliser efficacement le postscript : http://www-cdf.fnal.gov/offline/PostScript/GREENBK.PDF

  4. Penser en Postscript, ’nuff a dit : http://wwwcdf.pd.infn.it/localdoc/tips.pdf

  5. Illustrations mathématiques. Commencez petit, construisez grand. Les mathématiques derrière les courbes de Bézier. Le découpage du polygone de Hodgman-Sutherland algorithme. Transformations affines et transformations non linéaires du chemin. Dessin 3D et ombrage de Gouraud. De la préface :

Lequel [des nombreux outils pour aider à produire des graphiques mathématiques] choisir implique apparemment un compromis entre simplicité et qualité, dans lequel la plupart optent pour ce qu’ils perçoivent comme étant la simplicité. La vérité est que le compromis est inutile - une fois que l’on a fait un petit effort initial, la meilleure chose à faire dans la plupart des situations est de loin d’écrire un programme dans le langage de programmation graphique PostScript. Il n’y a pratiquement aucune limite à la qualité de la sortie d’un programme PostScript, et à mesure que l’on acquiert de l’expérience, les difficultés d’utilisation du langage diminuent rapidement. L’apparente complexité impliquée dans la production de chiffres simples par programmation en PostScript, comme j’espère que ce livre le démontrera, est en grande partie une illusion. Et la quantité de travail impliquée dans la production de chiffres plus compliqués ne sera généralement ni plus ni moins que ce qui est nécessaire.

Installation ou configuration

Les interpréteurs Adobe PostScript authentiques sont disponibles dans les imprimantes haut de gamme, le produit Display PostScript (DPS) et le produit Acrobat Distiller. En tant qu’auteurs de la norme, ces produits sont considérés comme “l’implémentation standard” dans le but de décrire les différences entre les implémentations PostScript.

L’interface standard avec l’interpréteur définie dans le PLRM est le program-stream qui peut être soit textuel soit binaire selon les détails du canal sous-jacent ou du système d’exploitation/contrôleur. Acrobat Distiller dispose d’une interface graphique pour sélectionner le programme postscript d’entrée et rendre sa sortie au format pdf. Distiller a également une prise en charge limitée de l’utilisation du flux de texte de sortie pour signaler les erreurs et d’autres sorties de programme. GSView fournit une interface graphique similaire pour un flux de travail similaire utilisant Ghostscript comme interpréteur.

Ghostscript et Xpost fonctionnent tous les deux en mode ligne de commande. Le fichier de programme postscript à exécuter peut être mentionné sur la ligne de commande (gs program.ps ou xpost program.ps) qui ouvrira une fenêtre graphique pour afficher la sortie graphique. Des options peuvent être utilisées pour rendre les graphiques ailleurs comme un fichier disque ou supprimer entièrement les graphiques et utiliser le postscript comme un langage de script de texte.

Les différents interprètes ont chacun leurs propres instructions d’installation et de configuration et il serait inutile (et susceptible de tomber obsolète) de les reproduire ici.

Interprètes PostScript disponibles gratuitement

  • Ghostscript est disponible pour toutes les principales plates-formes et distributions Linux, sous forme source ou binaire, sous licence GNU ou sous d’autres accords de licence avec les auteurs, [logiciel Artifex](http: //ghostscript.com/Artifex_Software_Inc.html). Ghostscript implémente la norme PostScript 3 complète.

  • Xpost est disponible sous forme source pour toutes les principales plates-formes, sous la licence BSD-3-clause. Il implémente la norme de niveau 1 avec certaines extensions de niveau 2 et certaines extensions DPS.

Espaces de noms locaux pour les fonctions

Postscript est un langage d’espacement de noms dynamique ou LISP 1. Mais il fournit les outils pour implémenter des variables locales dans les procédures et d’autres effets nécessaires pour implémenter des algorithmes.

Pour les noms locaux dans une procédure, créez un nouveau dictionnaire au début et pop-le à la fin.

/myproc {
    10 dict begin
    %... useful code ...
    end
 } def

Vous pouvez également combiner cela avec un raccourci pour définir les arguments de la fonction en tant que variables.

% a b c  myproc  result
/myproc {
    10 dict begin
    {/c /b /a} {exch def} forall
    %... useful code yielding result ...
    end
 } def

Si vous avez besoin de mettre à jour une variable *“globale” * alors que le dictionnaire local est au premier plan, utilisez store au lieu de def.