Latex-Rendering in README.md auf Github


132

Gibt es eine Möglichkeit, LaTex in README.md in einem GitHub-Repository zu rendern? Ich habe es gegoogelt und nach Stapelüberlauf gesucht, aber keine der zugehörigen Antworten scheint machbar.


1
Es ist nicht direkt möglich. Gibt es eine bestimmte Sache, für die Sie LaTex benötigen? Wenn Sie beispielsweise mathematische Gleichungen möchten, kann dies mit bestimmten Tricks möglich sein. Sagen Sie uns, was Sie rendern möchten, und jemand kann Sie möglicherweise auf eine Problemumgehung hinweisen.
Waylan

1
Ja, ich möchte mathematische Gleichungen und ausgerichtete Gleichungen sowie eingebettete mathematische Symbole. Das wars so ziemlich.
user90593



1
Haben Sie darüber nachgedacht, Jupyter-Notebooks zu verwenden? Sie können jetzt sogar Python-Code einfügen;)
Charlie Parker

Antworten:


41

Für kurze Ausdrücke und nicht so ausgefallene Mathematik können Sie den Inline-HTML-Code verwenden, um Ihre Latex-gerenderte Mathematik in Codecogs abzurufen und dann das resultierende Bild einzubetten. Hier ein Beispiel:

- <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 " />

Was zu so etwas wie dem nächsten führen sollte

Update: Dies funktioniert gut in Eclipse, aber leider nicht in Github. Die einzige Lösung ist die nächste:

Nehmen Sie Ihre Latexgleichung und gehen Sie zu http://www.codecogs.com/latex/eqneditor.php . Am unteren Rand des Bereichs, in dem Ihre Gleichung angezeigt wird, befindet sich ein kleines Dropdown-Menü. Wählen Sie die codierte URL aus und fügen Sie diese in Ihre ein Github-Abschlag auf die nächste Weise:

![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
Ich schlage vor, latex.codecogs.com/png.latex anstelle von latex.codecogs.com/gif.latex zu verwenden . Es werden Bilder in besserer Qualität zurückgegeben!
Steffo

8
Sie können latex.codecogs.com/svg.latex verwenden, die Auflösung ist unabhängig.
Lizardfireman

28

Ich lade Repositorys mit Gleichungen in Gitlab hoch, da es native Unterstützung für LaTeX in MDD-Dateien bietet:

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

Die Syntax für Inline-Latex lautet $`\sqrt{2}`$.

Gitlab rendert Gleichungen mit JavaScript im Browser, anstatt Bilder anzuzeigen, was die Qualität der Gleichungen verbessert.

Mehr Infos hier .

Hoffen wir, dass Github dies auch in Zukunft umsetzen wird.


Tolle! Danke für den Tipp :)
Jonathan H

Wissen Sie, ob GitHub dies implementiert hat?
Rylan Schaeffer

21

Readme2Tex

Ich habe an einem Skript gearbeitet, das den größten Teil des Cruft automatisiert, indem LaTeX-Schriftsätze gut in Markith mit Github-Geschmack umgewandelt werden: https://github.com/leegao/readme2tex

Beim Rendern von LaTeX für Github gibt es einige Herausforderungen. Erstens entfernt Markdown mit Github-Geschmack die meisten Tags und Attribute. Dies bedeutet weder Javascript-basierte Bibliotheken (wie Mathjax) noch CSS-Stile.

Die natürliche Lösung scheint dann darin zu bestehen, Bilder vorkompilierter Gleichungen einzubetten. Sie werden jedoch schnell feststellen, dass LaTeX mehr kann, als nur in Dollarzeichen eingeschlossene Formeln in Bilder umzuwandeln.

Geben Sie hier die Bildbeschreibung ein

Durch einfaches Einbetten von Bildern von Online-Compilern erhält Ihr Dokument ein wirklich unnatürliches Aussehen. Tatsächlich würde ich argumentieren, dass es in Ihrem alltäglichen mathematischen Slang noch besser lesbar ist als nervös .

Ich glaube, dass es wichtig ist, sicherzustellen, dass Ihre Dokumente auf natürliche und lesbare Weise gesetzt werden. Aus diesem Grund habe ich ein Skript geschrieben, das neben dem Kompilieren von Formeln zu Bildern auch sicherstellt, dass das resultierende Bild richtig angepasst und am Rest des Textes ausgerichtet ist.

Hier ist zum Beispiel ein Auszug aus einer .mdDatei, der einige Aufzählungseigenschaften des Satzes regulärer Ausdrücke enthält, der Folgendes verwendet readme2tex:

Geben Sie hier die Bildbeschreibung ein

Wie zu erwarten ist, wird der Gleichungssystemsatz oben angegeben, indem nur die entsprechende align*Umgebung gestartet wird

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

Beachten Sie, dass während Inline-Gleichungen ($ ... $) mit dem Text ausgeführt werden, Anzeigegleichungen (die durch \begin{ENV}...\end{ENV}oder begrenzt $$...$$sind) zentriert sind. Dies macht es Menschen, die bereits an LaTeX gewöhnt sind, leicht, weiterhin produktiv zu sein.

Wenn dies nach etwas klingt, das helfen könnte, sollten Sie es überprüfen. https://github.com/leegao/readme2tex


14
Basierend auf dieser Arbeit habe ich eine GitHub-App erstellt, die den Renderprozess automatisiert und jedes Mal auslöst, wenn ein Push ausgeführt wird. Ich denke, es ist nützlich, also teile ich den Link für diejenigen, die es versuchen wollen: github.com/agurz/github-texify
agurodriguez

3
Nett! Das ist wirklich großartig von dir :)
Lee

Die TeXify-App scheint nicht zu funktionieren, wenn Inline-Mathjax für Markdown-Aufzählungselemente enthalten ist.
user32882



13

Ich teste eine von anderen vorgeschlagene Lösung und möchte TeXify empfehlen, das von agurodriguez erstellt und in einem Kommentar vorgeschlagen und von Tom Hale weiter beschrieben wurde. Ich möchte seine Antwort entwickeln und einen Grund angeben, warum dies eine sehr gute Lösung ist:

  • TeXify ist ein Wrapper von Readme2Tex (Erwähnung in Lee Antwort ). Um Readme2Tex verwenden zu können, müssen Sie eine Menge Software auf Ihrem lokalen Computer installieren (Python, Latex, ...). TeXify ist jedoch ein Github-Plugin, sodass Sie nichts auf Ihrem lokalen Computer installieren müssen. Sie müssen dies nur online installieren Plugin in Ihr Github-Konto, indem Sie eine Taste drücken und Repositorys auswählen, für die TeXify Lese- / Schreibzugriff hat, um Ihre Tex-Formeln zu analysieren und Bilder zu generieren.
  • Wenn Sie in Ihrem Repository eine *.tex.mdDatei erstellen oder aktualisieren , erkennt TeXify Änderungen und generiert eine Datei, in der Latexformeln *.mddurch die im texVerzeichnis in Ihrem Repo gespeicherten Bilder ausgetauscht werden . Wenn Sie also die Datei README.tex.md erstellen, generiert TeXify README.md mit Bildern anstelle von Tex-Formeln. Das Parsen von Tex-Formeln und das Generieren von Dokumentation erfolgt also automatisch bei jedem Commit & Push :)
  • Da alle Ihre Formeln in Bilder im texVerzeichnis geändert werden und die Datei README.md Links zu diesen Bildern verwendet, können Sie TeXify sogar deinstallieren und Ihre gesamte alte Dokumentation funktioniert weiterhin :). Das texVerzeichnis und die *.tex.mdDateien bleiben im Repository, sodass Sie Zugriff auf Ihre ursprünglichen Latexformeln und -bilder haben (Sie können auch texIhre anderen Dokumentationsbilder "von Hand" sicher im Verzeichnis speichern - TeXify berührt sie nicht).
  • Sie können die Latexsyntax für Gleichungen direkt in der Datei README.tex.md verwenden (ohne die .md-Markdown-Syntax zu verlieren), was sehr praktisch ist . Julii schlug in seiner Antwort vor, spezielle Links (mit Formeln) zu externen Diensten zu verwenden, z. http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7DDas ist jedoch gut und hat einige Nachteile: Die Formeln in den Links sind nicht einfach (praktisch) zu lesen und zu aktualisieren, und wenn es Probleme mit diesem Drittanbieter-Service gibt, funktioniert Ihre alte Dokumentation nicht mehr ... In TeXify Ihre alte Dokumentation funktioniert immer auch dann, wenn Sie dieses Plugin deinstallieren (da alle Ihre aus Latexformeln generierten Bilder im Repo- texVerzeichnis verbleiben ).
  • Der Yuchao Jiang schlug in seiner Antwort vor, Jupyter Notebook zu verwenden, was ebenfalls nett ist, jedoch einige Nachteile hat: Sie können Formeln nicht direkt in der Datei README.md verwenden, sondern müssen dort einen Link zu einer anderen Datei * .ipynb in Ihrem Repo herstellen, die Latex enthält (MathJax) Formeln. Das * .ipynb-Format der Datei ist JSON, was nicht praktisch zu pflegen ist (z. B. zeigt Gist keinen detaillierten Fehler mit der Zeilennummer in der * .ipynb-Datei an, wenn Sie vergessen haben, das Komma an die richtige Stelle zu setzen ...).

Hier ist ein Link zu einigen meiner Repos, in denen ich TeXify verwende, für das Dokumentation aus der Datei README.tex.md generiert wurde .


@ Royi Ich weiß nicht
Kamil Kiełczewski

Es ist schön, aber wie geht man mit einer Menge unbenutzter Müll-SVG-Bilder im Ordner / tex um?
Serge P.

@ SergeP. alles löschen und schieben?
Kamil Kiełczewski

6

Informationen zur automatischen Konvertierung beim Push auf GitHub finden Sie in der TeXify- App:

GitHub App, die in Ihren Pushs nach Dateien mit der Erweiterung * .tex.md sucht und ihre TeX-Ausdrücke als SVG-Bilder rendert

So funktioniert es (aus dem Quell-Repository ):

Wann immer Sie drücken, wird TeXify ausgeführt und sucht in Ihrem letzten Commit nach * .tex.md-Dateien. Für jeden dieser Dateien wird readme2tex ausgeführt, wobei LaTeX-Ausdrücke zwischen Dollarzeichen verwendet, in einfache SVG-Bilder konvertiert und die Ausgabe in einer .md-Erweiterungsdatei gespeichert werden (dh eine Datei mit dem Namen README.tex.md) wird verarbeitet und die Ausgabe wird als README.md) gespeichert. Danach werden die Ausgabedatei und die neuen SVG-Bilder festgeschrieben und in Ihr Repo zurückgeschoben.


1
Diese Arbeit ist von @agurodriguez, der es in einem Kommentar oben erwähnt
icc97

@ icc97 ja, aber agurodriguez keine Antwort erstellen (und ich werde seinen Kommentar wahrscheinlich nie bemerken). Da Tom eine Antwort erstellt (~ 1 Jahr nach agurodriguez), stelle ich fest, dass TeXify vorhanden ist, und es ermöglicht mir, TeXify zu verwenden und meine eigene Antwortbasis darauf zu schreiben . Also war es gut :)
Kamil Kiełczewski

2
@ KamilKiełczewski An dieser Antwort ist nichts auszusetzen. Ich erwähne nur, dass TeXify aufgrund dieses Threads von einem SO-Benutzer erstellt wurde, was ziemlich cool ist.
icc97

Ich verwende TeXify in meiner Readme-Datei, aber aus irgendeinem Grund werden beim Rendern fast jedes Mal Linien gesprungen, wenn $...$der Text ein enthält. Irgendwelche Hinweise warum? Dies ist das Repo: github.com/brunoconteleite/Spatial-Model-Solver
Bruno Conte Leite

3

Meine schnelle Lösung lautet:

Schritt 1. Fügen Sie Ihrer .mdDatei Latex hinzu

$$x=\sqrt{2}$$

Hinweis: Mathematische Gleichungen müssen in $$ ... $$ oder angegeben sein \\(... \\).

Schritt 2. Fügen Sie Folgendes zu Ihrer scripts.htmloder Themendatei hinzu (fügen Sie diesen Code am Ende hinzu).

<script type="text/javascript" async

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

Getan!. Sehen Sie Ihre Gl. durch Laden der Seite.


1
Welche scripts.htmlDatei? Ich kann keinen Hinweis darauf als Github-Funktion finden.
Jay Lemmon

Haben Sie eine Themendatei ( JeykyllThemendatei)? Dieser Code dient zur Anzeige von Latex auf Git-Seiten.
CKM

2
Sollte klarstellen, dass dies nur für Git-Seiten funktioniert, nicht für README.md im regulären Repo.
Germanium

1

Sie können einen kontinuierlichen Integrationsdienst (z. B. Travis CI ) erhalten, um LaTeX zu rendern und Ergebnisse an github zu übergeben. CI stellt nach jedem neuen Commit einen "Cloud" -Arbeiter bereit. Der Worker kompiliert Ihr Dokument als PDF und verwendet ImageMagick entweder, um es in ein Bild zu konvertieren, oder verwendet PanDoc, um eine LaTeX-> HTML-Konvertierung zu versuchen, bei der der Erfolg je nach Dokument variieren kann. Worker schreibt dann Bild oder HTML in Ihr Repository, von wo aus es in Ihrer Readme-Datei angezeigt werden kann.

Die TravisCi-Beispielkonfiguration, mit der ein PDF erstellt, in ein PNG konvertiert und an einen statischen Ort in Ihrem Repo übertragen wird, wird unten eingefügt. Sie müssten eine Zeile hinzufügen, in der PDF-Dateien in ein Bild konvertiert werden

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

Diese Travis Ci-Konfiguration startet einen Ubuntu-Worker, der ein Latex-Docker-Image herunterlädt, Ihr Dokument als PDF kompiliert und es an einen Zweig namens branchanme-pdf festschreibt.

Weitere Beispiele finden Sie in diesem Github-Repo und der dazugehörigen sx-Diskussion , im PanDoc-Beispiel unter https://dfm.io/posts/travis-latex/ und in diesem Beitrag auf Medium .



Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.