Inclure code mathematica dans fichier latex

Bonjour à tous
Je cherche à importer du code mathematica dans latex... sans succès. J'ai fait quelques recherches sur internet, mais il semble que cela ne soit pas si simple. J'ai créé un fichier "exemples.nb" pour tester l'importation de code (je n'ai pas pu importer le fichier "exemples.nb" sur ce forum donc je vous ai mis deux captures d'écran).
J'ai essayé avec le package listings, voici le code.
\documentclass[a4paper,11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{amsfonts}
\usepackage{listings}
\usepackage{amssymb}

\begin{document}
\lstset{language=Mathematica}

Extraire des lignes:

\lstinputlisting[language=Mathematica, firstline=6, lastline=8]{exemples.nb}

\end{document}
Le résultat est en pièce jointe... ça ne marche pas du tout ! Et si je ne précise pas les lignes "firstline" et "lastline" (donc si j'essaye d'importer tout le fichier), le résultat est horrible et ne tient pas sur une page (donc je ne l'ai pas mis en pièce jointe).

J'ai lu par la suite que listings ne fonctionnait pas bien pour importer un fichier ".nb". J'ai aussi essayé de re-taper le code en utilisant le package listings, mais le rendu ne ressemble pas du tout au rendu Mathematica.

En particulier, je cherche à obtenir
1) Les mêmes polices : Mathematica me dit que les inputs et les outputs sont en police "Consolas";
2) Les mêmes jeux de couleurs ; j'ai repéré du noir, du gris, du bleu, et un espèce de vert (par exemple pour la variable $n$ dans le 10ème input). Je ne sais pas si cela peut être géré automatiquement (si c'est le cas je suis preneur, mais je serai déjà content si j'obtiens le même résultat en gérant les couleurs "à la main");
3) Les mêmes symboles (par exemple les mêmes $\{$ et $\}$, les mêmes $\leq$, les mêmes $\rightarrow$, et les mêmes flèches avec le point au début comme dans l'input 12);
4) Pouvoir inclure ou ne pas inclure les "In[...]=" et les "Out[...]=" en débuts de lignes (pour l'instant je ne les veux pas, mais je souhaiterais pouvoir les rajouter si je change d'avis par la suite).

J'ai vu plusieurs façons d'importer/de re-taper du code Mathematica en tex sur divers forums en anglais, mais elles me semblent toutes compliquées (je n'en ai compris aucune parfaitement... sans doute aussi à cause de mon niveau d'anglais !) et aucune de celles que j'ai trouvées ne semble remplir les trois critères ci-dessus... quelqu'un aurait-il une solution (soit pour importer directement le code soit pour le re-taper, mais toujours en obtenant un résultat identique au rendu Mathematica) ?

Je n'ai pas envie de me résoudre à importer des captures d'écran dans le fichier tex.

Si vous le souhaitez, je peux également poster mon fichier "exemples.nb" sur un drop et mettre le lien pour que vous puissiez le tester (n'hésitez pas à me demander).

Dernière précision : pour les graphiques comme le dernier output, je me contente bien sûr d'une importation de l'image ; c'est pour les lignes de codes que je souhaite avoir une solution.
Je vous remercie d'avance pour votre aide !116678
116680
116682

Réponses

  • Bonjour,

    Pour attacher le fichier au forum, tu peux lui donner l'extension .tex (eh oui, il faut contourner les règles, quelle éducation...). Je n'ai pas de solution toute faite, mais je suppose que listings (ou listingsutf8 ?) doit pouvoir faire ça avec de la patience. Pour les polices TrueType ou OpenType, le plus simple est sans doute d'utiliser LuaTeX ou XeTeX avec le package fontspec.

    Je suis à peu près sûr qu'un membre très actif du forum TeX de TopAnswers.xyz utilise Mathematica. Tu pourrais envisager de poser la question là-bas.
  • @brian Merci pour votre réponse rapide!

    Je n'ai pas réussi à modifier l'extension directement sur le nom du fichier (si je rajoute ".tex", le fichier devient "exemples.tex.nb" et ne veut toujours pas être importé sur le forum). J'ai donc exporté un nouveau fichier "exemples.tex" à partir du fichier Mathematica.

    Je joint à ce message la version ".tex" du fichier "exemples" (Mathematica génère également un autre fichier que je n'arrive pas non plus à importer).


    Pour lire un fichier ".nb" (après reconversion du fichier ".tex") sans avoir Mathematica, il y a le lecteur gratuit (et normalement sans virus) wolfram player: https://www.wolfram.com/player/

    Si la reconversion en ".nb" à partir du ".tex" ne marche pas je mettrai le fichier ".nb" sur un drop et je posterai le lien (ça sera plus simple, et je pense que je vais le faire de toute façon).

    Vous m'aviez précédemment conseillé d'éviter les doublons sur d'autres forums. Pensez-vous que quelqu'un sur ce forum pourra m'aider sur ce problème ou devrais-je selon vous re-poster dès maintenant ce message sur le forum que vous m'avez indiqué?

    Si vous me conseillez de faire un doublon j'indiquerai le lien du doublon sur ce fil (et le lien de ce fil dans le post sur l'autre forum).
  • Voici un lien pour un drop: https://www.meerodrop.com/fr/drop/7b9e84a1-f54a-4877-8731-359e078b0aac



    Edit: @bisam désolé j'ai vu votre message après avoir posté le mien; je vais essayer de modifier l'extension du fichier (sinon normalement le drop fonctionne bien)
  • @adrien2019

    Je ne sais pas s'il y a des gens susceptibles de fournir une réponse satisfaisante sur ce forum. Comme c'est un peu exceptionnel, si tu précises bien ici que tu as posté ailleurs en mettant un lien vers la question, je pense que personne ne t'en voudra. ;-)
  • L'extension du fichier ".nb" n'apparaissait pas dans le nom du fichier; la méthode proposée par bisam n'a donc pas marché. J'ai réussi à exporter en un fichier ".ps" (attaché au message). Dans ce dernier fichier l'extension apparaissait dans le nom donc j'ai modifié en ".tex" (aussi attaché au message).

    Sinon le drop marche bien normalement.

    Si vous pensez que je risque de ne pas avoir de réponse sur ce forum, je peux poster un doublon sur un autre forum et mettre le lien ici.

    Dans tous les cas, je vous remercie d'avance pour votre aide!


    Edit: @brian encore une fois j'ai découvert votre message après avoir posté le mien :-) Je vais jeter un œil sur le forum que vous m'avez indiqué, et si je fais un doublon je l'indiquerai ici.
  • Pour le problème de renommage, il faut sans doute que tu désactives l'ignoble option de l'explorateur Windows dont le but est de rendre les utilisateurs incompétents et vulnérables aux attaques les plus facilesmasquer les extensions des fichiers. Ne me demande pas comment ça se fait sur un Windows actuel ; mais cela doit être faisable.
  • J'ai posté un doublon sur le forum indiqué par Brian (en indiquant le lien de ce fil sur la page du doublon).

    Voici le lien du doublon: https://topanswers.xyz/tex?q=1632

    Si quelqu'un sur ce forum sait quand même répondre à ma question j'indiquerai bien sûr sur l'autre forum que j'ai obtenu une réponse ici.

    Merci pour les réponses que vous avez déjà fournies!
  • Pas mal, ton anglais. ;-) Deux trucs qui me semblent perfectibles :
    • “arrows with a point on the left” : je pense que “dot” est plus adapté que “point” dans ce cas ;
    • “the final render” -> “the final rendering” (ou “the PDF output”...)
    Je précise que malgré mon pseudo (en hommage à un personnage de film), je n'ai pas l'anglais pour langue maternelle.
  • @brian merci pour vos suggestions! J'ai fait les modifications que vous m'avez suggérées.

    Et merci pour m'avoir indiqué ce forum (je ne connaissais pas); j'espère que quelqu'un pourra me donner une solution (sur le forum que vous m'avez indiqué ou sur ce fil)!
  • J'espère aussi que tu auras une réponse satisfaisante.

    Puisqu'on est sur un forum de maths et qu'on parle de TopAnswers.xyz, j'en profite pour signaler qu'il y a de très jolies courbes paramétrées animées qui ont été postées là-bas il y a quelques jours, la plupart réalisées avec Asymptote. Je crois que ça commence ici ; l'utilisateur 'justonly' a posté un lien vers son blog avec plein de courbes de ce genre... lien qui a ensuite été caché par une modification du commentaire dans lequel le lien avait été donné. Bizarre. :-S
  • Brian a écrit:
    Je précise que malgré mon pseudo (en hommage à un personnage de film), je n'ai pas l'anglais pour langue maternelle.
    Brian Cohen ? Brian O'Conner ?
  • Le premier, Math Coss. :-D Bien que j'aie vu le film un bon paquet de fois, je ne savais même pas qu'on avait donné un nom de famille au personnage !
  • Suite des aventures avec Mathematica.

    L'utilisateur auquel je pense que Brian faisait référence m'a répondu dans la discussion associée à mon message. Si j'ai bien compris, il m'a répondu qu'il n'avait jamais essayé d'importer du code Mathematica dans un fichier latex, et qu'il pensait que le package listings donnait difficilement un résultat satisfaisant (je n'ai juste pas compris ce que signifiait "to present parts of packages as listings" dans sa réponse, mais je lui ai demandé des précisions).

    J'ai continué à chercher un bonne partie de la nuit, et j'ai finalement trouvé un début de solution "acceptable", en utilisant le package listings. Je recopie le code "à la main" en utilisant ce package, et je pense que du coup mon problème devient un problème de gestion du package et des fonts (et non plus un problème d'importation de code Mathematica puisque je le recopie à la main), c'est pourquoi je me permets de revenir vers vous sur ce forum (où je pense que vous pourrez peut-être m'aider). Bien sûr je signalerai toute réponse sur le doublon. Voici où j'en suis.

    J'ai refait une screenshot du fichier Mathematica pour vous montrer les trois exemples que j'ai tapés en tex (j'ai aussi mis un screenshot du résultat). Il s'agit du premier input (Exemple 1 dans le fichier tex), du second input (Exemple 2) et du dernier input (Exemple 3.a. et Exemple 3.b.).

    Voici le code.
    \documentclass[a4paper,11pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{xcolor}
    \usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
    \usepackage{listings}
    \usepackage{amssymb}
    \usepackage{fontspec}
    \setmonofont{Consolas}
    \newfontfamily\Consolas{Consolas}
    
    \begin{document}
    
    \noindent Voici du texte.\\
    
    \noindent Exemple 1:
    
    \lstset{basicstyle=\bfseries\ttfamily,
    emph={exempleliste1},      emphstyle=\color{blue},
    emph={[2]A, B},      emphstyle=[2]\color{gray}\normalfont\ttfamily\textit,
    moredelim=[is][\color{gray}]{|}{|}
    }
    \begin{lstlisting}[frame=single]
    exempleliste1 = {"|0 : 0|", "|1 : 0|", "|0 : 1|", "|1 : 1|", "|Le joueur |A| gagne|", 
    "|Le joueur |B| gagne|"}
    \end{lstlisting}
    
    \bigskip
    
    \noindent Exemple 2:
    
    \lstset{basicstyle=\bfseries\ttfamily,
    emph={exempleliste2,a,u},      emphstyle=\color{blue}}
    \begin{lstlisting}[frame=single]
    exempleliste2 = {2,5,a,u,6}
    \end{lstlisting}
    
    \bigskip
    
    \noindent Exemple 3.a.:
    
    \lstset{basicstyle=\bfseries\ttfamily,
    emph={m, a},      emphstyle=\color{blue},
    emph={[2]n},      emphstyle=[2]\color{-red!50!white}}
    \begin{lstlisting}[frame=single]
    Limit[{MatrixPower[m, n][[1, 2]], MatrixPower[m, n][[1, 3]]}, n -> INFINITY, 
    Assumptions -> 0.1 <= a <= 0.4] // FullSimplify
    \end{lstlisting}
    
    \bigskip
    
    \noindent Exemple 3.b.:
    
    \lstset{mathescape=true,
     basicstyle=\bfseries\ttfamily,
    emph={m, a},      emphstyle=\color{blue},
    emph={[2]n},      emphstyle=[2]\color{-red!50!white}}
    \begin{lstlisting}[frame=single]
    Limit[{MatrixPower[m, n][[1, 2]], MatrixPower[m, n][[1, 3]]}, n $\rightarrow$ INFINITY, 
    Assumptions $\rightarrow$ 0.1 $\leq$ a $\leq$ 0.4] // FullSimplify
    \end{lstlisting}
    
    \end{document}
    
    Attention : dans le code que je viens de vous donner, remplacer les deux "INFINITY" par un symbole $\infty$ copié-collé depuis une page google: par exemple copier-coller celui en haut de cette page: https://les-raccourcis-clavier.fr/symbole-infini-∞/

    Je ne sais pas pourquoi le forum n'a pas voulu poster mon message si je gardais ce symbole copié-collé depuis google (alors que ça n'a pas posé de copier-coller ce symbole dans le fichier tex)...

    Je m'excuse par avance auprès de Brian pour l'utilisation des "\noindent" et de "\usepackage
    {geometry}" (je trouve que c'est plus esthétique comme ça, et de plus je ne comprends pas comment on peut inclure de "grosses" figures dans un fichier tex avec les marges par défaut).

    Je m'excuse aussi si mon code est "améliorable": j'ai plus ou moins copié-collé des morceaux de codes trouvés sur diverses sources internet, sans trop comprendre dans les détails ce que j'étais en train de faire. Néanmoins je trouve les exemples 1 et 2 satisfaisants (je n'ai pas trouvé comment ajouter le "In[...]=" en début de ligne, mais je ne m'en occupe pas pour l'instant).

    Pour l'exemple 3.a., il me manque 3 choses (ou au moins deux et demie):

    1) Je voudrais remplacer les symboles $->$ par des flèches identiques à celles utilisées par Mathematica (voir screenchot);

    2) Je voudrais remplacer les symboles $<=$ par des $\leq$ identiques à ceux de Mathematica (voir screenshot);

    2)bis) J'ai l'impression que le symbole $\infty$ que j'obtiens est différent de celui de Mathematica... est-ce que je me trompe (sinon comment le remplacer par le bon symbole $\infty$)?

    Je ne sais pas si ça aide, mais voici la référence (unicode) indiquée par Mathematica pour chacun de ces symboles: F522 pour la flèche, 2264 pour inférieur ou égal et 221E pour le symbole $\infty$.

    Pour information, je chercherai peut-être aussi par la suite à obtenir le symbole "flèche commençant par un point" (voir screenshot de mon premier message sur ce fil), pour lequel Mathematica indique l'unicode 0F3D5. Pour le moment je ne m'en occupe pas.

    Pour obtenir ces symboles, j'ai essayé dans l'exemple 3.b. d'utiliser l'option "mathescape=true" pour obtenir les symboles en tex en espérant qu'ils correspondent visuellement à ceux de Mathematica. Malheureusement, comme vous pouvez le voir, les symboles sont reproduits sous la forme standard en tex et ne ressemblent pas à ceux de Mathematica (je soupçonne que ça soit parce que le passage en mode math lui fait oublier la police "Consolas" et le \bfseries; mais peut-être que je me trompe et que la raison est différente).

    Quelqu'un a-t-il une solution ?

    Je signale au passage cette page : https://tex.stackexchange.com/questions/424185/having-problems-with-lstlistings-displaying-minus-symbol-in-code-listing-with-cu qui semble traiter du même problème dans le cas du signe "moins" avec la police "Monaco" (ou "Arial"?). Je n'ai cependant rien compris au code qui semble répondre au problème (et je suis donc incapable de l'adapter dans mon cas si cela pouvait résoudre mon problème). En espérant que cela puisse vous aider et ne vous induise pas en erreur.

    Merci d'avance pour vos réponses !

    PS : AD pourquoi cette correction sur le premier "m" de "Mathematica" ? Le nom du logiciel ne prend-il pas de majuscule ? Et je n'ai pas compris pourquoi les autres "Mathematica" ont été laissés tels quels...116734
    116736
  • adrien2019 a écrit:
    L'extension du fichier ".nb" n'apparaissait pas dans le nom du fichier; la méthode proposée par bisam n'a donc pas marché. J'ai réussi à exporter en un fichier ".ps" (attaché au message). Dans ce dernier fichier l'extension apparaissait dans le nom donc j'ai modifié en ".tex" (aussi attaché au message).
    Si tu avais bien lu la page que j'avais liée, tu aurais vu qu'elle comporte un paragraphe nommé "Que faire si l’extension de fichier n’est pas visible ?"
    Ce que tu écris prouve que l'extension des fichiers de type ".nb" est masquée (parce que tu as installé un logiciel permettant de lire ces fichiers et que Windows le sait) tandis que celle des fichiers de type ".ps" ne l'est pas (parce que tu n'as PAS installé de logiciel permettant d'ouvrir ce type de fichiers).
    C'est débile de la part de Windows, mais c'est ainsi et il est facile d'y remédier : c'est écrit dans le paragrpahe susmentionné !
  • @adrien2019

    J'ai écrit ce qui suit avant de voir ton dernier message. Rapidement :
    • Pour inclure de grosses figures sans bousiller les marges de ton document, il suffit de faire croire à TeX que la figure est plus petite (cf. \makebox et \raisebox).
    • Le logiciel du forum a un support d'Unicode limité, c'est connu.
    • J'ai trouvé les mêmes code points Unicode que toi pour $\infty$ et $\leq$. Si tu mets ta police Consolas là où j'ai mis InconsolataN et que tu commentes les 4 lignes suivantes, je crois que tu devrais pouvoir utiliser les caractères Unicode $\infty$ et $\leq$ directement en mode maths. Sinon, en adaptant à peine ces lignes, ça devrait aller.
    \DeclareTextSymbol{\textinfty}{\UnicodeEncodingName}{"221E}
    \DeclareTextSymbol{\textleq}{\UnicodeEncodingName}{"2264}
    \newunicodechar{*}{\ifmmode\infty\else \textinfty\fi}
    \newunicodechar{*}{\ifmmode\leq\else \textleq\fi}
    
    (J'ai dû remplacer ici les caractères Unicode $\infty$ et $\leq$ par * pour le forum, mais le fichier docu.tex ci-joint a les bons caractères.)

    Voici maintenant le message rédigé avant :

    En charcutant localement le mode maths pour avoir directement la bonne police, les délimiteurs extensibles (accolades, parenthèses...), les matrices, etc., il est possible de formater ton truc sans trop de douleur. Tu peux constater que je t'ai mis une option 'show prompts' prenant les valeurs 'true' ou 'false' (si 'show prompts' est passée sans valeur, cela compte comme 'true'). Cette option, qui peut être passée à \MymaticaSetup ou dans l'argument optionnel de l'environnement 'mymatica', permet de montrer ou dissimuler les In[xx]:= et Out[yy]= à ta guise sans qu'il soit nécessaire de modifier le “listing”.

    La police Consolas de Microsoft étant propriétaire (et non téléchargeable gratuitement et légalement), je me suis consolé avec la variante condensée de la police Inconsolata. Si tu as les symboles souhaités dans une police, il est très facile de les faire supporter directement dans la partie « code Mathematica », comme le montre mon code avec les symboles $\infty$ et $\leq$ (sinon, on peut comme toujours assembler des symboles existants ou utiliser TikZ pour ajouter un petit disque à une flèche, par exemple). Je les ai entrés directement en Unicode dans les expressions mathématiques, mais \infty et \leq auraient aussi bien fonctionné (le deuxième argument de mes commandes \In et \Out est traité en mode maths).

    Le code fonctionne avec LuaTeX (commande 'lualatex'). Peut-être aussi avec XeTeX, mais au moins sur mon système, il doit falloir lui expliquer comment trouver la police Inconsolata (chemin complet vers le .otf...).

    Il est possible de mettre en place une numérotation automatique des prompts si c'est plus adapté à tes besoins.

    Si ton vrai document est en français, il faudra ajouter \usepackage[french]{babel} comme d'habitude (mais pas \usepackage[T1]{fontenc} : le moteur TeX “Unicode aware” et 'fontspec' se chargent de ça).116742
  • Si mon code t'intéresse mais que tu veux absolument utiliser la police Consolas, vu que je ne peux pas tester, il faudra procéder par étapes :
    • ajouter le support de Consolas là où j'ai mis Inconsolata  ;
    • commenter les 4 lignes dont j'ai parlé et enlever les caractères Unicode $\infty$ et $\leq$ entrés directement en mode maths ;
    • enlever éventuellement les trucs liés à Pagella (c'était juste pour tester les symboles $\infty$ et $\leq$ pris dans la police texte du document, entrés directement en Unicode en mode texte) ;
    • ça doit compiler sans erreur ;
    • remettre les caractères Unicode $\infty$ et $\leq$ dans les expressions mathématiques et tester.
    Je pense que la dernière étape devrait fonctionner, mais donner un espacement trop faible autour du $\leq$ (car traité comme un \mathord). Il suffirait alors d'ajouter :
    \Umathcode `* = 3~0~`*~
    
    à ma fonction \mymatica_math_setup: en remplaçant les deux * par le caractère Unicode $\leq$ (cela donnera au symbole en question la classe \mathrel et réglera le problème de l'espacement). Le symbole $\infty$ devrait déjà être un \mathord pris dans la bonne police si les 4 lignes que j'ai indiquées ont été commentées. Cela peut se vérifier avec :
    \showthe\Umathcode`*\space
    
    en remplaçant * comme il faut.
  • @brian Wow, merci infiniment pour le code que vous avez tapé. Je dois cependant avouer que ça dépasse largement ce que je suis capable de suivre en Tex, donc je vais m'y plonger car les options que vous proposez m'intéressent beaucoup et je voudrais bien comprendre comment vous avez structuré le code, mais ça risque cependant de me prendre quelques semaines/mois :-) .
    J'ai essayé de modifier votre code comme vous l'avez dit, et ça compile, mais le résultat est inchangé. Peut-être que j'ai fait quelque chose de travers ou que mon la police Consolas ressemble tellement à Inconsolata que je n'ai pas vu la différence. J'ai également tenté de mettre en gras les inputs (qui si j'ai bien lu ne l'étaient pas déjà), car l'output de Mathematica est en gras (sauf les lettres $A$ et $B$)... j'ai tenté un \bm{...} autour d'un input mais le résultat final (en terme de police) ne ressemble plus du tout à ce qui est affiché par Mathematica (je pense donc que j'ai mal fait le remplacement de Inconsolata par Consolas et que la différence entre ces deux polices se voit bien dès qu'on passe en gras). Je vais me plonger dedans et je reposterai sur cette page les questions que j'aurai sans doute dans quelque temps.

    Pour le moment, j'ai fait quelques modifications au code que j'ai déjà posté, et j'ai obtenu de meilleurs résultats (grâce à l'importation des caractères unicode que vous m'avez indiquée). Voici le nouveau code (encore une fois, remplacer les * par ce qu'il faut):

    \documentclass[a4paper,11pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[french]{babel}
    \usepackage{xcolor}
    \usepackage[left=2.8cm,right=2.9cm,margin=2cm]{geometry}
    \usepackage{listings}
    \usepackage{amssymb}
    \usepackage{newunicodechar}
    \usepackage{fontspec}
    \setmonofont{Consolas}
    \newfontfamily\Consolas{Consolas}
    \DeclareTextSymbol{\textinfty}{\UnicodeEncodingName}{"221E}
    \DeclareTextSymbol{\textleq}{\UnicodeEncodingName}{"2264}
    \DeclareTextSymbol{\textarrow}{\UnicodeEncodingName}{"2192}
    \newunicodechar{*}{\textinfty}
    \newunicodechar{*}{\textleq\ }
    \newunicodechar{*}{\textarrow\ }
    
    
    
    
    
    
    \begin{document}
    
    \noindent Voici du texte.\\
    
    \noindent Exemple 1:
    
    \lstset{basicstyle=\bfseries\ttfamily,
    emph={exempleliste1},      emphstyle=\color{blue},
    emph={[2]A, B},      emphstyle=[2]\color{gray}\normalfont\ttfamily\textit,
    moredelim=[is][\color{gray}]{|}{|}
    }
    \begin{lstlisting}[frame=single]
    exempleliste1 = {"|0 : 0|", "|1 : 0|", "|0 : 1|", "|1 : 1|", "|Le joueur |A| gagne|", 
    "|Le joueur |B| gagne|"}
    \end{lstlisting}
    
    \bigskip
    
    \noindent Exemple 2:
    
    \lstset{basicstyle=\bfseries\ttfamily,
    emph={exempleliste2,a,u},      emphstyle=\color{blue}}
    \begin{lstlisting}[frame=single]
    exempleliste2 = {2,5,a,u,6}
    \end{lstlisting}
    
    \bigskip
    
    
    \noindent Exemple 3.a.:
    
    
    \lstset{basicstyle=\bfseries\ttfamily,
    emph={m, a},      emphstyle=\color{blue},
    emph={[2]n},      emphstyle=[2]\color{-red!50!white}}
    \begin{lstlisting}[frame=single]
    Limit[{MatrixPower[m, n][[1, 2]], MatrixPower[m, n][[1, 3]]}, n -> *, 
    Assumptions -> 0.1 <= a <= 0.4] // FullSimplify
    \end{lstlisting}
    
    
    \bigskip
    
    
    \noindent Exemple 3.b.:
    
    
    \lstset{mathescape=true,
     basicstyle=\bfseries\ttfamily,
    emph={m, a},      emphstyle=\color{blue},
    emph={[2]n},      emphstyle=[2]\color{-red!50!white}}
    \begin{lstlisting}[frame=single]
    Limit[{MatrixPower[m, n][[1, 2]], MatrixPower[m, n][[1, 3]]}, n **, 
    Assumptions *0.1 *a *0.4] // FullSimplify
    \end{lstlisting}
    
    \end{document}
    

    Je n'ai pas encore retiré le réglage sur les marges parce que dans ce cas j'aurais dû modifier tout mes codes pour ne pas qu'ils débordent des marges (et je voulais répondre rapidement).


    Je n'ai pas réussi à importer la flèche avec l'unicode que m'indique Mathematica: F522 (ça compile mais le résultat final me donne un point d'interrogation dans une boîte à la place de la flèche). Pour la flèche, je me suis contenté de l'unicode 2192.
    Je vous ai remis les screenshots des derniers inputs (dans Mathematica et dans Tex) pour que vous puissiez comparer. Je voudrais savoir s'il y a moyen d'améliorer mon code et/ou le rendu Tex, qui est déjà très proche de celui de Mathematica, mais par exemple le symbole $\leq$ est très légèrement différent dans les deux rendus, alors qu'il s'agit du même unicode... à quoi est-ce du et cela peut-il être arrangé? Idem pour le symbole $\infty$: les rendus sont très légèrement différents dans Mathematica et dans Tex.
    Autre exemple: les espacements peuvent-ils être mieux gérés (je crois qu'il y a des espacements plus grands dans le rendu Tex que dans Mathematica)?
    De plus sachant que j'ai installé Mathematica sur mon ordinateur, y a-t-il un moyen d'importer les polices Mathematica dans latex (pour avoir par exemple accès aux unicodes F522 ou 0F3D5, ce dernier correspondant à la flèche avec un point sur son extrémité gauche)?

    Toute autre remarque/amélioration sur mon code est la bienvenue. Je souhaiterais travailler sur mon code pour l'instant car le votre est trop "puissant/violent" pour moi pour le moment (faut que je m'y plonge mais ça me prendra beaucoup de temps).

    Merci en tout cas pour l'aide que vous m'avez déjà donnée!116764
    116766
  • Avec mon code, pour mettre tout ce qui est en Inconsolata en gras, il suffit de remplacer :
    \newfontfamily{\MymaticaVerbatimFont}{InconsolataN}
    
    par :
    \newfontfamily{\MymaticaVerbatimFont}{InconsolataN-Bold}
    
    Sinon, le package bm est normalement ce qu'il faut pour écrire un symbole isolé en gras en mode maths, mais il ne semble supporter que trois math versions : 'normal', 'bold' et 'heavy'. Comme j'ai créé une math version non-standard ('mymatica') afin de ne pas affecter la composition mathématique « normale », \bm ne peut fonctionner telle quelle pour mon setup avec Incosolata. Cependant, en modifiant un peu mon exemple comme ci-joint, on peut définir une math version 'heavy' et la choisir au milieu d'une formule avec la commande \hm au lieu de \bm. On pourrait aussi utiliser \hmdefine pour définir des commandes pour les symboles fréquemment utilisés en gras ; cela accélérerait la compilation.

    Pour tes symboles qui ne sont pas tout à fait comme tu voudrais, il faudrait d'abord t'assurer que le PDF résultant contient bien les polices que tu crois qu'il contient. À la fin de la compilation, LuaTeX affiche des choses comme ça (tout sur une seule ligne, en réalité) :
    </usr/share/texmf/fonts/opentype/public/tex-gyre/texgyrepagella-regular.otf>
    </usr/share/texlive/texmf-dist/fonts/opentype/public/inconsolata/InconsolataN-Bold.otf>
    </usr/share/texmf/fonts/opentype/public/lm/lmsans10-oblique.otf>
    </usr/share/texlive/texmf-dist/fonts/opentype/public/inconsolata/InconsolataN-Regular.otf>
    ...
    
    Cela montre les polices embarquées dans le document. Sinon, tu peux sans doute regarder les « propriétés » du fichier PDF, ou utiliser un outil tel que 'pdffonts' (libre et qui marche bien). Le fichier .log écrit par LaTeX dit également des choses là-dessus — beaucoup.

    Pour les espacements, ça dépend de quoi on parle. listings, je ne connais pas bien ; je te renvoie donc à sa doc. Pour le reste, en mode maths, les trois espacements standard sont définis par \thinmuskip, \medmuskip et \thickmuskip. Par exemple, entre un \mathord et un \mathrel, il doit y avoir un \thickmuskip, sauf erreur (voir le TeXbook). Bien sûr, on peut aussi mettre des espaces “custom“ au cas par cas avec \mkern et \mskip en mode maths, voire avec \kern et consorts (mais dans ce dernier cas, ça ne s'adapte pas au style mathématique).116790
    116792
  • J'ai modifié mon code précédent : les principaux signes de ponctuation et opérations +, -, *, / sont désormais pris dans Inconsolata. Le = aussi et l'espacement autour est bien meilleur (\mathrel). Idem pour < et >. Tout cela se passe dans \mymatica_math_setup:.
  • Bonsoir,

    Désolé pour ma réponse tardive (j'ai pas mal de choses à gérer et ça n'est pas évident de jongler avec tout en même temps).

    @brian merci beaucoup pour votre code modifié! Je vais m'y plonger car ça va sans doute me faire beaucoup progresser en latex.

    Pour les symboles qui ne correspondent pas exactement dans mon code, je n'ai pas trouvé les lignes que vous avez indiquées à la fin de la compilation (et pourtant j'ai compilé avec LuaLaTeX).

    J'ai donc essayé les propriétés du document pdf. J'ai testé cela uniquement sur une cellule. Je mets en pièce jointe la cellule Mathematica et la même cellule en Tex (fichiers pdf; la cellule Mathematica est celle qui contient le "In[.]:=" en début de ligne).

    Je mets également des screenshots des polices indiquées par le fichier pdf dans chacun des cas (avec des "M" pour celles du pdf issu de Mathematica, et un "L" pour celles du pdf issu de latex). Et oui je dessine très mal les lettres sur un ordi :-P


    Il y a effectivement une grosse différence: seulement deux polices détectées pour latex, et beaucoup plus pour Mathematica. Je pense que la police "LMRoman" de tex vient du "1" en bas de page dans le pdf.

    Après je suis paumé: il y a des polices supplémentaires dans le pdf issu de Mathematica et je ne sais pas d'où elles viennent. De plus, il y a différents "types" (Type 1, Type 1 (CID), TrueType, TrueType (CID)) et "encodages" (Identity-H, ANSI). Je n'ai aucune idée de ce que ces données signifient et ni d'où chaque police vient dans le pdf Mathematica.


    Avant même de chercher à me dire comment régler le problème (si vous avez une solution), pourriez-vous m'expliquer ce que tout cela signifie et ce qui est la source du problème (par exemple: les encodages différents ou les types différents influent-ils vraiment sur le rendu final?) si cela s'explique simplement (ou si c'est trop long à écrire, pourriez-vous me donner un lien où tout ça est expliqué)?

    Je vous remercie par avance pour vos retours!116908
    116910
    116912
  • Bonsoir,

    LMRoman10-Regular, c'est Latin Modern Roman 10pt, la police par défaut utilisée par LuaTeX. Ça ressemble beaucoup à Computer Modern Roman (c'est fait exprès) et pas du tout à ce que l'on voit sur les PDF que tu as postés. Effectivement, ça peut venir du numéro de page. Je ne comprends pas quelle police vient d'où dans ta capture d'écran car il y a des M avant et après la séparation horizontale (et ton deuxième PDF ne montre pas du LMRoman10-Regular, c'est certain). Je ne sais toujours pas quelle police tu regardes dans la portion du document qui t'intéresse, donc impossible de dire quoi que ce soit.

    Ton environnement de compilation a forcément une zone quelque part où il y a les messages de LaTeX. Peut-être y a-t-il une case à cocher. C'est quand même dingue de devoir supplier les gens à chaque fois juste pour voir la sortie de LaTeX. Il n'y a qu'à compiler en ligne de commande, là elle n'est pas cachée !

    En plus de ça, tu as forcément un fichier .log à côté du .tex ou, au pire (car certains éditeurs LaTeX veulent faire les malins et nous pourrissent la vie), dans un sous-répertoire. À la fin de ce fichier, il y a les polices embarquées (.otf, .pfb....) dans le format que j'ai indiqué.

    Fais un essai sur un document minimal avec juste quelques mots de Consolas.

    Les différents types de polices et codages que tu as mentionnés ne te feront pas avancer à mon avis ; Type 1 et TrueType sont des technologies de police, CID est une extension développée pour les langues qui nécessitent beaucoup de caractères, ANSI est un machin Windows et Identity-H signale un jeu de caractères non standard destiné à l'écriture horizontale, d'après ce que j'en ai compris ; voir https://blog.idrsolutions.com/2011/03/understanding-the-pdf-file-format-–-what-are-cid-fonts/ et https://en.wikipedia.org/wiki/PostScript_fonts#CID par exemple.
Connectez-vous ou Inscrivez-vous pour répondre.