[minted] Code dans une ligne de texte

Tout ce qui concerne le langage LaTeX et ses variantes. Ce langage est supporté sur le forum via les balises tex.

Modérateur : gdm_tex

Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

[minted] Code dans une ligne de texte

Message par projetmbc »

Bonjour,
le code suivant ne fonctionne pas car il y a un retour à la ligne avant et après le listing.

Code : Tout sélectionner

\documentclass[10pt,a4paper]{article}
% Pour XeLaTeX
	\XeTeXdefaultencoding utf-8
	\usepackage{fontspec}

	\usepackage{minted}

\begin{document}
Je suis \mint{python}!'...dépassé...'! car cela ne marche pas.
\end{document}
Avez-vous le même comportement ?
OG
Modérateur
Modérateur
Messages : 2293
Inscription : lundi 12 mars 2007, 11:20
Localisation : Rouen

Re: minted-Code dans une ligne de texte

Message par OG »

Oui même comportement.
Le créateur a l'air d'être plutôt occupé à faire sa thèse (normal),
tu peux toujours tenté sur le site http://code.google.com/p/minted/updates/list

Mais finalement tu veux avoir du code coloré dans la ligne, n'est-ce-pas un peu
trop demandé ?

O.G.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

Re: minted-Code dans une ligne de texte

Message par projetmbc »

Bonsoir et merci pour la "google liste".

Non ce n'est pas trop demandé quand on fait un tutoriel de programmation, c'est très pratique.

Je vais envoyer un mail à l'auteur car il manque aussi un autre comportement, sauf si j'ai mal parcouru la doc., à savoir la possibilité d'avoir un retour à la ligne. j'ai dans mes snippets un code ésotérique pour avoir cela avec verbatim.
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

Avec listings, il est trivial de mettre du code dans une ligne.
Quel est l'intérêt de minted ?
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

Re: [minted] Code dans une ligne de texte

Message par projetmbc »

Bonjour,
tu as raison pour listing et j'ai plein d'astuces avec ce package.

minted utilise les capacités de pygments, une librairie Python assez complète, et comme je programme en Python, je pourrais très facilement y ajouter la coloration d'un langage perso. sur lequel je bosse en ce moment.

En parlant de Python, listing ne m'a pas convaincu pour la coloration de ce langage.

De plus, je pense que les petits défauts de minted peuvent être gommés, peut-être même par certains experts de ce forum. J'ai contacté l'auteur de minted pour lui faire part de certains bugs et une suggestion.
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

Tu peux redéfinir le langage avec listing, c'est ce que j'ai fait dans mon tuto.
Tu peux tout refaire à ta guise : mots clefs, mots réservés, ...
commentaires, string, insertion de code latex dans le listing...
localement, tu peux surligner des mots, bref tu peux tout faire.

Que n'as tu pu pas faire avec Python-listing ?
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

Re: [minted] Code dans une ligne de texte

Message par projetmbc »

En fait, j'ai dû faire une bêtise dans mon code LaTeX. As-tu le préambule de ton tuto. ?

Ceci étant écrit, le nombre de langages supportés par Pygments est énorme et assez régulièrement mis à jour.

Deux autres points importants en ce qui me concerne.
  1. Je vais devoir colorer des listings pour des pages Web, et là j'utiliserais Pygments depuis Python.
  2. Avec Pygments, il est possible de programmer une coloration qui tienne compte des fonctions définies dans un listing, ce qui n'est pas négligeable.
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

Voilà quelques trucs adaptés à Python3

Code : Tout sélectionner

%%%%%%%COULEURS%%%%%%
\definecolor{my-gray}{gray}{0.95}
\colorlet{fond-code}{my-gray}
\colorlet{bord-code}{SkyBlue}
\colorlet{comment}{link}
\colorlet{c-emph}{blue}
\colorlet{c-key}{red}
\colorlet{c-math}{OliveGreen}
%%%%%%%%%%%
\lstset{%
basicstyle=\ttfamily,  
       % the size of the fonts that are used for the code
numbers=left, 
               % where to put the line-numbers
numberstyle=\footnotesize,
  % the size of the fonts that are used for the line-numbers
stepnumber=1,  
   % the step between two line-numbers. If it's 1 each line 
                                % will be numbered
numbersep=5pt, 
                 % how far the line-numbers are from the code
backgroundcolor=\color{fond-code}, 
      % choose the background color. You must add \usepackage{color}
showspaces=false, 
               % show spaces adding particular underscores
showstringspaces=false, 
        % underline spaces within strings
showtabs=false,   
              % show tabs within strings adding particular underscores
frame=single,	  
              % adds a frame around the code
tabsize=4,	  
              % sets default tabsize to 4 spaces
captionpos=b,   
              % sets the caption-position to bottom
breaklines=true, 
               % sets automatic line breaking
breakatwhitespace=false,    
    % sets if automatic breaks should only happen at whitespace
title=\lstname,    
             % show the filename of files included with \lstinputlisting;
                                % also try caption instead of title
escapeinside={*!}{!*},    
     % if you want to add a comment within your code
%morekeywords={???}            % if you want to add more keywords to the set
framexleftmargin=5mm, frame=shadowbox, rulesepcolor=\color{bord-code},
commentstyle=\color{comment}\small,
emphstyle=\color{c-emph},
keywordstyle=\ttfamily\bfseries\color{c-key},
}% à compléter au besoin
%
% et puis aussi ailleurs
%
\lstset{%
language=python,
keywords=[1]{and,as,assert,break,class,continue,def,%
del,elif,else,except,False,finally,for,%
from,global,if,import,in,is,lambda,%
None,nonlocal,not,or,pass,raise,return,%
True,try,while,with,yield},
%
keywords=[2]{print,input,str,float,int,len,range,abs,%
any,all,set,sum,pow,sorted,list,divmod,enumerate,ord,open,min,max,dir}, % c'est encore incomplet !!!!
keywordstyle=[1]\bfseries\color{red},
keywordstyle=[2]\color{brown},
numbers=none,
escapechar=§,
string=[b]",
%morestring=[b]\textquotesingle,
stringstyle=\color{purple},
moredelim=[is][\ttfamily\color{blue}]{£}{£},% deux trucs perso
moredelim=[is][\ttfamily\color{red}]{≤}{≥}%erreur de python, en rouge
}
\renewcommand*{\lstlistlistingname}{Codes sources des programmes \sujet}
\renewcommand*{\lstlistingname}{Code source}
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

Re: [minted] Code dans une ligne de texte

Message par projetmbc »

Merci, je vais zyeuter cela.
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

Pour une belle mécane avec du gras en option

Code : Tout sélectionner

\RequirePackage[scaled]{beramono}% belle mécane avec bold
Quelques hacks en prime, le dernier est essentiel

Code : Tout sélectionner

\usepackage{listings}
\lstset{extendedchars=true,
literate={é}{{\'e}}1 {è}{{\`e}}1 {à}{{\`a}}1 {ç}{{\c{c}}}1 {œ}{{\oe}}1 {ù}{{\`u}}1
{É}{{\'E}}1 {È}{{\`E}}1 {À}{{\`A}}1 {Ç}{{\c{C}}}1 {Œ}{{\OE}}1 {Ê}{{\^E}}1
{ê}{{\^e}}1 {î}{{\^i}}1 {ô}{{\^o}}1 {û}{{\^u}}1
{§}{{\S}}1 {°}{{\textdegree}}1 {±}{{\textpm}}1 {'}{{\textquotesingle}}1
 }

Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

Rien à voir avec listings :
Pour la mécane (monospaced font), j'ai longtemps hésité entre celle d'origine de kpfonts, inconsolata et d'autres.
Pour l'algorithmique, j'ai choisi beramono, car :
* le gras est possible ; c'est plus zoli dans le tuto ; pas réussi avec inconsolata
* le zéro est pointé (barré chez inconsolata), ça évite les confusions avec O-0
* petit point faible : le g n'est pas aussi beau qu'avec inconsolata. g-9
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

Re: [minted] Code dans une ligne de texte

Message par projetmbc »

C'est quoi cette histoire de mécane...
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

Francky a écrit :Rien à voir avec listings :...
Il y a les fontes sans/avec décorations (sérif), il y a les fontes à chasse fixes (dites aussi mécanes)
(in english : monospaced font)

Pour la programmation, on n'utilise que des fontes mécanes, comme inconsolata, déja-vu mono, beramono...
(dans un autre siècle, on nous obligeait à lire du courrier)

Pour mon tuto Python, tout mon code est en beramono, pour les raisons citées plus haut.
Dans mon éditeur, j'utilise Déjà-vu sans mono pour programmer.
Inconsolata me plait beaucoup aussi.
Attention, la version Latex n'a pas le zéro barré, alors que la version système l'a !
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

Re: [minted] Code dans une ligne de texte

Message par projetmbc »

Merci pour les précisions avec mécane, je ne connaissais pas le terme.
pg
Modérateur
Modérateur
Messages : 2601
Inscription : vendredi 15 juin 2007, 00:31

Re: [minted] Code dans une ligne de texte

Message par pg »

Une mécane (on dit aussi égyptienne) est plutôt une police avec des empattements rectangulaires. Si on peut considérer que Computer Modern TT, Courier, Luximono, etc. sont bien des mécanes (qui plus est monochasses), Inconsolata, Bera Mono, etc. n'ont pas d'empattements, donc n'entrent pas dans la catégorie.
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

damned, le faux ami.
Je croyais (comme beaucoup ?) que mécane était nommé en rapport aux machines à écrire, donc à chasse fixe.
Erreur. mécane ≠ monochasse.
-- Merci pour la correction.
On doit donc dire monochasse ou à chasse fixe.
J'ai bon cette fois ?
--
Mais d'où vient ce nom trompeur mécane ?
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
pg
Modérateur
Modérateur
Messages : 2601
Inscription : vendredi 15 juin 2007, 00:31

Re: [minted] Code dans une ligne de texte

Message par pg »

Il vient de la classification Vox ATypI. Je crois que c'est un néologisme inventé pour l'occasion. En anglais, c'est Mechanistic ou Mechanical.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1932
Inscription : samedi 29 décembre 2007, 00:58

Re: [minted] Code dans une ligne de texte

Message par projetmbc »

Bonjour Francky,
à partir de ce que tu m'as proposé, je suis arrivé à ce qui suit. La partie "Back returns for long lines" devrait t'intéresser.

Code : Tout sélectionner

% Listing

% Source : http://forum.mathematex.net/latex-f6/code-dans-une-ligne-de-texte-t13228.html#p127377

\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''
%
% Style of highlighting
	commentstyle=\color{Green}\small,
	emphstyle=\color{Red},
	keywordstyle=\ttfamily\bfseries\color{Blue},
}

\newcommand{\frameListingInLine}[1]{ %
	\fcolorbox{gray}{yellow}{#1}
}
}
Dernière modification par projetmbc le samedi 25 juin 2011, 20:32, modifié 1 fois.
Francky
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 681
Inscription : dimanche 11 avril 2010, 14:01

Re: [minted] Code dans une ligne de texte

Message par Francky »

Je connaissais le breakline, et je n'aime toujours pas le braille.
Je préfère un caractère rare qui s'entre au clavier naturellement par tout le monde.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem