Render lateks dalam README.md di Github


134

Apakah ada cara untuk membuat LaTex di README.md dalam repositori GitHub? Saya sudah googled dan mencari di stack overflow tetapi tidak ada jawaban terkait yang tampaknya layak.


1
Itu tidak mungkin secara langsung. Adakah hal khusus yang Anda pikir Anda perlukan untuk LaTex? Misalnya, jika Anda ingin persamaan matematika, itu bisa dilakukan dengan beberapa trik tertentu. Beri tahu kami apa yang ingin Anda render, dan seseorang mungkin bisa mengarahkan Anda ke solusi.
Waylan

1
Ya, saya ingin persamaan matematika dan persamaan disejajarkan, bersama dengan simbol matematika inline. Cukup banyak.
user90593



1
sudahkah Anda mempertimbangkan untuk menggunakan notebook Jupyter? Anda bahkan dapat memasukkan kode python sekarang;)
Charlie Parker

Jawaban:


42

Untuk ekspresi pendek dan matematika yang tidak terlalu bagus, Anda bisa menggunakan HTML sebaris untuk mendapatkan matematika yang diberikan lateks pada codecogs dan kemudian menyematkan gambar yang dihasilkan. Berikut sebuah contoh:

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

Yang seharusnya menghasilkan sesuatu seperti yang berikutnya

Pembaruan: Ini bekerja sangat baik di gerhana tetapi sayangnya tidak di github. Satu-satunya pekerjaan di sekitar adalah yang berikutnya:

Ambil persamaan lateks Anda dan buka http://www.codecogs.com/latex/eqneditor.php , di bagian bawah area tempat persamaan Anda ditampilkan, ada menu dropdown kecil, pilih URL yang dienkode, lalu tempelkan di penurunan harga github dengan cara berikut:

![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
Saya sarankan menggunakan latex.codecogs.com/png.latex alih-alih latex.codecogs.com/gif.latex ; ini mengembalikan gambar kualitas yang lebih baik!
Steffo

9
Anda dapat menggunakan latex.codecogs.com/svg.latex, resolusinya independen.
lizardfireman

28

Saya mengunggah repositori dengan persamaan ke Gitlab karena memiliki dukungan asli untuk LaTeX dalam file .md:

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

Sintaks untuk lateks inline adalah $`\sqrt{2}`$.

Gitlab membuat persamaan dengan JavaScript di browser alih-alih menunjukkan gambar, yang meningkatkan kualitas persamaan.

Info lebih lanjut di sini .

Mari berharap Github akan mengimplementasikan ini juga di masa depan.


Luar biasa! Terima kasih atas tipnya :)
Jonathan H

Apakah Anda tahu apakah GitHub telah menerapkan ini?
Rylan Schaeffer


21

Readme2Tex

Saya telah mengerjakan skrip yang mengotomatiskan sebagian besar kesalahan mendapatkan LaTeX typeset dengan baik ke dalam penurunan harga Github: https://github.com/leegao/readme2tex

Ada beberapa tantangan dengan rendering LaTeX untuk Github. Pertama, markdown rasa Github menghapus sebagian besar tag dan sebagian besar atribut. Ini berarti tidak ada pustaka berbasis Javascript (seperti Mathjax) atau gaya CSS.

Solusi alami kemudian tampaknya menanamkan gambar dari persamaan yang telah dikompilasi. Namun, Anda akan segera menyadari bahwa LaTeX melakukan lebih dari sekedar mengubah formula terlampir tanda dolar menjadi gambar.

masukkan deskripsi gambar di sini

Cukup menyematkan gambar dari kompiler online memberikan tampilan yang benar-benar tidak alami ini ke dokumen Anda. Bahkan, saya berpendapat bahwa itu bahkan lebih mudah dibaca dalam bahasa sehari-hari x ^ 2 matematika Anda daripada gelisah .

Saya percaya bahwa memastikan bahwa dokumen Anda diketik dengan cara yang alami dan mudah dibaca adalah penting. Inilah sebabnya saya menulis sebuah skrip yang, di luar mengkompilasi rumus menjadi gambar, juga memastikan bahwa gambar yang dihasilkan dipasang dengan benar dan disejajarkan dengan teks lainnya.

Sebagai contoh, berikut adalah kutipan dari .mdfile yang berkaitan dengan beberapa properti enumerative dari ekspresi reguler menggunakan setet readme2tex:

masukkan deskripsi gambar di sini

Seperti yang Anda harapkan, himpunan persamaan di atas ditentukan dengan hanya memulai align*lingkungan yang sesuai

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

Perhatikan bahwa sementara persamaan sebaris ($ ... $) dijalankan dengan teks, persamaan tampilan (yang dibatasi oleh \begin{ENV}...\end{ENV}atau $$...$$) dipusatkan. Ini memudahkan orang yang sudah terbiasa dengan LaTeX untuk tetap produktif.

Jika ini terdengar seperti sesuatu yang bisa membantu, pastikan untuk memeriksanya. https://github.com/leegao/readme2tex


14
Berdasarkan karya ini saya telah membuat aplikasi GitHub yang mengotomatiskan proses rendering, memicu setiap kali dorongan dibuat. Saya pikir ini berguna jadi saya membagikan tautan untuk mereka yang ingin mencobanya: github.com/agurz/github-texify
agurodriguez

3
Bagus! Itu sebenarnya sangat luar biasa untuk Anda lakukan :)
Lee

Aplikasi TeXify tampaknya tidak berfungsi ketika menyertakan inline mathjax untuk penurunan harga item yang disebutkan.
user32882


13

Saya menguji beberapa solusi yang diusulkan oleh orang lain dan saya ingin merekomendasikan TeXify dibuat dan diusulkan dalam komentar oleh agurodriguez dan dijelaskan lebih lanjut oleh Tom Hale - Saya ingin mengembangkan jawabannya dan memberikan beberapa alasan mengapa ini adalah solusi yang sangat baik:

  • TeXify adalah pembungkus Readme2Tex (disebutkan dalam jawaban Lee ). Untuk menggunakan Readme2Tex Anda harus menginstal banyak perangkat lunak di mesin lokal Anda (python, lateks, ...) - tetapi TeXify adalah plugin github sehingga Anda tidak perlu menginstal apa pun di mesin lokal Anda - Anda hanya perlu menginstal secara online yang plugin di akun github Anda dengan menekan satu tombol dan memilih repositori yang TeXify akan memiliki akses baca / tulis untuk mem-parsing rumus tex Anda dan menghasilkan gambar.
  • Ketika di repositori Anda membuat atau memperbarui *.tex.mdfile, TeXify akan mendeteksi perubahan dan menghasilkan *.mdfile tempat formula lateks akan ditukar dengan gambar-gambarnya yang disimpan dalam texdirektori di repo Anda. Jadi jika Anda membuat file README.tex.md maka TeXify akan menghasilkan README.md dengan gambar, bukan rumus tex. Jadi parsing rumus tex dan menghasilkan dokumentasi dilakukan secara otomatis pada setiap commit & push :)
  • Karena semua rumus Anda diubah menjadi gambar dalam texdirektori dan file README.md menggunakan tautan ke gambar itu, Anda bahkan dapat menghapus instalasi TeXify dan semua dokumentasi lama Anda masih akan bekerja :). The texdirektori dan *.tex.mdfile akan tetap di repositori sehingga Anda memiliki akses ke formula lateks asli Anda dan gambar (Anda juga dapat dengan aman menyimpan di texdirektori gambar dokumentasi lainnya Anda "dibuat dengan tangan" - TeXify tidak akan menyentuh mereka).
  • Anda dapat menggunakan sintaks persamaan lateks secara langsung dalam file README.tex.md (tanpa kehilangan sintaks markdown .md) yang sangat berguna . Julii dalam jawabannya mengusulkan untuk menggunakan tautan khusus (dengan formula) ke layanan eksternal misalnya. http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7Dyang bagus namun memiliki beberapa kelemahan: rumus dalam tautan tidak mudah (praktis) untuk dibaca dan diperbarui, dan jika akan ada beberapa masalah dengan layanan pihak ketiga, dokumentasi lama Anda akan berhenti berfungsi ... Di TeXify dokumentasi lama Anda akan berfungsi selalu meskipun Anda menghapus plugin itu (karena semua gambar Anda yang dihasilkan dari rumus lateks tetap berada dalam texdirektori repo ).
  • The Yuchao Jiang dalam jawabannya, diusulkan untuk menggunakan Jupyter Notebook yang juga bagus namun memiliki kelemahan som: Anda tidak dapat menggunakan rumus langsung dalam file README.md, Anda perlu membuat link yang ada untuk file lain * .ipynb di repo Anda yang berisi lateks Rumus (MathJax). Format file * .ipynb adalah JSON yang tidak mudah dikelola (mis. Gist tidak menampilkan kesalahan terperinci dengan nomor baris dalam file * .ipynb ketika Anda lupa meletakkan koma di tempat yang tepat ...).

Berikut ini tautan ke beberapa repo saya tempat saya menggunakan TeXify yang dokumentasinya dihasilkan dari file README.tex.md .


@Royi Saya tidak tahu
Kamil Kiełczewski

Sangat menyenangkan tetapi bagaimana Anda menangani banyak gambar sampah svg yang tidak terpakai di folder / tex?
Serge P.

@SergeP. hapus semua dan dorong?
Kamil Kiełczewski

6

Untuk konversi otomatis saat didorong ke GitHub, lihat aplikasi TeXify :

Aplikasi GitHub yang terlihat dalam dorongan Anda untuk file dengan ekstensi * .tex.md dan menjadikannya ekspresi TeX sebagai gambar SVG

Cara kerjanya (dari repositori sumber ):

Setiap kali Anda menekan TeXify akan berjalan dan mencari file * .tex.md di komit terakhir Anda. Untuk masing-masing dari mereka itu akan menjalankan readme2tex yang akan membawa ekspresi LaTeX terlampir di antara tanda-tanda dolar, mengubahnya menjadi gambar SVG biasa, dan kemudian menyimpan output menjadi file ekstensi .md (Itu berarti bahwa file bernama README.tex.md akan diproses dan hasilnya akan disimpan sebagai README.md). Setelah itu, file output dan gambar SVG baru kemudian dikomit dan didorong kembali ke repo Anda.


1
Karya ini oleh @agurodriguez yang menyebutkannya dalam komentar di atas
icc97

1
@ icc97 ya, tapi agurodriguez tidak membuat jawaban (dan saya mungkin tidak akan pernah memperhatikan komentarnya). Karena Tom membuat jawaban (~ 1 tahun setelah agurodriguez) saya perhatikan bahwa TeXify ada dan memungkinkan saya untuk menggunakan TeXify dan menulis jawaban berdasarkan saya sendiri di sini. Jadi itu bagus :)
Kamil Kiełczewski

3
@ KamilKiełczewski Tidak ada yang salah dengan jawaban ini, saya hanya menyebutkan bahwa TeXify dibuat oleh pengguna SO karena utas ini, yang sangat keren.
icc97

Saya menggunakan TeXify pada readme saya tetapi, untuk beberapa alasan, renderingnya adalah lompatan garis hampir setiap kali di mana ada $...$dalam teks. Ada petunjuk mengapa? Ini adalah repo: github.com/brunoconteleite/Spatial-Model-Solver
Bruno Conte Leite

3

Solusi cepat saya adalah ini:

langkah 1. Tambahkan lateks ke .mdfile Anda

$$x=\sqrt{2}$$

Catatan: persamaan matematika harus dalam $$ ... $$ atau \\(... \\).

langkah 2. Tambahkan berikut ini ke scripts.htmlfile tema atau Anda (tambahkan kode ini di akhir)

<script type="text/javascript" async

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

Selesai !. Lihat persamaan Anda. dengan memuat halaman.


1
scripts.htmlFile apa ? Saya tidak dapat menemukan referensi untuk ini sebagai fitur github.
Jay Lemmon

apakah Anda memiliki file Jeykylltema ( file tema)? Kode ini untuk menampilkan lateks di halaman git.
CKM

2
Harus menjelaskan bahwa ini hanya berfungsi untuk halaman git, bukan untuk README.md dalam repo reguler.
germanium

1

Anda bisa mendapatkan layanan integrasi berkelanjutan (mis. Travis CI ) untuk merender LaTeX dan memberikan hasil ke github. CI akan mempekerjakan pekerja "cloud" setelah setiap komit baru. Pekerja mengkompilasi dokumen Anda ke pdf dan menggunakan ImageMagick untuk mengubahnya menjadi gambar atau menggunakan PanDoc untuk mencoba LaTeX-> konversi HTML di mana keberhasilan dapat bervariasi tergantung pada dokumen Anda. Pekerja kemudian melakukan gambar atau html ke repositori Anda dari tempat itu dapat ditampilkan di readme Anda.

Contoh konfigurasi TravisCi yang membangun PDF, mengonversinya menjadi PNG, dan mengkomitnya ke lokasi statis di repo Anda ditempel di bawah. Anda perlu menambahkan baris yang mengambil pdfconverts PDF ke gambar

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

Konfigurasi Travis Ci ini meluncurkan pekerja Ubuntu yang mengunduh gambar buruh pelabuhan lateks, mengkompilasi dokumen Anda ke pdf dan mengirimkannya ke cabang bernama branchanme-pdf.

Untuk lebih banyak contoh lihat repo github ini dan diskusi sx yang menyertainya , contoh PanDoc , https://dfm.io/posts/travis-latex/ , dan postingan ini di Medium .



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.