cgiprint (1) Convert a text into HTML (Dec. 2011)
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.
–%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<z<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:
–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.
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
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.
Example: les données concernant l'amas NGC 2244 de la Base de Données sur les Amas sont tagées dans le texte par <Cat:BDA/ngc/2244>. Moyennant la définition
:Cat:BDA/ http://vizier.u-strasbg.fr/cgi-bin/BDA?$$2le texte <Cat:BDA/ngc/2244> sera converti en:
<A HREF="http://vizier.u-strasbg.fr/cgi-bin/BDA?ngc/2244">BDA/ngc/2244</A>
<A HREF="http://vizier.u-strasbg.fr/cgi-bin/BDA?ngc/2244">BDA/ngc/2244</A>moyennant la définition
%E:BDA/ http://vizier.u-strasbg.fr/cgi-bin/BDA?$$2
\cgidef{ [begin|plain|html|tex|end] [options]
......(définitions)
}
avec les significations suivantes:
aigu | \'e | → é; |
grave | \'a | → à; |
circonflexe | \^o | → ô; |
umlaut | \"e | → ë; |
tilde | \~n | → ñ; |
Angstroem | \AA | → Å |
O-barré | \O | → Ø |
soleil | \sun | → ☉ |
Résumé de l'alphabet grec:
\alpha | α | \Alpha | Α | ||
\beta | β | \Beta | Β | ||
\gamma | γ | \Gamma | Γ | ||
\delta | δ | \Delta | Δ | ||
\epsilon | ε | \Epsilon | Ε | ||
\zeta | ζ | \Zeta | Ζ | ||
\eta | η | \Eta | Η | ||
\theta | θ | \Theta | Θ | ||
\iota | ι | \Iota | Ι | ||
\kappa | κ | \Kappa | Κ | ||
\lambda | λ | \Lambda | Λ | ||
\mu | µ | \Mu | Μ | ||
\nu | ν | \Nu | Ν | ||
\xi | ξ | \Xi | Ξ | ||
\omicron | ο | \Omicron | Ο | ||
\pi | π | \Pi | Π | ||
\rho | ρ | \Rho | Ρ | ||
\sigma | σ | \Sigma | Σ | ||
\tau | τ | \Tau | Τ | ||
\upsilon | υ | \Upsilon | Υ | ||
\phi | φ | \Phi | Φ | ||
\chi | χ | \Chi | Χ | ||
\psi | ψ | \Psi | Ψ | ||
\omega | ω | \Omega | Ω | ||
|
Note 1: le comportement par défaut d'un environnement (dans le cas d'environnement non défini dans la tag_file, est de générer son correspondant HTML. Par exemple, \begin{FORM} est converti en <FORM>, et \end{FORM} en </FORM>.
Note 2: il est possible d'utiliser les macros
\Beg et \End au lieu de
\begin et \end, qui ont un paramètre complémentaire
contenant les options HTML. Ainsi
\Beg{tabular}{BGCOLOR="\xcolor{LightYellow2}"}{rll}
rajoute les options de couleur de fond dans une table HTML.
Pour illustrer la différence entre les 2 commandes;
-rw-r--r-- 1 root root 404 Mar 31 2021 /etc/hosts
Il existe encore \execexpanded et \specialexpanded
qui convertissent leur argument
avant l'exécution – voir la différence entre
Note: \execexpanded est défini par:
\def\execexpanded#1{\expand1arg{#1}\exec{#1}}
Note 1: les arguments ne sont pas rescannés – à moins
d'utiliser \expand1arg, par exemple
\def\bleq#1{\expand1arg{#1}\sed{s/ /=/g}{#1}} \bleq{\exec{date}}Fri=Apr=19=03:14:13=CEST=2024
Note 2: comme dans sed(1), la commande y pour faire l'équivalent d'un tr(1) est possible, par exemple
\sed{y/[A-Z][0-9]/[a-z]/}{TOUS4 LES3 CHIFFRES8 SUPPRIMES9...}donne:
Quelques variables d'environnement peuvent être utilisees:
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.