Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| domaines_specialises:informatique:inserer_du_code_source_informatique [2020/07/14 21:09] – Remise en forme, correction des liens morts, ajout de "minted". jejust | 4_domaines_specialises:informatique:inserer_du_code_source_informatique [2022/11/30 16:16] (Version actuelle) – [Avec l'extension “minted”] https et liens améliorés dbitouze | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== Comment | + | ====== Comment |
| + | |||
| + | Les logiciels qui affichent du code informatique utilisent des couleurs pour rendre les programmes plus lisibles. | ||
| + | Ceci permet de repérer visuellement les mots-clefs du langage, les noms de variables, etc. | ||
| + | Il est possible de faire la même chose avec LaTeX, pour que la structure du code soit soulignée | ||
| + | par la mise en forme. C'est très utile pour les livres sur la programmation, | ||
| + | |||
| + | <note important> | ||
| + | [[4_domaines_specialises: | ||
| + | ainsi que [[4_domaines_specialises: | ||
| + | </ | ||
| + | |||
| + | ===== Avec l' | ||
| + | |||
| + | L' | ||
| + | pour une sortie mise en forme (elle se charge d' | ||
| + | d' | ||
| + | mais il existe plusieurs autres extensions bien établies qui s' | ||
| + | Vous pouvez utiliser [[ctanpkg> | ||
| + | |||
| + | <WRAP column 40ex> | ||
| + | <code latex> | ||
| + | \usepackage{listings} | ||
| + | \lstset{language=C} | ||
| + | ... | ||
| + | \begin{document} | ||
| + | \begin{lstlisting} | ||
| + | #include < | ||
| + | |||
| + | int main(int argc, char ** argv) | ||
| + | { | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | \end{lstlisting} | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column> | ||
| + | < | ||
| + | \documentclass{article} | ||
| + | \usepackage{lmodern} | ||
| + | \usepackage{listings} | ||
| + | \lstset{language=C} | ||
| + | \pagestyle{empty} | ||
| + | |||
| + | \begin{document} | ||
| + | \begin{lstlisting} | ||
| + | #include < | ||
| + | |||
| + | int main(int argc, char ** argv) | ||
| + | { | ||
| + | printf(" | ||
| + | return 0; | ||
| + | } | ||
| + | \end{lstlisting} | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | mais vous pouvez aussi l' | ||
| + | <WRAP 40ex> | ||
| + | <code latex> | ||
| + | \usepackage{listings} | ||
| + | \lstset{language=C} | ||
| + | ... | ||
| + | \begin{document} | ||
| + | \lstinputlisting{main.c} | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | Ces exemples très simples peuvent être colorés de diverses façons et, bien sûr, | ||
| + | l' | ||
| Ligne 9: | Ligne 84: | ||
| directement le fichier source). Ce package permet de définir | directement le fichier source). Ce package permet de définir | ||
| facilement son propre langage, en le faisant éventuellement hériter | facilement son propre langage, en le faisant éventuellement hériter | ||
| - | d'un autre, avec des mots-clés spécifiques, | + | d'un autre, avec des mots-clefs spécifiques, |
| - | % Prakash : J'ai mis une liste de langages pour faciliter la recherche dans | ||
| - | % la FAQ, avec des mots clés... | ||
| Cependant, il ne doit pas être souvent utile de définir son langage, vu la | Cependant, il ne doit pas être souvent utile de définir son langage, vu la | ||
| - | liste sans cesse croissante de langages prédéfinis (\langprog{ABAP}, | + | liste sans cesse croissante de langages prédéfinis ('' |
| - | \langprog{ACSL}, \langprog{Ada}, \langprog{Algol}, \langprog{Assembler}, | + | '' |
| - | \langprog{Basic}, \langprog{C}, \langprog{C++}, \langprog{Caml}, | + | '' |
| - | \langprog{Cobol}, \langprog{Clean}, \langprog{Comal~80}, \langprog{Delphi}, | + | '' |
| - | \langprog{Eiffel}, \langprog{Elan}, \langprog{erlang}, \langprog{Fortran}, | + | '' |
| - | \langprog{Fortran}, \langprog{GCL}, \langprog{Haskell}, \langprog{HTML}, | + | '' |
| - | \langprog{IDL}, \langprog{Java}, \langprog{Lisp}, \langprog{Logo}, | + | '' |
| - | \langprog{make}, \langprog{Mathematica}, \langprog{Matlab}, | + | '' |
| - | \langprog{Mercury}, \langprog{MetaPost}, \langprog{Miranda}, | + | '' |
| - | \langprog{Mizar}, \langprog{ML}, \langprog{Modula-2}, \langprog{MuPAD}, | + | '' |
| - | \langprog{NASTRAN}, \langprog{Oberon-2}, \langprog{OCL}, \langprog{Octave}, | + | '' |
| - | \langprog{Pascal}, \langprog{Perl}, \langprog{PHP}, \langprog{PL/I}, | + | |
| - | \langprog{POV}, \langprog{Prolog}, \langprog{Python}, \langprog{R}, | + | |
| - | \langprog{Reduce}, \langprog{Ruby}, \langprog{S}, \langprog{SAS}, | + | |
| - | \langprog{Scilab}, scripts shell (\langprog{csh}, \langprog{ksh}...) | + | |
| - | \langprog{SHELXL}, \langprog{Simula}, \langprog{SQL}, \langprog{tcl}, < | + | |
| - | \langprog{VBScript}, \langprog{Verilog}, \langprog{VHDL}, \langprog{VRML}, | + | |
| - | \langprog{XML}). | + | |
| L' | L' | ||
| - | du code source avec [[ctanpkg> | + | du code source avec [[ctanpkg> |
| + | <WRAP column 55ex> | ||
| + | <code latex> | ||
| + | \documentclass{article} | ||
| + | \usepackage{listings} | ||
| - | Code Pascal présenté par [[ctanpkg> | + | \begin{document} |
| + | \lstset{language=Pascal, | ||
| + | {< | ||
| + | |||
| + | \begin{lstlisting} | ||
| + | program Toto; | ||
| + | var i : integer; | ||
| + | begin | ||
| + | if (i<=0) then i := 1; | ||
| + | if (i>=0) then i := 0; | ||
| + | if (i<> | ||
| + | end. | ||
| + | \end{lstlisting} | ||
| + | \end{document} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP column 30ex> | ||
| < | < | ||
| \documentclass{article} | \documentclass{article} | ||
| Ligne 46: | Ligne 132: | ||
| \begin{document} | \begin{document} | ||
| - | | + | \thispagestyle{empty} |
| \lstset{language=Pascal, | \lstset{language=Pascal, | ||
| {< | {< | ||
| + | |||
| \begin{lstlisting} | \begin{lstlisting} | ||
| program Toto; | program Toto; | ||
| Ligne 61: | Ligne 148: | ||
| \end{document} | \end{document} | ||
| </ | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| < | < | ||
| - | Moyennant quelques paramètres à ajouter, il est tout à fait possible de | + | Moyennant quelques paramètres à ajouter, il est tout à fait possible de faire en sorte |
| - | faire en sorte que ces packages reconnaissent les fontes 8 bits. On peut | + | que ces packages reconnaissent les fontes 8(nbsp)bits. On peut lui faire comprendre par exemple |
| - | lui faire comprendre par exemple, | + | lorsqu' |
| - | «mathonesuperior», il la transforme | + | |
| - | % En effet, je n'ai pas compris la remarque... | + | |
| - | % Qu' | + | |
| - | % ben je crois que c'est pour dire qu'il peut interpréter des morceaux (TvO) | + | |
| </ | </ | ||
| + | Pendant longtemps, l' | ||
| + | Mais ces dernières années, des alternatives viables sont apparues. | ||
| + | ===== Avec l' | ||
| - | $\Reponse$ | + | [[ctanpkg> |
| + | En effet, en plus de la sortie (La)TeX, [[ctanpkg> | ||
| + | de votre code-source. [[http:// | ||
| + | si vous devez écrire le fichier de paramètres pour un nouveau langage, ou modifier la mise en forme d'un langage déjà défini. | ||
| + | |||
| + | |||
| + | ===== Avec l' | ||
| + | |||
| + | L' | ||
| + | Il nécessite que le code soit traité à l'aide d'un script externe, écrit en Python, '' | ||
| + | Pygments, à son tour, a besoin d'un [[wpfr> | ||
| + | il en existe de nombreux, pour les langages les plus utilisés, et il y a aussi des conseils pour écrire le vôtre | ||
| + | sur le site web de '' | ||
| + | |||
| + | L' | ||
| + | |||
| + | <WRAP 40ex> | ||
| + | <code latex> | ||
| + | \begin{minted}{⟨language⟩} | ||
| + | ... | ||
| + | \end{minted} | ||
| + | </ | ||
| + | </ | ||
| + | <WRAP clear /> | ||
| + | |||
| + | qui traite le code du programme à la volée, au moment de la compilation. | ||
| + | |||
| + | <note important> | ||
| + | Cela demande que [[2_programmation: | ||
| + | </ | ||
| + | |||
| + | |||
| + | $\Reponse$ | ||
| + | Il fait appel au package [[ctanpkg> | ||
| + | que vous devrez installer séparément. | ||
| + | |||
| + | FIXME Un exemple d' | ||
| + | [[https:// | ||
| + | |||
| + | |||
| + | ===== Avec l' | ||
| + | |||
| + | Dans un autre ordre d' | ||
| + | dans des «volets» situés en regard l'un de l' | ||
| + | sur (La)TeX. Le paquetage utilise des [[ctanpkg> | ||
| + | pour l' | ||
| + | |||
| + | ===== Autres solutions ===== | ||
| + | |||
| + | $\Reponse$ | ||
| permet, entre autres, de formater du code source d'un langage donné en | permet, entre autres, de formater du code source d'un langage donné en | ||
| - | < | + | < |
| - | \langprog{assembleur}, \langprog{BASIC}, \langprog{Batch}, | + | '' |
| - | \langprog{C}, \langprog{C++}, \langprog{FORTRAN}, \langprog{GnuPlot}, | + | '' |
| - | \langprog{Icon}, \langprog{IDL}, \langprog{ISP}, \langprog{Java}, | + | '' |
| - | \langprog{Kimwitu++}, < | + | '' |
| - | \langprog{Linda}, \langprog{Lisp}, \langprog{MATLAB}, \langprog{ML}, | + | scripts shell, |
| - | \langprog{Mercury}, \langprog{model}, \langprog{Modula-2}, | + | '' |
| - | \langprog{Pascal}, \langprog{Perl}, \langprog{scripts shell}, | + | |
| - | \langprog{PostScript}, \langprog{Prolog}, \langprog{RATFOR}, | + | |
| - | \langprog{RLaB}, \langprog{Russell}, \langprog{SAS}, | + | |
| - | \langprog{Scheme}, \langprog{SICStus}, \langprog{src}, \langprog{SQL}, | + | |
| - | \langprog{Tcl/Tk}, \langprog{VisualBasic}, \langprog{yacc}. | + | |
| - | Ce programme, [[ctanpkg> | + | Le programme |
| - | permet à partir du code source de générer du code < | + | respectant |
| - | l' | + | en '' |
| - | en question, par exemple '' | + | à l'aide d'une commande appropriée (voir |
| - | '' | + | «[[3_composition/ |
| - | < | + | L' |
| - | L' | + | |
| - | généré en plus. | + | |
| L' | L' | ||
| '' | '' | ||
| (aux changements de ligne près). | (aux changements de ligne près). | ||
| - | |||
| < | < | ||
| * Utiliser au-moins la version 3.6; | * Utiliser au-moins la version 3.6; | ||
| * on peut paramétrer [[ctanpkg> | * on peut paramétrer [[ctanpkg> | ||
| - | * Par défaut, l' | + | * Par défaut, l' |
| </ | </ | ||
| Ligne 112: | Ligne 241: | ||
| Résultat produit par '' | Résultat produit par '' | ||
| - | <latexdoc> | + | <code latex> |
| \documentclass{article} | \documentclass{article} | ||
| \usepackage[latin1]{inputenc} | \usepackage[latin1]{inputenc} | ||
| Ligne 126: | Ligne 255: | ||
| \begin{document} | \begin{document} | ||
| - | | + | \thispagestyle{empty} |
| \renewcommand{\footrulewidth}{0.4pt} | \renewcommand{\footrulewidth}{0.4pt} | ||
| Ligne 152: | Ligne 281: | ||
| \printindex | \printindex | ||
| \end{document} | \end{document} | ||
| - | </latexdoc> | + | </code> |
| + | |||
| + | |||
| + | |||
| + | $\Reponse$ | ||
| + | en < | ||
| + | les en-têtes de procédures, | ||
| + | changements de section et la génération d' | ||
| + | ===== Solutions anciennes ===== | ||
| $\Reponse$ | $\Reponse$ | ||
| Ligne 166: | Ligne 303: | ||
| C, C++, IDL et Perl. | C, C++, IDL et Perl. | ||
| - | FIXME Est-il intéressant de parler de cvt2ltx ? Je n' | + | FIXME Est-il intéressant de parler de cvt2ltx ? Je n' |
| + | Voici quelques autres systèmes plus anciens (et moins «puissants»): | ||
| - | $\Reponse$ | + | * Le système |
| - | ([[mailto: | + | * Le système |
| - | d' | + | * [[http:// |
| - | Il numérote les lignes, traduit | + | |
| - | Il supporte plusieurs fichiers d' | + | |
| - | changements de section et la génération d'index. | + | |
| - | + | ||
| - | + | ||
| - | $\Reponse$ | + | |
| - | Il fait appel au package | + | |
| - | que vous devrez installer séparément. | + | |
| - | FIXME Un exemple d' | ||
| - | [[https:// | ||
| + | ----- | ||
| + | //Source:// [[faquk> | ||
| - | {{htmlmetatags> | + | {{htmlmetatags> |
| - | metatag-og: | + | metatag-og: |
| metatag-og: | metatag-og: | ||
| }} | }} | ||

