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: | ||
}} | }} | ||