pCloud Premium

Utilisation de minted

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.
Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Utilisation de minted

Messagepar claude » Samedi 25 Juin 2011, 13:27

Bonjour,

suite à un message sur le présent forum, je voulais essayer minted (pour voir s'il sait faire des choses que listings ne sait pas faire). Suite a ces essais infructueux, j'ai deux questions:

1) En compilant avec "pdflatex -shell-escape <mon fichier>", j'ai un message d'erreur qui m'indique que pygmentize n'est pas installé, mais il l'est pourtant (en tapant dans un shell zsh la commande générée par minted.sty ça marche presque).
En regardant un peu plus près le code, il semble que mon système (TexLive 2009 packagé par Ubuntu 10.04) n'accepte aucun "write18" (désolé de pas expliquer cela clairement, mais je ne suis pas spécialiste de ces choses). Pouvez-vous s.v.p. me donner une piste pour corriger ce bouzin ?

2) Ma deuxième question (que j'aurais peut-être du poser en premier) : est-ce que Minted peut différencier une variable d'instance d'une variable locale d'une méthode? Je recherche un moyen de colorier des sources Java exactement comme le fait Eclipse (pour des programmeurs débutants). Le package listings n'a bien entendu pas un analyseur syntaxique complet et donc ne peut pas faire la différence entre ces deux types de variables. (je souhaites bien du courage à celuis qui voudrait faire cela en tex pur :lol: ). Mais peut-être que l'outil derrière pygmentize peut faire cela ?

D'avance merci de votre aide et bonne journée.

claude
claude
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Mai 2011, 09:25
Statut actuel: Actif et salarié

Publicité

Re: Utilisation de minted

Messagepar OG » Samedi 25 Juin 2011, 13:45

Bonjour

Pour le 1), c'est peut-être la commande de détection de pygmentize qui ne fonctionne pas correctement (c'est comme cela chez moi ubuntu 8.04) . Il y a un appel via which -s , mais l'option -s doit dépendre des versions de which. Solution : éditer minted.sty et enlever "-s". (c'est aussi un commentaire sur la liste du site google de minted)

Pour le 2) c'est pygmentize dépendant, donc à tester via pygments ton_exemple et la sortie que tu veux. Pygmentize fonctionne avec les expressions régulières donc va plus loin que listings mais ne comprend pas non plus comme le compilateur et dépendra aussi du support de java

O.G.
OG
Modérateur
 
Messages: 2289
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Utilisation de minted

Messagepar projetmbc » Samedi 25 Juin 2011, 16:37

Bonjour.

claude a écrit:...je voulais essayer minted (pour voir s'il sait faire des choses que listings ne sait pas faire).

Je suis aussi en train de faire cela, tu pourras poster ici tes remarques avec des ECM si possible, je le ferais.

claude a écrit:Ma deuxième question (que j'aurais peut-être du poser en premier) : est-ce que Minted peut différencier une variable d'instance d'une variable locale d'une méthode? Je recherche un moyen de colorier des sources Java exactement comme le fait Eclipse...

Un exemple ? N'étant pas très volubile, je n'ai jamais eu le courage d'apprendre Java.

OG a écrit:Pour le 2) c'est pygmentize dépendant, donc à tester via pygments ton_exemple et la sortie que tu veux. Pygmentize fonctionne avec les expressions régulières donc va plus loin que listings mais ne comprend pas non plus comme le compilateur et dépendra aussi du support de java

Là on touche un gros point faible de pygments de mon point de vue : la documentation est très mal faite. J'ai essayé sans succès de définir un nouveau langage de façon un peu plus évoluée qu'en donnant la liste des mots clés.

Ceci étant, est-il facile de modifier minted pour qu'il appelle un programme Python de mon cru ?
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Utilisation de minted

Messagepar projetmbc » Samedi 25 Juin 2011, 17:10

Un petit truc qui me gêne beaucoup, la gestion des lignes trop longues ne semblent pas prises en compte :

Code: Tout sélectionner
\documentclass[10pt,a4paper]{article}
   \usepackage[utf8x]{inputenc}
   \usepackage{ucs}
   \usepackage{minted}


\begin{document}

\begin{minted}{python}
a = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
\end{minted}

\end{document}
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Utilisation de minted

Messagepar projetmbc » Samedi 25 Juin 2011, 20:26

Bonjour,
une solution pourrait en fait consister à fabriquer dans pygments ce que l'on appelle un formatter qui renverrait une sortie pour un code comme celui ci-dessous. Bien entendu, il faudrait définir des commandes spéciales.

Code: Tout sélectionner
\documentclass[10pt,a4paper]{article}
   \usepackage[utf8x]{inputenc}
   \usepackage{ucs}
   \usepackage[T1]{fontenc}
   \usepackage{lmodern}

   \usepackage{amsfonts}
   \usepackage{amssymb}

   \usepackage[frenchb]{babel}

   \usepackage[x11names, svgnames]{xcolor}
   \usepackage{tikz}

   \usepackage{listings}
   \usepackage{spverbatim}

   \lstset{
%
% Hack for utf-8 like possibilities
      extendedchars = true,
      literate =
%   * A
      {à}{{\`a}}1 {â}{{\^a}}1
      {À}{{\`A}}1 {Â}{{\^A}}1
%   * C
      {ç}{{\c{c}}}1
      {Ç}{{\c{C}}}1
%   * E
      {é}{{\'e}}1 {è}{{\`e}}1 {ê}{{\^e}}1 {ë}{{\"e}}1
      {É}{{\'E}}1 {È}{{\`E}}1 {Ê}{{\^E}}1 {Ë}{{\"E}}1
%   * I
      {î}{{\^i}}1 {ï}{{\"i}}1
      {Î}{{\^I}}1 {Ï}{{\"I}}1
%   * O
      {ô}{{\^o}}1
      {Ô}{{\^O}}1
%   * OE
      {œ}{{\oe}}1
      {Œ}{{\OE}}1
%   * U
      {ù}{{\`u}}1 {û}{{\^u}}1 {ü}{{\"u}}1
      {Ù}{{\`U}}1 {Û}{{\^U}}1 {Ü}{{\"U}}1
%   * Special characters
      {°}{{\textdegree}}1
      {±}{{\textpm}}1,
%
% Escaping character used to allow LaTeX formatting inside one listing.
      escapechar=\⣿,
% You can use a start and an end espcaping character.
%   escapeinside={*!}{!*},
%
% Default style for listings
%
%    * Number for lines
      numbers=left,             % Where to put the line-numbers
      numberstyle=\footnotesize,    % Size of the fonts used for the line-numbers
      stepnumber=1,             % Step between two numbers
      numbersep=5pt,             % How far the line-numbers are from the code
%
%    * Back returns for long lines
      breaklines=true,          % Sets automatic line breaking
      breakatwhitespace=false,    % Automatic breaks only happen at whitespace ?
      breakindent=0pt,         % Space before the text of a break
      postbreak=\mbox{         % Character used at the begining of a break
         \rotatebox[y=0.9ex]{180}{\color{Red} $\Lsh$}%
      },
% You can use a character at the end of line where there is one break.
%   prebreak=\mbox{\tiny$\searrow$},
%
%    * Spacings and tabs
      showspaces=false,          % Spaces are displayed by a kind of underscore
      showstringspaces=false,      % Underline spaces within strings
      showtabs=false,            % Tabs are displayed by a kind of underscore
      tabsize=4,                % Default tabsize to 4 spaces
%
%   * Text formatting
      basicstyle=\ttfamily,       % Size of the font used
      backgroundcolor=\color{Bisque},% The background color using the package ''color''
%
%   * Frames and lines
      frame=single,             % Frame around the code ?
      frame=shadowbox,         % Style of frame
%
%   * Title and caption
      captionpos=b,            % Position of the caption
      title=\lstname,            % Show the filename of files included with ''\lstinputlisting''
   }

\begin{document}

\section{Un bloc de code}

\begin{lstlisting}[]
⣿\color{Green}{\# Programme calculant $ \sum_{i=1}^{5} i^3 $}⣿
⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿ (5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5): ⣿\color{Blue}{for}⣿ i in ⣿\color{Blue}{range}⣿(5):
    sum += i**3
⣿\color{Blue}{print}⣿ sum

⣿\color{Blue}{print}⣿(⣿\color{Red}{'Fin de la boucle...'}⣿)
\end{lstlisting}


\section{Du code en ligne}

Du listing dans une ligne : \texttt{\color{Blue}for} \texttt{i} \texttt{in} \texttt{\color{Blue}range}\texttt{(5):} \texttt{\color{Blue}for} \texttt{i} \texttt{in} \texttt{\color{Blue}range}\texttt{(5):} \texttt{\color{Blue}for} \texttt{i} \texttt{in} \texttt{\color{Blue}range}\texttt{(5):} .

\end{document}
Dernière édition par projetmbc le Dimanche 26 Juin 2011, 10:34, édité 2 fois.
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Utilisation de minted

Messagepar claude » Dimanche 26 Juin 2011, 08:56

projetmbc a écrit:
claude a écrit:Ma deuxième question (que j'aurais peut-être du poser en premier) : est-ce que Minted peut différencier une variable d'instance d'une variable locale d'une méthode? Je recherche un moyen de colorier des sources Java exactement comme le fait Eclipse...

Un exemple ? N'étant pas très volubile, je n'ai jamais eu le courage d'apprendre Java.


Je pensais à un truc du genre :http://www.cijoint.fr/cjlink.php?file=cj201106/cijmaoI8Qy.png

Par contre je ne comprends pas ta remarque sur ta possible volubilité.
Dernière édition par guiguiche le Dimanche 26 Juin 2011, 09:45, édité 1 fois.
Raison: balises [quote]
claude
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Mai 2011, 09:25
Statut actuel: Actif et salarié

Re: Utilisation de minted

Messagepar projetmbc » Dimanche 26 Juin 2011, 09:47

claude a écrit:Je pensais à un truc du genre :http://www.cijoint.fr/cjlink.php?file=cj201106/cijmaoI8Qy.png

Pygments ne fait pas ceci par défaut. Je suis peu convaincu par cette bibliothèque car sa documentation ne permet pas d'être productif rapidement : l'API es peu intuitive et à mon avis inutilement compliquée.

Je vais poser la question pour ton histoire d'attribut aux concepteurs de pygments.

claude a écrit:Par contre je ne comprends pas ta remarque sur ta possible volubilité.

C'était une mauvaise blague de geek. Java a la réputation de demander d'écrire pas mal de choses.


Si tu veux tester rapidement pygments, tu peux utiliser le code suivant à lancer dans un Terminal. Penser à mettre le path complet dans pathOfTheFileToTest, ou bien à changer de dossier avant de lancer le script avec un chemin local pour le fichier à colorer.

Code: Tout sélectionner
#! /usr/bin/env python
#coding=utf-8

import os
from pygments import highlight
from pygments.lexers import JavaLexer
from pygments.formatters import TerminalFormatter

pathOfTheFileToTest= "???"
code = open(pathOfTheFileToTest).read()

# This allows to see directly the effects in a Terminal !
print highlight(code, JavaLexer(), TerminalFormatter(style='bw'))


En fait, tu peux tester directement sur le web : voir le bas de cette page. Du coup, j'ai mis ton exemple en ligne : http://pygments.org/demo/19059/ .
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Utilisation de minted

Messagepar claude » Dimanche 26 Juin 2011, 14:03

projetmbc a écrit:
claude a écrit:Je pensais à un truc du genre :http://www.cijoint.fr/cjlink.php?file=cj201106/cijmaoI8Qy.png

Pygments ne fait pas ceci par défaut. Je suis peu convaincu par cette bibliothèque car sa documentation ne permet pas d'être productif rapidement : l'API es peu intuitive et à mon avis inutilement compliquée.

Je vais poser la question pour ton histoire d'attribut aux concepteurs de pygments.


J'ai plus lancé une bouteille à la mer qu'une vraie question. Il me semble (mais mes cours sont vachement loins) qu'une simple analyse syntaxique n'est pas suffisante pour distinguer un attribut d'une variable locale, donc je comprends que ce problème soit très compliqué à résoudre.

projetmbc a écrit:
claude a écrit:Par contre je ne comprends pas ta remarque sur ta possible volubilité.

C'était une mauvaise blague de geek. Java a la réputation de demander d'écrire pas mal de choses.


Actuellement j'écrit des programmes en C, Java et Python. Python est le seul langage ou j'ai dû ramer pendant de longues minutes juste parce que j'avais mal orthographié le nom d'une variable. D'habitude c'est le boulot du petit personnel (le compilateur) de voir ce genre de bug. Python a encore un autre désavantage que j'ai découvert par hasard. Un de mes étudiant est non-voyant et pour lui la délimitation des blocs par l'indentation est un gros problème. Lorsque cet étudiant écrit du C ou du Java, il aligne toutes les lignes à la première colonne (aucune indentation), mais il est facile ensuite de remettre son code en forme avec Eclipse par exemple (mais il y a plein d'autres outils qui font cela). Par contre avec Python, je ne connais aucun outil pour remettre un code en forme quand on a perdu l'indentation. Ca non plus ça ne doit pas être simple parce que la sémantique est justement dépendante de l'indentation.

Par contre, pour des "petits" projets, c'est vrai que python permet d'avoir rapidement un truc utilisable.

projetmbc a écrit:Si tu veux tester rapidement pygments, tu peux utiliser le code suivant à lancer dans un Terminal. Penser à mettre le path complet dans pathOfTheFileToTest, ou bien à changer de dossier avant de lancer le script avec un chemin local pour le fichier à colorer.

Code: Tout sélectionner
#! /usr/bin/env python
#coding=utf-8

import os
from pygments import highlight
from pygments.lexers import JavaLexer
from pygments.formatters import TerminalFormatter

pathOfTheFileToTest= "???"
code = open(pathOfTheFileToTest).read()

# This allows to see directly the effects in a Terminal !
print highlight(code, JavaLexer(), TerminalFormatter(style='bw'))


En fait, tu peux tester directement sur le web : voir le bas de cette page. Du coup, j'ai mis ton exemple en ligne : http://pygments.org/demo/19059/ .


Je vais zieuter cela tranquillement. Merci de tes conseils.
claude
Déca-utilisateur
 
Messages: 30
Inscription: Lundi 02 Mai 2011, 09:25
Statut actuel: Actif et salarié

Re: Utilisation de minted

Messagepar projetmbc » Dimanche 26 Juin 2011, 19:15

Bonsoir.

claude a écrit:Il me semble (mais mes cours sont vachement loins) qu'une simple analyse syntaxique n'est pas suffisante pour distinguer un attribut d'une variable locale, donc je comprends que ce problème soit très compliqué à résoudre.

Cela me parait au contraire faisable. Il faudrait encore me définir dans quels cas colorer les variables "utilisateur". Pour l'exemple que tu as proposé, il suffit juste de savoir que l'on est au début d'une classe.

Par contre, le fonctionnement de Pygments ne semble pas le permettre car il est basé sur un ensemble de regex fixées dès le départ, et surtout Pygments ne se préoccupe pas des blocs de structure.

claude a écrit:Python est le seul langage ou j'ai dû ramer pendant de longues minutes juste parce que j'avais mal orthographié le nom d'une variable.

Il existe des debuggers...

claude a écrit:Python a encore un autre désavantage que j'ai découvert par hasard. Un de mes étudiant est non-voyant et pour lui la délimitation des blocs par l'indentation est un gros problème.

C'est un argument juste. Peut-être faudrait-il voir avec lui s'il a une solution à proposer ?

claude a écrit:Par contre avec Python, je ne connais aucun outil pour remettre un code en forme quand on a perdu l'indentation.

Cela n'a pas de sens, c'est un peu comme si tu demandais à un programme d'ajouter des accolades manquantes dans un programme en C.

claude a écrit:Par contre, pour des "petits" projets, c'est vrai que python permet d'avoir rapidement un truc utilisable.

Pour des gros aussi...
  1. Mercurial
  2. Tornado
  3. Sage
  4. SymPy
  5. MayaVi
  6. ...
Pas de procès d'intention...
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant

Re: Utilisation de minted

Messagepar OG » Lundi 27 Juin 2011, 13:46

Avez vous essayé d'autres solutions pour colorer ? Avec emacs, htmlize et du bash il
est possible de sortir du LaTeX. Cette solution ne vient pas de moi, mais de Philippe Ivaldi.

Pour Pygments, tu peux tout de même utiliser les expressions régulières en plus des mots clefs.

O.G.
OG
Modérateur
 
Messages: 2289
Inscription: Lundi 12 Mars 2007, 11:20
Localisation: Rouen
Statut actuel: Actif et salarié | Maître de conférence

Re: Utilisation de minted

Messagepar projetmbc » Lundi 27 Juin 2011, 14:04

OG a écrit:Avez vous essayé d'autres solutions pour colorer ? Avec emacs, htmlize et du bash il
est possible de sortir du LaTeX.

Non. Ceci étant le coup de la coloration "dynamique" comme l'exemple proposé avant, je ne l'ai pas vu sur d'autres éditeurs : Scintilla ne semble pas gérer cela pour le Java, XCode non plus.

Une solution serait d'avoir un système de coloration supplémentaire localement. Par exemple, ici, on demanderait de traiter l'attribut.


OG a écrit:Pour Pygments, tu peux tout de même utiliser les expressions régulières en plus des mots clefs.

C'est à mon sens inutilement compliqué et le problème des regex est de savoir dans quel ordre les choses sont trouvées : ce n'est pas forcément une lecture de gauche à droite d'où la difficulté de la gestion des groupes de parenthèses avec des regex.
projetmbc
Péta-utilisateur
 
Messages: 1897
Inscription: Samedi 29 Décembre 2007, 00:58
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], Majestic-12 [Bot], Yandex [Bot] et 4 invités

pCloud Premium