Kết xuất latex trong README.md trên Github


132

Có cách nào để kết xuất LaTex trong README.md trong kho GitHub không? Tôi đã googled nó và tìm kiếm trên stack stack nhưng không có câu trả lời liên quan nào có vẻ khả thi.


1
Nó không thể trực tiếp. Có một số điều cụ thể mà bạn nghĩ rằng bạn cần LaTex cho? Ví dụ, nếu bạn muốn các phương trình toán học, điều đó có thể thực hiện được với một số thủ thuật cụ thể. Hãy cho chúng tôi những gì bạn muốn kết xuất và ai đó có thể chỉ cho bạn một cách giải quyết.
Waylan

1
Có, tôi muốn các phương trình toán học và phương trình liên kết, cùng với các ký hiệu toán học nội tuyến. Nó khá là nhiều.
dùng90593



1
Bạn đã cân nhắc sử dụng máy tính xách tay Jupyter chưa? Bạn thậm chí có thể chèn mã python ngay bây giờ;)
Charlie Parker

Câu trả lời:


42

Đối với các ngoại lệ ngắn và toán học không quá hấp dẫn, bạn có thể sử dụng HTML nội tuyến để đưa toán học kết xuất latex của bạn vào codecogs và sau đó nhúng hình ảnh kết quả. Dưới đây là một ví dụ:

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

Mà sẽ dẫn đến một cái gì đó như tiếp theo

Cập nhật: Điều này hoạt động tuyệt vời trong nhật thực nhưng không may trong github. Công việc duy nhất xung quanh là việc tiếp theo:

Lấy phương trình latex của bạn và truy cập http://www.codecogs.com/latex/eqneditor.php , ở dưới cùng của khu vực nơi phương trình của bạn xuất hiện, có một menu thả xuống nhỏ, chọn URL được mã hóa và sau đó dán nó vào đánh dấu github theo cách tiếp theo:

![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
Tôi đề nghị sử dụng latex.codecogs.com/png.latex thay vì latex.codecogs.com/gif.latex ; Nó trả về hình ảnh chất lượng tốt hơn!
Steffo

9
bạn có thể sử dụng latex.codecogs.com/svg.latex, nó có độ phân giải độc lập.
lizardfireman

28

Tôi tải lên các kho lưu trữ với các phương trình lên Gitlab vì nó có hỗ trợ riêng cho LaTeX trong các tệp .md:

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

Cú pháp cho latex nội tuyến là $`\sqrt{2}`$.

Gitlab biểu hiện các phương trình với JavaScript trong trình duyệt thay vì hiển thị hình ảnh, giúp cải thiện chất lượng của phương trình.

Thêm thông tin ở đây .

Hãy hy vọng Github sẽ thực hiện điều này trong tương lai.


Kinh ngạc! Cảm ơn vì tiền boa :)
Jonathan H

Bạn có biết liệu GitHub đã thực hiện điều này?
Rylan Schaeffer

21

Readme2Tex

Tôi đã làm việc với một kịch bản tự động hóa hầu hết các hành trình ra khỏi việc lấy các kiểu LaTeX độc đáo thành đánh dấu hương vị Github: https://github.com/leegao/readme2tex

Có một vài thử thách với việc kết xuất LaTeX cho Github. Đầu tiên, markdown có hương vị Github loại bỏ hầu hết các thẻ và hầu hết các thuộc tính. Điều này có nghĩa là không có thư viện dựa trên Javascript (như Mathjax) cũng như bất kỳ kiểu CSS nào.

Các giải pháp tự nhiên sau đó dường như là nhúng hình ảnh của các phương trình được biên dịch trước. Tuy nhiên, bạn sẽ sớm nhận ra rằng LaTeX không chỉ làm việc biến các công thức kèm theo ký hiệu đô la thành hình ảnh.

nhập mô tả hình ảnh ở đây

Chỉ cần nhúng hình ảnh từ trình biên dịch trực tuyến sẽ mang lại cái nhìn thực sự không tự nhiên này cho tài liệu của bạn. Trên thực tế, tôi sẽ lập luận rằng nó thậm chí còn dễ đọc hơn trong tiếng lóng toán học x ^ 2 hàng ngày của bạn hơn là giật gân .

Tôi tin rằng việc đảm bảo rằng các tài liệu của bạn được sắp chữ theo cách tự nhiên và dễ đọc là rất quan trọng. Đây là lý do tại sao tôi đã viết một tập lệnh, ngoài việc biên dịch các công thức thành hình ảnh, còn đảm bảo rằng hình ảnh thu được được khớp đúng và được căn chỉnh với phần còn lại của văn bản.

Ví dụ, đây là một đoạn trích từ một .mdtệp liên quan đến một số thuộc tính liệt kê của kiểu sắp xếp biểu thức thông thường bằng cách sử dụng readme2tex:

nhập mô tả hình ảnh ở đây

Như bạn có thể mong đợi, tập hợp các phương trình ở trên cùng được chỉ định bằng cách chỉ bắt đầu align*môi trường tương ứng

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

Lưu ý rằng trong khi các phương trình nội tuyến ($ ... $) chạy với văn bản, các phương trình hiển thị (những phương trình được phân định bởi \begin{ENV}...\end{ENV}hoặc $$...$$) được căn giữa. Điều này giúp những người đã quen với LaTeX dễ dàng tiếp tục làm việc hiệu quả.

Nếu điều này nghe có vẻ như có thể giúp đỡ, hãy chắc chắn kiểm tra nó. https://github.com/leegao/readme2tex


14
Dựa trên công việc này, tôi đã tạo một ứng dụng GitHub tự động hóa quá trình kết xuất, kích hoạt nó mỗi khi thực hiện thao tác đẩy. Tôi nghĩ nó hữu ích vì vậy tôi chia sẻ liên kết cho những ai muốn dùng thử: github.com/agurz/github-texify
agurodriguez

3
Đẹp! Điều đó thực sự rất tuyệt vời đối với bạn để làm :)
Lee

Ứng dụng TeXify dường như không hoạt động khi bao gồm mathjax nội tuyến cho các mục liệt kê đánh dấu.
dùng32882


15

Người ta cũng có thể sử dụng trình chỉnh sửa trực tuyến này: https://www.codecogs.com/latex/eqneditor.php để tạo SVGcác tệp khi đang di chuyển. Bạn có thể đặt một liên kết trong tài liệu của bạn như thế này: ![](https://latex.codecogs.com/svg.latex?y%3Dx%5E2)kết quả là : .


13

Tôi thử nghiệm một số giải pháp được đề xuất bởi những người khác và tôi muốn đề xuất TeXify được tạo và đề xuất trong nhận xét của agurodriguez và được mô tả thêm bởi Tom Hale - Tôi muốn phát triển câu trả lời của anh ấy và đưa ra một số lý do tại sao đây là giải pháp rất tốt:

  • TeXify là trình bao bọc của Readme2Tex (đề cập trong câu trả lời của Lee ). Để sử dụng Readme2Tex, bạn phải cài đặt rất nhiều phần mềm trong máy cục bộ của mình (python, latex, ...) - nhưng TeXify là plugin github nên bạn không cần cài đặt bất cứ thứ gì trong máy cục bộ của mình - bạn chỉ cần cài đặt trực tuyến plugin trong tài khoản github của bạn bằng cách nhấn một nút và chọn kho lưu trữ mà TeXify sẽ có quyền truy cập đọc / ghi để phân tích công thức tex của bạn và tạo hình ảnh.
  • Khi trong kho lưu trữ của bạn, bạn tạo hoặc cập nhật *.tex.mdtệp, TeXify sẽ phát hiện các thay đổi và tạo *.mdtệp trong đó các công thức latex sẽ được trao đổi bằng các hình ảnh được lưu trong texthư mục trong repo của bạn. Vì vậy, nếu bạn tạo tệp README.tex.md thì TeXify sẽ tạo README.md bằng hình ảnh thay vì công thức tex. Vì vậy, phân tích công thức tex và tạo tài liệu được thực hiện tự động trên mỗi cam kết & đẩy :)
  • Vì tất cả các công thức của bạn được thay đổi thành hình ảnh trong texthư mục và tệp README.md sử dụng liên kết đến hình ảnh đó, bạn thậm chí có thể gỡ cài đặt TeXify và tất cả tài liệu cũ của bạn sẽ vẫn hoạt động :). Thư mục tex*.tex.mdtệp sẽ nằm trên kho lưu trữ để bạn có quyền truy cập vào các công thức và hình ảnh latex ban đầu của mình (bạn cũng có thể lưu trữ an toàn trong texthư mục các hình ảnh tài liệu khác của bạn "được làm bằng tay" - TeXify sẽ không chạm vào chúng).
  • Bạn có thể sử dụng cú pháp latex phương trình trực tiếp trong tệp README.tex.md (không mất cú pháp đánh dấu .md) rất tiện dụng . Julii trong câu trả lời của mình đề xuất sử dụng các liên kết đặc biệt (có công thức) với dịch vụ bên ngoài, vd. http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7DTuy nhiên, điều này cũng có một số nhược điểm: các công thức trong liên kết không dễ đọc (tiện dụng) và nếu có vấn đề với dịch vụ bên thứ ba đó, tài liệu cũ của bạn sẽ ngừng hoạt động ... Trong TeXify tài liệu cũ của bạn sẽ luôn hoạt động ngay cả khi bạn gỡ cài đặt plugin đó (vì tất cả các hình ảnh của bạn được tạo từ các công thức latex đều nằm trong repo trong texthư mục).
  • Các Yuchao Giang trong câu trả lời của mình, đề nghị sử dụng Jupyter Máy tính xách tay mà cũng là tốt đẹp tuy nhiên có nhược điểm som: bạn không thể sử dụng công thức trực tiếp trong tập tin README.md, bạn cần phải thực hiện liên kết đó để tập tin khác * .ipynb trong repo của bạn, trong đó có mủ (MathJax) công thức. Định dạng tệp * .ipynb là JSON không tiện dụng để duy trì (ví dụ: Gist không hiển thị lỗi chi tiết với số dòng trong tệp * .ipynb khi bạn quên đặt dấu phẩy ở vị trí thích hợp ...).

Đây là liên kết đến một số repo của tôi nơi tôi sử dụng TeXify cho tài liệu nào được tạo từ tệp README.tex.md .


@Royi Tôi không biết
Kamil Kiełczewski

Thật tuyệt nhưng làm thế nào để bạn đối phó với hàng tấn hình ảnh svg rác chưa sử dụng trong thư mục / tex?
Serge P.

@SergeP. delate tất cả và đẩy?
Kamil Kiełczewski

6

Để chuyển đổi tự động khi đẩy sang GitHub, hãy xem ứng dụng TeXify :

Ứng dụng GitHub tìm kiếm các tệp có phần mở rộng * .tex.md và hiển thị biểu thức TeX của nó dưới dạng hình ảnh SVG

Cách thức hoạt động (từ kho lưu trữ nguồn ):

Bất cứ khi nào bạn đẩy TeXify sẽ chạy và tìm kiếm các tệp * .tex.md trong lần xác nhận cuối cùng của bạn. Đối với mỗi một trong số đó, nó sẽ chạy readme2tex, sẽ lấy các biểu thức LaTeX được đặt giữa các ký hiệu đô la, chuyển đổi nó thành hình ảnh SVG đơn giản, sau đó lưu đầu ra vào tệp mở rộng .md (Điều đó có nghĩa là một tệp có tên README.tex.md sẽ được xử lý và đầu ra sẽ được lưu dưới dạng README.md). Sau đó, tệp đầu ra và hình ảnh SVG mới sau đó được cam kết và đẩy trở lại repo của bạn.


1
Tác phẩm này là của @agurodriguez, người đã đề cập đến nó trong một bình luận ở trên
icc97

1
@ icc97 có, nhưng agurodriguez không tạo ra câu trả lời (và tôi có thể sẽ không bao giờ nhận thấy bình luận của anh ấy). Bởi vì Tom tạo câu trả lời (~ 1 năm sau khi agurodriguez) Tôi nhận thấy rằng TeXify tồn tại và nó cho phép tôi sử dụng TeXify và viết câu trả lời của riêng tôi dựa trên điều này. Vậy là tốt rồi :)
Kamil Kiełczewski

3
@ KamilKiełczewski Không có gì sai với câu trả lời này, tôi chỉ đề cập rằng TeXify được tạo bởi một người dùng SO vì chủ đề này, nó khá tuyệt.
icc97

Tôi đang sử dụng TeXify trên readme của mình, nhưng vì một số lý do, kết xuất đang nhảy các dòng gần như mỗi khi có một $...$văn bản. Có manh mối nào không? Đây là repo: github.com/brunoconteleite/Spatial-Model-Solver
Bruno Conte Leite

3

Giải pháp nhanh chóng của tôi là:

Bước 1. Thêm latex vào .mdtập tin của bạn

$$x=\sqrt{2}$$

Lưu ý: các eqns toán học phải ở $$ ... $$ hoặc \\(... \\).

bước 2. Thêm phần sau vào scripts.htmltệp hoặc chủ đề của bạn (nối thêm mã này vào cuối)

<script type="text/javascript" async

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

Làm xong!. Xem eq của bạn. bằng cách tải trang.


1
Có gì scripts.htmltập tin? Tôi không thể tìm thấy bất kỳ tài liệu tham khảo nào về điều này như là một tính năng của github.
Jay Lemmon

Bạn có tập tin Jeykyllchủ đề ( tập tin chủ đề)? Mã này là để hiển thị latex trong các trang git.
CKM

2
Nên làm rõ rằng điều này chỉ hoạt động cho các trang git, không phải cho README.md trong repo thông thường.
Germanium

1

Bạn có thể nhận một dịch vụ tích hợp liên tục (ví dụ Travis CI ) để kết xuất LaTeX và cam kết kết quả với github. CI sẽ triển khai một nhân viên "đám mây" sau mỗi lần xác nhận mới. Công nhân biên dịch tài liệu của bạn thành pdf và từ chối ImageMagick để chuyển đổi nó thành hình ảnh hoặc sử dụng PanDoc để thử chuyển đổi LaTeX-> HTML trong đó thành công có thể thay đổi tùy thuộc vào tài liệu của bạn. Worker sau đó cam kết hình ảnh hoặc html vào kho lưu trữ của bạn từ đó nó có thể được hiển thị trong readme của bạn.

Cấu hình TravisCi mẫu xây dựng tệp PDF, chuyển đổi nó thành PNG và cam kết nó thành một vị trí tĩnh trong repo của bạn được dán bên dưới. Bạn sẽ cần thêm một dòng tìm nạp pdfconifts PDF thành hình ảnh

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

Cấu hình Travis Ci này khởi chạy một nhân viên Ubuntu tải xuống hình ảnh docker latex, biên dịch tài liệu của bạn thành pdf và cam kết nó với một nhánh có tên là Branchanme-pdf.

Để biết thêm ví dụ, hãy xem repo github nàythảo luận sx đi kèm , ví dụ PanDoc , https://dfm.io/posts/travis-latex/bài đăng này trên Medium .



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.