Rendu Latex dans README.md sur Github


134

Existe-t-il un moyen de rendre LaTex dans README.md dans un référentiel GitHub? Je l'ai googlé et recherché sur le débordement de pile, mais aucune des réponses associées ne semble possible.


1
Ce n'est pas possible directement. Y a-t-il quelque chose en particulier pour lequel vous pensez avoir besoin de LaTex? Par exemple, si vous voulez des équations mathématiques, cela peut être faisable avec des astuces spécifiques. Dites-nous ce que vous souhaitez rendre et quelqu'un pourra peut-être vous indiquer une solution de contournement.
Waylan

1
Oui, je veux des équations mathématiques et des équations alignées, ainsi que des symboles mathématiques intégrés. C'est à peu près tout.
user90593



1
avez-vous envisagé d'utiliser les notebooks Jupyter? Vous pouvez même insérer du code python maintenant;)
Charlie Parker

Réponses:


42

Pour les expressions courtes et les mathématiques pas si sophistiquées, vous pouvez utiliser le HTML en ligne pour obtenir votre rendu mathématique latex sur les codecogs, puis incorporer l'image résultante. Voici un exemple:

- <img src="https://latex.codecogs.com/gif.latex?O_t=\text { Onset event at time bin } t " /> 
- <img src="https://latex.codecogs.com/gif.latex?s=\text { sensor reading }  " /> 
- <img src="https://latex.codecogs.com/gif.latex?P(s | O_t )=\text { Probability of a sensor reading value when sleep onset is observed at a time bin } t " />

Ce qui devrait aboutir à quelque chose comme le suivant

Mise à jour: Cela fonctionne très bien dans eclipse mais pas dans github malheureusement. La seule solution est la suivante:

Prenez votre équation de latex et allez sur http://www.codecogs.com/latex/eqneditor.php , au bas de la zone où votre équation apparaît, il y a un petit menu déroulant, choisissez l'URL encodée puis collez-la dans votre markdown github de la manière suivante:

![equation](http://latex.codecogs.com/gif.latex?O_t%3D%5Ctext%20%7B%20Onset%20event%20at%20time%20bin%20%7D%20t)
![equation](http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7D) 
![equation](http://latex.codecogs.com/gif.latex?P%28s%20%7C%20O_t%20%29%3D%5Ctext%20%7B%20Probability%20of%20a%20sensor%20reading%20value%20when%20sleep%20onset%20is%20observed%20at%20a%20time%20bin%20%7D%20t)

4
Je suggère d'utiliser latex.codecogs.com/png.latex au lieu de latex.codecogs.com/gif.latex ; il renvoie des images de meilleure qualité!
Steffo

9
vous pouvez utiliser latex.codecogs.com/svg.latex, sa résolution est indépendante.
lizardfireman

28

Je télécharge des référentiels avec des équations sur Gitlab car il prend en charge nativement LaTeX dans les fichiers .md:

```math
SE = \frac{\sigma}{\sqrt{n}}
```

La syntaxe du latex en ligne est $`\sqrt{2}`$ .

Gitlab rend les équations avec JavaScript dans le navigateur au lieu d'afficher des images, ce qui améliore la qualité des équations.

Plus d'infos ici .

Espérons que Github l'implémentera également à l'avenir.


Incroyable! Merci pour la pointe :)
Jonathan H

Savez-vous si GitHub a implémenté cela?
Rylan Schaeffer le


21

Readme2Tex

J'ai travaillé sur un script qui automatise la plupart des crampes pour obtenir une composition LaTeX bien dans le markdown à la saveur de Github: https://github.com/leegao/readme2tex

Il y a quelques défis avec le rendu LaTeX pour Github. Tout d'abord, le démarquage à la saveur de Github supprime la plupart des balises et la plupart des attributs. Cela signifie pas de bibliothèques basées sur Javascript (comme Mathjax) ni de style CSS.

La solution naturelle semble alors être d'intégrer des images d'équations précompilées. Cependant, vous vous rendrez vite compte que LaTeX fait plus que simplement transformer des formules jointes en signe dollar en images.

entrez la description de l'image ici

Le simple fait d'incorporer des images de compilateurs en ligne donne ce look vraiment artificiel à votre document. En fait, je dirais que c'est encore plus lisible dans votre argot mathématique quotidien x ^ 2 que nerveux .

Je crois qu'il est important de s'assurer que vos documents sont composés de manière naturelle et lisible. C'est pourquoi j'ai écrit un script qui, au-delà de la compilation de formules en images, garantit également que l'image résultante est correctement ajustée et alignée sur le reste du texte.

Par exemple, voici un extrait d'un .mdfichier concernant certaines propriétés énumératives d'expressions régulières composées en utilisant readme2tex:

entrez la description de l'image ici

Comme vous pouvez vous y attendre, l'ensemble d'équations en haut est spécifié en démarrant simplement l' align*environnement correspondant

**Theorem**: The translation $[\![e]\!]$ given by
\begin{align*}
...
\end{align*}
...

Notez que lorsque les équations en ligne ($ ... $) s'exécutent avec le texte, les équations (celles qui sont délimitées par \begin{ENV}...\end{ENV}ou$$...$$ ) sont centrées. Cela permet aux personnes déjà habituées à LaTeX de rester productives.

Si cela ressemble à quelque chose qui pourrait vous aider, assurez-vous de le vérifier. https://github.com/leegao/readme2tex


14
Sur la base de ce travail, j'ai créé une application GitHub qui automatise le processus de rendu, le déclenchant à chaque fois qu'une poussée est effectuée. Je pense que c'est utile alors je partage le lien pour ceux qui veulent l'essayer: github.com/agurz/github-texify
agurodriguez

3
Agréable! C'est vraiment génial de ta part à faire :)
Lee

L'application TeXify ne semble pas fonctionner lors de l'inclusion de mathjax en ligne pour les éléments énumérés avec démarque.
user32882


13

Je teste une solution proposée par d'autres et je voudrais recommander TeXify créé et proposé en commentaire par agurodriguez et décrit plus en détail par Tom Hale - je voudrais développer sa réponse et expliquer pourquoi c'est une très bonne solution:

  • TeXify est un wrapper de Readme2Tex (mentionné dans la réponse de Lee ). Pour utiliser Readme2Tex, vous devez installer de nombreux logiciels sur votre machine locale (python, latex, ...) - mais TeXify est un plugin github donc vous n'avez pas besoin d'installer quoi que ce soit sur votre machine locale - vous n'avez besoin que d'une installation en ligne qui plugin dans votre compte github en appuyant sur un bouton et choisissez les référentiels pour lesquels TeXify aura un accès en lecture / écriture pour analyser vos formules tex et générer des images.
  • Lorsque dans votre référentiel vous créez ou mettez à jour un *.tex.mdfichier, TeXify détectera les changements et générera un *.mdfichier où les formules latex seront échangées par ses images enregistrées dans le texrépertoire de votre référentiel. Donc, si vous créez un fichier README.tex.md, TeXify générera README.md avec des images à la place des formules tex. Ainsi, l'analyse des formules tex et la génération de la documentation se font automatiquement à chaque commit et push :)
  • Parce que toutes vos formules sont changées en images dans le texrépertoire et que le fichier README.md utilise des liens vers ces images, vous pouvez même désinstaller TeXify et toute votre ancienne documentation fonctionnera toujours :). Le texrépertoire et les *.tex.mdfichiers resteront sur le référentiel afin que vous ayez accès à vos formules et images latex originales (vous pouvez également stocker en toute sécurité dans le texrépertoire vos autres images de documentation "faites à la main" - TeXify ne les touchera pas).
  • Vous pouvez utiliser la syntaxe latex équations directement dans le fichier README.tex.md (sans perdre la syntaxe de démarquage .md), ce qui est très pratique . Julii dans sa réponse a proposé d'utiliser des liens spéciaux (avec des formules) vers un service externe, par exemple. http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7Dce qui est bien a cependant quelques inconvénients: les formules dans les liens ne sont pas faciles (pratiques) à lire et à mettre à jour, et s'il y a un problème avec ce service tiers, votre ancienne documentation cessera de fonctionner ... Dans TeXify votre ancienne documentation fonctionnera toujours même si vous désinstallez ce plugin (car toutes vos images générées à partir de formules latex restent dans le repo dans le texrépertoire).
  • Le Yuchao Jiang dans sa réponse, a proposé d'utiliser Jupyter Notebook qui est également sympa mais présente quelques inconvénients: vous ne pouvez pas utiliser de formules directement dans le fichier README.md, vous devez y faire un lien vers un autre fichier * .ipynb dans votre repo qui contient du latex (MathJax) formules. Le format du fichier * .ipynb est JSON ce qui n'est pas pratique à maintenir (par exemple, Gist n'affiche pas d'erreur détaillée avec le numéro de ligne dans le fichier * .ipynb lorsque vous avez oublié de mettre la virgule à la bonne place ...).

Voici un lien vers une partie de mon dépôt où j'utilise TeXify pour lequel la documentation a été générée à partir du fichier README.tex.md .


@Royi Je ne sais pas
Kamil Kiełczewski

C'est bien, mais comment gérez-vous des tonnes d'images svg de déchets inutilisées dans le dossier / tex?
Serge P.

@SergeP. tout supprimer et pousser?
Kamil Kiełczewski

6

Pour une conversion automatique lors du transfert vers GitHub, jetez un œil à l' application TeXify :

L'application GitHub qui recherche dans vos push les fichiers avec l'extension * .tex.md et rend ses expressions TeX sous forme d'images SVG

Comment ça marche (depuis le référentiel source ):

Chaque fois que vous poussez, TeXify s'exécute et recherche les fichiers * .tex.md dans votre dernier commit. Pour chacun de ceux-ci, il exécutera readme2tex qui prendra des expressions LaTeX entre les signes dollar, le convertira en images SVG simples, puis enregistrera la sortie dans un fichier d'extension .md (cela signifie qu'un fichier nommé README.tex.md sera traité et la sortie sera enregistrée sous README.md). Après cela, le fichier de sortie et les nouvelles images SVG sont ensuite validés et renvoyés dans votre dépôt.


1
Ce travail est de @agurodriguez qui le mentionne dans un commentaire ci
icc97

1
@ icc97 oui, mais agurodriguez pas créer de réponse (et je ne remarquerai probablement jamais son commentaire). Parce que Tom crée une réponse (~ 1 an après agurodriguez), je remarque que TeXify existe et cela me permet d'utiliser TeXify et d'écrire ma propre base de réponses à ce sujet. Donc c'était bon :)
Kamil Kiełczewski

3
@ KamilKiełczewski Il n'y a rien de mal avec cette réponse, je mentionne juste que TeXify a été créé par un utilisateur SO à cause de ce fil, ce qui est plutôt cool.
icc97

J'utilise TeXify sur mon readme mais, pour une raison quelconque, le rendu saute de lignes presque à chaque fois qu'il y a un $...$dans le texte. Des indices pourquoi? Voici le repo: github.com/brunoconteleite/Spatial-Model-Solver
Bruno Conte Leite

3

Ma solution rapide est la suivante:

étape 1. Ajoutez du latex à votre .mdfichier

$$x=\sqrt{2}$$

Remarque: les eqns mathématiques doivent être en $$ ... $$ ou \\(... \\).

étape 2. Ajoutez ce qui suit à votre scripts.htmlfichier de thème ou (ajoutez ce code à la fin)

<script type="text/javascript" async

src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML">

Terminé!. Voir votre eq. en chargeant la page.


1
Quel scripts.htmlfichier? Je ne trouve aucune référence à cela en tant que fonctionnalité github.
Jay Lemmon

avez-vous un fichier de Jeykyllthème ( fichier de thème)? Ce code sert à afficher le latex dans les pages git.
CKM

2
Devrait préciser que cela ne fonctionne que pour les pages git, pas pour README.md dans le dépôt normal.
germanium

1

Vous pouvez obtenir un service d'intégration continue (par exemple Travis CI ) pour rendre LaTeX et valider les résultats sur github. CI déploiera un worker "cloud" après chaque nouvelle validation. Le worker compile votre document en pdf et soit utilise ImageMagick pour le convertir en image, soit utilise PanDoc pour tenter une conversion LaTeX-> HTML où le succès peut varier en fonction de votre document. Worker valide ensuite l'image ou le code HTML dans votre référentiel à partir duquel il peut être affiché dans votre readme.

Un exemple de configuration TravisCi qui construit un PDF, le convertit en PNG et le valide dans un emplacement statique de votre dépôt est collé ci-dessous. Vous devrez ajouter une ligne qui récupère pdfconverts PDF en image

sudo: required
dist: trusty
os: linux
language: generic
services: docker
env:
  global:
  - GIT_NAME: Travis CI
  - GIT_EMAIL: builds@travis-ci.org
  - TRAVIS_REPO_SLUG: your-github-username/your-repo
  - GIT_BRANCH: master
# I recommend storing your GitHub Access token as a secret key in a Travis CI environment variable, for example $GH_TOKEN.
  - secure: ${GH_TOKEN}
script:
- wget https://raw.githubusercontent.com/blang/latex-docker/master/latexdockercmd.sh
- chmod +x latexdockercmd.sh
- "./latexdockercmd.sh latexmk -cd -f -interaction=batchmode -pdf yourdocument.tex -outdir=$TRAVIS_BUILD_DIR/"
- cd $TRAVIS_BUILD_DIR
- convert -density 300 -quality 90 yourdocument.pdf yourdocument.png
- git checkout --orphan $TRAVIS_BRANCH-pdf
- git rm -rf .
- git add -f yourdoc*.png
- git -c user.name='travis' -c user.email='travis' commit -m "updated PDF"
# note we are again using GitHub access key stored in the CI environment variable
- git push -q -f https://your-github-username:$GH_TOKEN@github.com/$TRAVIS_REPO_SLUG $TRAVIS_BRANCH-pdf
notifications:
  email: false

Cette configuration Travis Ci lance un worker Ubuntu télécharge une image docker en latex, compile votre document en pdf et le valide dans une branche appelée branchanme-pdf.

Pour plus d'exemples, consultez ce dépôt github et sa discussion sx qui l'accompagne , l' exemple PanDoc , https://dfm.io/posts/travis-latex/ , et cet article sur Medium .



En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.