cgiprint (1)      Convert a text into HTML     (Dec. 2011)


Syntax
cgiprint [–%letter] [–bib] [–cat] [–Dmacro=definition] [–f tag_file] [–glu] [–HELP] [–html] [–ic] [–keep[^_$~] [–lang language] [–lis] [–LIST] [–mail] [–n name] [–nomath] [–nooutput] [–oglu [–o output_program] [–pre] [–sec] [–tex] [–tex2] [–tag tag_prefix] [–v##] input_file...

Description
cgiprint est un filtre qui convertit un texte — ensemble de fichiers input_file ou stdin par défaut — en HTML, en générant des ancres ou des marques GLU (dans l'option –glu) à partir de certaines entités taggées de forme générique <nom_tag:valeur>, ou bien reconnues d'après le contexte.

Lorsque le nom de ce programme commence par Show, il peut être appelé pour des transformations directement par le démon httpd(1); un exemple typique est la conversion des Abstracts.

Un exemple d'entité taggée est <Uni:symbole_d'unité>, ou encore une marque GLU de type entité (<%type valeur>) ou action (<&action valeur>). Un BibCode, référence bibliographique formée de 19 caractères de forme YYYYJJJJJvvvvMppppA, peut typiquement être reconnu dans son contexte.

Le texte à convertir peut être sous format TeX (avec l'option –tex), sous un format TeX-light qui contient seulement quelques bases de TeX et est utilisé pour les Abstracts d'A&A (avec l'option –tex2), ou déjà en HTML (avec l'option –html, ou entre \begin{HTML} et \end{HTML}).

cgiprint permet également de substituer les variables d'environnement, soit par la macro TeX \env{...} (dans le contexte TeX), soit par l'utilisation du $ (dans le contexte html). A noter que, tout comme dans le shell, les accolades { } peuvent être utilisées pour ``coller'' des variables a un mot, par exemple ${var}1.

Usage
Toutes les définitions — sous quelle forme se trouve le texte d'entrée, quelles sont les macros TeX que peut contenir le texte, comment convertir les entités taggées en ancres HTML ou marques GLU, etc... — peuvent être incluses dans un fichier appelé tag_file, ou encore être au début du texte d'entrée s'il commence par \cgidef{

Options

–%lettre    demande de désactiver la reconnaissance automatique pour une ligne commençant par %-lettre. Par exemple, -%R permettra de ne pas générer d'ancre pour la ligne
%R 1996ApJS..123.1234A
lorsque la reconnaissance automatique des bibcodes est active.

–bib | -+bib    demande de reconnaître automatiquement les BibCodes dans le texte d'entrée, et de les transformer en ancres ou marques GLU (l'option -+bib supprime cette reconnaissance). Un bibCode, pour être reconnu, a besoin d'être sous sa forme canonique (19 caractères) et séparé des mots précédent et suivant par un blanc, une virgule, ou d'autres ponctuations non ambigues telles que parenthèses, crochets... Ces bibcodes sont automatiquement interprétes comme s'ils étaient écrits sous la forme d'entités taggées <Bib:bibcode> ou <%R bibcode> (–glu)

–cat | -+cat    demande de reconnaître les CatCodes — codes désignant des catalogues comme III/123, ou encore J/A+AS/112/234 (l'option -+cat supprime cette reconnaissance). Ces entités doivent toutefois être entre ``parenthèses angulaires'' <...>, ou bien encore entre crochets [...]. Ces CatCodes sont automatiquement interprétes comme s'ils étaient écrits sous la forme d'entités taggées <Cat:CatCode> ou <%E bibcode> (–glu)

–Dmacro=definition    permet d'ajouter des définitions de macros sur la ligne de commande. La définition doit être accolée à l'option –D, tout comme dans les définitions relatives au pré-processeur du compilateur C. A noter que le backslash \ peut être omis: par exemple -DmyURL=http://myhost et -D'\myURL=http://myhost' sont equivalents.

–f tag_file    représente un fichier qui contient les définitions. Voir ci-dessous la section tag_file pour les détails. Les définitions par défaut peuvent s'obtenir avec l'option –lis;

–HELP    donne une liste des options, ainsi que la liste des macros TeX reconnues.

–html | -+html    indique que le texte d'entrée contient déjà des ``tags'' HTML — par exemple des formes comme <B>texte gras</B> (l'option -+html supprime cette reconnaissance). La liste des ``tags'' acceptables sont donnés dans la tag_file (cf section tag_file), tandis que les ``tags'' non reconnus sont transformés littéralement: ainsi le texte
Recherche de quasars dans le domaine 2<z<3
sera-t-il correctement traduit en
Recherche de quasars dans le domaine 2&lt;z&lt;3

A noter: un ``tag'' HTML ne sera pas reconnu comme tel par défaut (cf section tag_file) si:

–ic    demande d'ignorer les commentaires; par défaut, les commentaires sont transformés en commentaires HTML — ce qui ne fait bien souvent qu'encombrer les réseaux...

–keep[^_$~%]    demande de considérer les caractères indiqués comme normaux, c.à.d. qu'ils n'ont pas vocation à démarrer le mode exposant, indice, mathématique, accent tilde, ou encore début de commentaire.

–lang    demande un langage (anglais ou français uniquement) pour les textes tel Contents ou Table des Matières Par défaut – comme toujours! – le défault est en (anglais).

–lis    génère, sous forme de commentaires HTML, une liste des définitions connues:

A noter que la macro \list{titre} génère également cette liste, lorsque l'option –tex est active. Cf option –LIST pour la liste actuelle des macros.

–LIST    donne une liste complète des macros TeX connues par défaut avec leur équivalence, sous forme d'un simple texte.

–mail    | -+mail demande de reconnaître les adresses électroniques qui sont sous la forme <adresse[?Subject=sujet]>, comme si elles avaient été écrites <Mail:e-mail_adresse> ou <%M e-mail> (–glu) (l'option -+mail supprime cette reconnaissance).
Note: les adresses électroniques sont crytpées; et le sujet du mail n'est pas édité dans le texte HTML.

–math^    demande d'interpréter les ^ (carret) comme des exponentiations, même en-dehors du mode mathématique (l'option -+math supprime cette interprétation).

–n name    est utile pour donner un nom au stream d'entrée dont le nom par défaut est (stdin). Cette option affecte le contenu de la macro \thefile.

–nomath    demande d'utiliser le fonte standard pour le mode mathématique (ce qui est entre $ ... $). Par défaut, le mode mathématique est écrit en italiques.

–nooutput    demande de ne pas éditer le résultat – jusqu'à la macro \enableoutput.

–oglu    demande de ``filtrer'' le texte généré par le programme /usr/local/bin/glufilter. Cette option implique également –glu.

–o programme    demande de ``filtrer'' le texte généré par le programme programme. Les options éventuelles de programme sont séparées par des esperluètes &. Typiquement, l'option –glu pourra être suivie de -o glu&-D&gluDic.
Note: lorsque l'option –sec est active, le programme doit impérativement se trouver dans le directory $HTTPD_HOME/bin ($HTTPD_HOME vaut /usr/httpd par défaut).

–pre    indique que le texte est déjà pré-formatté (les blancs et fins de lignes sont significatifs). Cette option encadre simplement le texte par les tags HTML <PRE> en début et </PRE> en fin (l'option -+pre supprime cette interprétation).

–sec    (secure) restreint l'accès aux fichiers commençant par la signature (``magic'') des 8 caractères \cgidef{. Tout fichier ayant une autre signature sera rejeté. De plus, les programmes exécutables dans l'option –o (cf ci-dessus) se trouvent obligatoirement dans un directory unique $HTTPD_HOME/bin.

–tex    indique que le texte est sous une forme TeX relativement élaborée — les accents, quelques définitions et environnement de base — dont les tables — sont connus et peuvent être définis (l'option -+tex supprime cette reconnaissance). Voir ci-dessous dans la section Définitions TeX les définitions connues par défaut.

–tex2    indique que le texte est sous une forme ``light-TeX'' utilisée pour les Abstracts: les crochets { }, %, $ gardent leur signification habituelle, les indices sont encadrés par des _ (underscore), les exposants par des ^ (carrets). Quelques autres écritures sont également reconnues comme +/- qui devient ±. L'option -+tex supprime cette reconnaissance.

–tag tag_prefix    précise le préfixe utilisé pour la conversion des entités taggées en ancres — la valeur par défaut de tag_prefix est URL_

–vversion_number    (symbols accolés) précise la version HTML. Par défaut, 3.0 qui connaît les tables.

input_file...    indique les fichiers à convertir. Par défaut, le standard input est utilisé comme fichier d'entrée.

Entités taggées
Une entité taggée , de forme générale <nom_tag:valeur>, est convertie par défaut en: <A href="${URL_nom_tag}valeur">valeur</A>
c'est-à-dire qu'on fait appel à la variable d'environnement $URL_nom_tag à laquelle on accole l'argument. Par exemple, le texte <Essai:valeur> devient: valeur

Si par ailleurs la variable $URL_Essai est définie, soit dans l'environnement standard Unix, soit dans la tag_file, par
$URL_Essai=http://machine/cgi-bin/Programme?
alors la traduction complète de est:
http://machine/cgi-bin/Programme?valeur>valeur

Le préfixe de taggage URL_ peut être replacé par tout autre texte défini par l'option –tag, ou encore par la variable d'environnement TAG2HTML.

tag_file
Le premier caractère de chaque ligne de la tag_file indique le type de définition :

\cgidef définitions
Toute ligne qui commence par \cgidef{ permet de changer le contexte, autorisant ainsi le mélange de documents par exemple écrits en TeX et en HTML. La syntaxe est la suivante:

\cgidef{ [begin|plain|html|tex|end] [options]
......(définitions)
}

avec les significations suivantes:

Définitions TeX
La liste complète est généré par cgiprint -LIST. Un très bref aperu des macros reconnues par défaut:

Returned Status
cgiprint retourne 0 en cas de succès, et 1 s'il y a eu un problème.

Variables d'Environnement

Quelques variables d'environnement peuvent être utilisees:

See also
glu(1) grep(1) httpd(1) latex(1) sed(1) tr(1)

Note: A function
char *cgitr(char *text, char *html_version)
is available in /usr/$MACHINE/lib which interprets the input string text and returns a newly allocated interpreted result.

Questions & Problèmes
à Fox ()