Renderowanie lateksowe w README.md na Github


134

Czy istnieje sposób na renderowanie LaTex w README.md w repozytorium GitHub? Przeszukałem go w Google i szukałem informacji o przepełnieniu stosu, ale żadna z powiązanych odpowiedzi nie wydaje się możliwa.


1
Nie jest to możliwe bezpośrednio. Czy jest jakaś konkretna rzecz, do której myślisz, że potrzebujesz LaTex? Na przykład, jeśli potrzebujesz równań matematycznych, możesz to zrobić za pomocą pewnych określonych sztuczek. Powiedz nam, co chcesz renderować, a ktoś może wskazać Ci obejście.
Waylan,

1
Tak, chcę równania matematyczne i wyrównane równania wraz z wbudowanymi symbolami matematycznymi. To prawie wszystko.
user90593



1
czy rozważałeś użycie notebooków Jupyter? Możesz nawet wstawić kod Pythona teraz;)
Charlie Parker

Odpowiedzi:


42

W przypadku krótkich wyrażeń i niezbyt wyszukanej matematyki możesz użyć wbudowanego kodu HTML, aby uzyskać matematykę renderowaną lateksem na kodekach, a następnie osadzić wynikowy obraz. Oto przykład:

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

Co powinno skutkować czymś podobnym do następnego

Aktualizacja: Działa to świetnie w eclipse, ale niestety nie w githubie. Jedyne obejście to następna:

Weź swoje równanie lateksowe i przejdź do http://www.codecogs.com/latex/eqneditor.php , u dołu obszaru, w którym wyświetlane jest twoje równanie, znajduje się małe menu rozwijane, wybierz zakodowany adres URL, a następnie wklej go w swoim github markdown w następny sposób:

![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
Sugeruję użycie latex.codecogs.com/png.latex zamiast latex.codecogs.com/gif.latex ; zwraca obrazy lepszej jakości!
Steffo

9
możesz użyć latex.codecogs.com/svg.latex, jego rozdzielczość jest niezależna.
lizardfireman

28

Przesyłam repozytoria z równaniami do Gitlab, ponieważ ma natywne wsparcie dla LaTeX w plikach .md:

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

Składnia wbudowanego lateksu to $`\sqrt{2}`$.

Gitlab renderuje równania za pomocą JavaScript w przeglądarce zamiast wyświetlać obrazy, co poprawia jakość równań.

Więcej informacji tutaj .

Miejmy nadzieję, że Github zaimplementuje to również w przyszłości.


Niesamowity! Dzięki za cynk :)
Jonathan H

Czy wiesz, czy GitHub to zaimplementował?
Rylan Schaeffer


21

Readme2Tex

Pracowałem nad skryptem, który automatyzuje większość problemów związanych z ładnym wprowadzeniem LaTeX-a do promocji o smaku Github: https://github.com/leegao/readme2tex

Istnieje kilka wyzwań związanych z renderowaniem LaTeX dla Github. Po pierwsze, promocja w stylu Github usuwa większość tagów i większość atrybutów. Oznacza to brak bibliotek opartych na Javascript (takich jak Mathjax) ani żadnych stylów CSS.

Wydaje się więc, że naturalnym rozwiązaniem jest osadzenie obrazów wcześniej skompilowanych równań. Jednak wkrótce zdasz sobie sprawę, że LaTeX robi coś więcej niż tylko przekształcanie formuł zawartych w znakach dolara w obrazy.

wprowadź opis obrazu tutaj

Samo osadzenie obrazów z kompilatorów online nadaje temu dokumentowi naprawdę nienaturalny wygląd. W rzeczywistości, uważałbym, że jest to nawet bardziej czytelne w twoim codziennym slangu matematycznym x ^ 2 niż skakanie .

Uważam, że ważne jest, aby dokumenty były składane w sposób naturalny i czytelny. Dlatego napisałem skrypt, który oprócz kompilowania formuł w obrazy, zapewnia również, że wynikowy obraz jest odpowiednio dopasowany i wyrównany z resztą tekstu.

Na przykład, oto fragment .mdpliku dotyczący niektórych wyliczeniowych właściwości wyrażeń regularnych składanych przy użyciu readme2tex:

wprowadź opis obrazu tutaj

Jak można się spodziewać, zestaw równań na górze jest określany przez samo uruchomienie odpowiedniego align*środowiska

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

Zauważ, że podczas gdy równania w wierszu ($ ... $) są uruchamiane z tekstem, równania wyświetlane (te, które są rozdzielane \begin{ENV}...\end{ENV}lub $$...$$) są wyśrodkowane. Ułatwia to ludziom, którzy są już przyzwyczajeni do LaTeX-a, utrzymanie produktywności.

Jeśli brzmi to jak coś, co może pomóc, sprawdź to. https://github.com/leegao/readme2tex


14
Na podstawie tej pracy stworzyłem aplikację GitHub, która automatyzuje proces renderowania, uruchamiając go za każdym razem, gdy jest wykonywany push. Myślę, że jest to przydatne, więc udostępniam link tym, którzy chcą spróbować: github.com/agurz/github-texify
agurodriguez

3
Miły! To naprawdę niesamowite z twojej strony :)
Lee

Wydaje się, że aplikacja TeXify nie działa, gdy zawiera wbudowaną matematykę dla wyliczonych elementów przecenionych.
user32882


13

Testuję jakieś rozwiązanie proponowane przez innych i chciałbym polecić TeXify stworzone i zaproponowane w komentarzu przez agurodriguez i dalej opisane przez Toma Hale'a - chciałbym rozwinąć jego odpowiedź i podać powód, dlaczego jest to bardzo dobre rozwiązanie:

  • TeXify jest opakowaniem Readme2Tex (wzmianka w odpowiedzi Lee ). Aby korzystać z Readme2Tex, musisz zainstalować dużo oprogramowania na swojej lokalnej maszynie (python, latex, ...) - ale TeXify to wtyczka github, więc nie musisz niczego instalować na swojej lokalnej maszynie - wystarczy tylko instalacja online, która wtyczkę na swoim koncie github, naciskając jeden przycisk i wybierając repozytoria, dla których TeXify będzie miał dostęp do odczytu / zapisu, aby przeanalizować twoje formuły tex i wygenerować obrazy.
  • Kiedy w repozytorium utworzysz lub zaktualizujesz *.tex.mdplik, TeXify wykryje zmiany i wygeneruje *.mdplik, w którym formuły lateksowe zostaną wymienione na jego obrazy zapisane w texkatalogu w twoim repozytorium. Jeśli więc utworzysz plik README.tex.md, TeXify wygeneruje plik README.md ze zdjęciami zamiast formuł tex. Więc parsowanie formuł tex i generowanie dokumentacji odbywa się automagicznie przy każdym zatwierdzeniu i wypchnięciu :)
  • Ponieważ wszystkie twoje formuły są zamieniane na obrazy w texkatalogu, a plik README.md używa linków do tych obrazków, możesz nawet odinstalować TeXify i cała twoja stara dokumentacja będzie nadal działać :). texKatalogów i *.tex.mdplików pozostanie w repozytorium, więc masz dostęp do swoich oryginalnych wzorach lateksowych i zdjęcia (można również bezpiecznie przechowywać w texkatalogu swoje inne zdjęcia Dokumentacja „wykonane ręcznie” - TeXify ich nie dotykać).
  • Możesz użyć lateksowej składni równań bezpośrednio w pliku README.tex.md (bez utraty składni markdown .md), co jest bardzo przydatne . Julii w swojej odpowiedzi zaproponował użycie specjalnych linków (z formułami) do serwisu zewnętrznego np. http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7Dco jest dobre, ma jednak pewne wady: formuły w linkach nie są łatwe (poręczne) do czytania i aktualizowania, a jeśli wystąpi jakiś problem z usługą innej firmy, Twoja stara dokumentacja przestanie działać ... W TeXify Twoja stara dokumentacja będzie działał zawsze, nawet jeśli odinstalujesz tę wtyczkę (ponieważ wszystkie twoje obrazy wygenerowane z formuł lateksowych pozostają w repozytorium w texkatalogu).
  • Yuchao Jiang w swojej odpowiedzi, proponuje się stosowanie Jupyter notebooka , który jest także miły, jednak mają som wady: nie można bezpośrednio użyć formuły w pliku README.md, trzeba zrobić odnośnik tam inny plik * .ipynb w repo, która zawiera lateks (MathJax) formuły. Plik * .ipynb ma format JSON, który nie jest wygodny w utrzymaniu (np. Gist nie wyświetla szczegółowego błędu z numerem linii w pliku * .ipynb, gdy zapomniałeś wstawić przecinek w odpowiednim miejscu ...).

Oto link do niektórych moich repozytoriów, w których używam TeXify, dla którego dokumentacja została wygenerowana z pliku README.tex.md .


@Royi I don't know
Kamil Kiełczewski

To fajne, ale jak sobie radzisz z tonami nieużywanych śmieciowych obrazów svg w folderze / tex?
Serge P.

@SergeP. usunąć wszystko i pchnąć?
Kamil Kiełczewski

6

Aby uzyskać automatyczną konwersję po wysłaniu do GitHub, spójrz na aplikację TeXify :

Aplikacja GitHub, która wyszukuje w Twoich pushach pliki z rozszerzeniem * .tex.md i renderuje wyrażenia TeX-a jako obrazy SVG

Jak to działa (z repozytorium źródłowego ):

Za każdym razem, gdy naciskasz, TeXify uruchomi się i wyszuka pliki * .tex.md w ostatnim zatwierdzeniu. Dla każdego z nich uruchomi readme2tex, który pobierze wyrażenia LaTeX zawarte między znakami dolara, przekonwertuje je na zwykłe obrazy SVG, a następnie zapisze dane wyjściowe w pliku z rozszerzeniem .md (oznacza to, że plik o nazwie README.tex.md zostaną przetworzone, a dane wyjściowe zostaną zapisane jako README.md). Następnie plik wyjściowy i nowe obrazy SVG są zatwierdzane i przesyłane z powrotem do repozytorium.


1
Ta praca jest autorstwa @agurodriguez, który wspomina o niej w komentarzu powyżej
icc97

1
@ icc97 tak, ale agurodriguez nie utworzy odpowiedzi (i prawdopodobnie nigdy nie zauważę jego komentarza). Ponieważ Tom tworzy odpowiedź (~ 1 rok po agurodriguez), zauważam, że TeXify istnieje i pozwala mi używać TeXify i pisać na tej podstawie własną bazę odpowiedzi . A więc było dobrze :)
Kamil Kiełczewski

3
@ KamilKiełczewski Nie ma nic złego w tej odpowiedzi, wspomnę tylko, że TeXify zostało stworzone przez użytkownika SO z powodu tego wątku, co jest całkiem fajne.
icc97

Używam TeXify w moim pliku readme, ale z jakiegoś powodu renderowanie przeskakuje prawie za każdym razem, gdy $...$w tekście występuje. Jakieś wskazówki, dlaczego? To jest repozytorium: github.com/brunoconteleite/Spatial-Model-Solver
Bruno Conte Leite

3

Moje szybkie rozwiązanie jest następujące:

krok 1. Dodaj lateks do .mdpliku

$$x=\sqrt{2}$$

Uwaga: równania matematyczne muszą być w $$ ... $$ lub \\(... \\).

krok 2. Dodaj poniższy scripts.htmlkod do pliku lub motywu (dołącz ten kod na końcu)

<script type="text/javascript" async

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

Gotowe!. Zobacz swoje eq. ładując stronę.


1
Jaki scripts.htmlplik? Nie mogę znaleźć żadnego odniesienia do tego jako funkcji github.
Jay Lemmon

czy masz plik Jeykyllmotywu ( plik motywu)? Ten kod służy do wyświetlania latexu na stronach git.
CKM

2
Powinienem wyjaśnić, że działa to tylko dla stron git, a nie dla README.md w zwykłym repozytorium.
germanium

1

Możesz otrzymać usługę ciągłej integracji (np. Travis CI ), aby renderować LaTeX i przekazywać wyniki do github. CI będzie wdrażać pracownika „chmury” po każdym nowym zatwierdzeniu. Pracownik kompiluje dokument do formatu PDF i albo wykorzystuje ImageMagick do konwersji go na obraz, albo używa PanDoc do próby konwersji LaTeX-> HTML, gdzie sukces może się różnić w zależności od dokumentu. Pracownik następnie zatwierdza obraz lub html do repozytorium, skąd można go wyświetlić w pliku readme.

Przykładowa konfiguracja TravisCi, która buduje plik PDF, konwertuje go na PNG i zatwierdza w statycznej lokalizacji w repozytorium, jest wklejona poniżej. Trzeba by dodać wiersz, który pobiera plik PDF konwertuje plik PDF na obraz

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

Ta konfiguracja Travis Ci uruchamia pracownika Ubuntu, który pobiera lateksowy obraz dockera, kompiluje dokument do formatu PDF i zatwierdza go w gałęzi o nazwie branchanme-pdf.

Aby uzyskać więcej przykładów, zobacz to repozytorium github i towarzyszącą mu dyskusję sx , przykład PanDoc , https://dfm.io/posts/travis-latex/ oraz ten post na Medium .



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.