Латексна візуалізація в README.md на Github


134

Чи є спосіб вивести LaTex в README.md у сховищі GitHub? Я переглянув його і шукав переповнення стека, але жоден із відповідних відповідей не представляється можливим.


1
Це неможливо безпосередньо. Чи є якась конкретна річ, яка, на вашу думку, потрібна для LaTex? Наприклад, якщо ви хочете математичні рівняння, це може бути виконано з певними хитрощами. Скажіть нам, що ви хочете зробити, і хтось, можливо, зможе вказати вам на вирішення проблеми.
Вейлан

1
Так, я хочу математичні рівняння та вирівняні рівняння, а також вбудовані математичні символи. Це майже все.
user90593



1
Ви думали про використання ноутбуків Юпітера? Ви можете навіть зараз вставити код python;)
Чарлі Паркер,

Відповіді:


42

Для коротких виразів і не настільки вигадливої ​​математики ви можете використовувати вбудований HTML, щоб отримати свою латексну математику на кодових когках, а потім вставити отримане зображення. Ось приклад:

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

Що має спричинити щось подібне до наступного

Оновлення: Це чудово працює в затемненні, але, на жаль, не в github. Єдина робота навколо:

Візьміть рівняння латексу та перейдіть до http://www.codecogs.com/latex/eqneditor.php , внизу області, де відображається ваше рівняння, є крихітне спадне меню, виберіть кодовану URL-адресу та вставте її у свій Відмітка github наступним чином:

![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
Я пропоную використовувати latex.codecogs.com/png.latex замість latex.codecogs.com/gif.latex ; вона повертає зображення кращої якості!
Стеффо

9
ви можете використовувати latex.codecogs.com/svg.latex, роздільна здатність не залежить.
lizardfireman

28

Я завантажую сховища з рівняннями до Gitlab, оскільки він має вбудовану підтримку LaTeX у .md файлах:

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

Синтаксис вбудованого латексу є $`\sqrt{2}`$.

Gitlab надає рівняння з JavaScript у браузері замість показу зображень, що покращує якість рівнянь.

Більше інформації тут .

Будемо сподіватися, що Github це втілить і в майбутньому.


Дивовижний! Дякую за пораду :)
Jonathan H

Чи знаєте ви, чи реалізував це GitHub?
Rylan Schaeffer

22

Мій трюк - використовувати ноутбук Юпітера.

GitHub має вбудовану підтримку для візуалізації файлів .ipynb. Ви можете записати вбудований і відобразити код LaTeX у ноутбук, і GitHub візуалізує його за вас.

Ось зразок файлу ноутбука: https://gist.github.com/cyhsutw/d5983d166fb70ff651f027b2aa56ee4e


21

Readme2Tex

Я працюю над сценарієм, який автоматизує більшу частину виходу, щоб гарненько набрати LaTeX набір з відміткою від Github: https://github.com/leegao/readme2tex

З рендерінгом LaTeX для Github є кілька проблем. По-перше, розмітка з ароматом Github позбавляє більшості тегів та більшості атрибутів. Це означає, що немає бібліотек на основі Javascript (наприклад, Mathjax), а також будь-якого стилю CSS.

Тоді природним рішенням здається вбудовувати зображення попередньо складених рівнянь. Однак незабаром ви зрозумієте, що LaTeX робить більше, ніж просто перетворює формули, вкладені в знак долара, у зображення.

введіть тут опис зображення

Просто вбудовування зображень із онлайн-компіляторів надає вашому документу справді неприродний вигляд. Насправді я б заперечував, що у вашому щоденному x ^ 2 математичному сленгу це навіть читабельніше, ніж стрибаючий .

Я вважаю, що забезпечення того, щоб ваші документи були набрані природним та читабельним способом, є важливим. Ось чому я написав сценарій, який, крім компіляції формул у зображення, також забезпечує правильне розміщення отриманого зображення та вирівнювання до решти тексту.

Наприклад, ось уривок із .mdфайлу щодо деяких перелічувальних властивостей набору регулярних виразів з використанням readme2tex:

введіть тут опис зображення

Як ви могли очікувати, набір рівнянь у верхній частині визначається лише запускаючи відповідне align*середовище

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

Зауважте, що в той час як вбудовані рівняння ($ ... $) працюють з текстом, відображайте рівняння (ті, які обмежені \begin{ENV}...\end{ENV}або$$...$$ ), по центру. Це полегшує людям, які вже звикли до LaTeX, продовжувати бути продуктивними.

Якщо це звучить як щось, що може допомогти, переконайтеся, що це перевірити. https://github.com/leegao/readme2tex


14
На основі цієї роботи я створив додаток GitHub, який автоматизує процес візуалізації, запускаючи його щоразу, коли робиться натиск. Я думаю, що це корисно, тому я ділюсь
agurodriguez

3
Приємно! Це насправді дуже чудово з вас робити :)
Лі,

Додаток TeXify, здається, не працює, якщо включати вбудований mathjax для розмічених елементів.
користувач32882


13

Я тестую якесь рішення, запропоноване іншими, і я хотів би порекомендувати TeXify створений і запропонований у коментарі agurodriguez та далі описаний Томом Хейлом - я хотів би розробити його відповідь і навести деякі причини, чому це дуже хороше рішення:

  • TeXify є обгорткою Readme2Tex (згадка у відповіді Лі ). Для використання Readme2Tex необхідно встановити багато програмного забезпечення на локальній машині (python, latex, ...) - але TeXify - плагін github, тому вам не потрібно нічого встановлювати на локальній машині - вам потрібно лише встановити онлайн, що плагін у вашому обліковому записі github, натиснувши одну кнопку і виберіть сховища, для яких TeXify матиме доступ для читання / запису для розбору ваших текстових формул та створення зображень.
  • Коли у вашому сховищі ви створюєте або оновлюєте *.tex.mdфайл, TeXify виявить зміни та генерує *.mdфайл, де формули латексу будуть обмінюватися його картинками, збереженими в texкаталозі вашого репо. Отже, якщо ви створюєте файл README.tex.md, TeXify генерує README.md із зображеннями, а не текстовими формулами. Таким чином, розбір текстових формул та генерування документації робиться автоматично на кожному фіксації та натисканні :)
  • Оскільки всі ваші формули змінені на зображення у texкаталозі та у файлі README.md, використовуються посилання на ці зображення, ви навіть можете видалити TeXify, і вся ваша стара документація все ще працюватиме :). texКаталог і *.tex.mdфайли будуть залишатися в сховище , так що ви маєте доступ до вихідних латексним формулами і картинок (ви також можете безпечно зберігати в texдиректорії інший вашої документації фотографії «зроблену вручну» - TeXify не буде їх чіпати).
  • Ви можете використовувати синтаксис латексу рівнянь безпосередньо у файлі README.tex.md (не втрачаючи синтаксис розмітки .md), що дуже зручно . У своїй відповіді Джулі запропонував використовувати спеціальні посилання (з формулами) для зовнішньої служби, наприклад. http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7Dщо добре, однак має деякі недоліки: формули у посиланнях непрості (зручні) для читання та оновлення; і якщо виникне якась проблема із стороннім сервісом, ваша стара документація припинить роботу ... У TeXify ваша стара документація буде працювати завжди, навіть якщо ви видалите цей плагін (адже всі ваші зображення, сформовані з формул латексу, знаходяться в texкаталозі репо ).
  • Yuchao Jiang в своїй відповіді, запропонували використовувати Jupyter ноутбук , який також добре , однак , має недоліки сом , ви не можете використовувати формули безпосередньо в README.md файл, вам необхідно зробити посилання там в інший файл * .ipynb в вашому репо , який містить латекс (MathJax) формули. Формат файлу * .ipynb - це JSON, який не є зручним для підтримки (наприклад, Gist не показує детальну помилку з номером рядка у файлі * .ipynb, коли ви забули поставити кому в потрібне місце ...).

Ось посилання на деяку частину мого репо, де я використовую TeXify, для якого документація була створена з файлу README.tex.md .


@Royi Я не знаю
Kamil Kiełczewski

Приємно, але як ви маєте справу з тоннами невикористаних SVG зображень у папці / tex?
Серж П.

@SergeP. сповістити всіх і натиснути?
Kamil Kiełczewski

6

Для автоматичного перетворення після натискання на GitHub, подивіться на додаток TeXify :

Додаток GitHub, який шукає файли з розширенням * .tex.md і надає виразів TeX у вигляді SVG-зображень

Як це працює (із сховища джерел ):

Кожного разу, коли ви натискаєте, TeXify запускатиме та шукатиме файли * .tex.md в останньому фіксації. Для кожного з них він буде запускати readme2tex, який буде приймати вирази LaTeX, укладені між знаками долара, перетворювати їх у звичайні SVG-зображення, а потім зберігати вихід у .md-файл розширення (Це означає, що файл під назвою README.tex.md буде оброблено, а вихід буде збережено як README.md). Після цього вихідний файл та нові SVG-зображення потім фіксуються та повертаються до вашого репо.


1
Цю роботу написав @agurodriguez, який згадує її у коментарі вище
icc97

1
@ icc97 так, але agurodriguez не створює відповіді (і я, мабуть, ніколи не помічу його коментаря). Оскільки Том створює відповідь (~ 1 рік після agurodriguez), я помічаю, що TeXify існує, і це дозволяє мені використовувати TeXify і писати власну базу відповідей на це. Так було добре :)
Kamil Kiełczewski

3
@ KamilKiełczewski У цій відповіді немає нічого поганого, я лише зазначу, що TeXify був створений користувачем SO через цю нитку, яка досить класна.
icc97

Я використовую TeXify у своєму режимі readme, але, з якоїсь причини, візуалізація стрибає рядки майже кожного разу, коли є $...$текст. Будь-які підказки чому? Це репортаж
Bruno Conte Leite

3

Моє швидке рішення:

крок 1. Додати латекс у свій .mdфайл

$$x=\sqrt{2}$$

Примітка: математичні еквіваленти повинні бути в $$ ... $$ або \\(... \\).

крок 2. Додайте до scripts.htmlфайлу чи теми теми (додайте цей код наприкінці)

<script type="text/javascript" async

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

Готово !. Дивіться свій еквівалент. завантаживши сторінку.


1
Який scripts.htmlфайл? Я не можу знайти посилання на це як на функцію github.
Джей Леммон

у вас є файл Jeykyllтеми ( файл теми)? Цей код призначений для відображення латексу на сторінках git.
CKM

2
Слід уточнити, що це працює лише для сторінок git, а не для README.md у звичайному репо.
германій

1

Ви можете отримати послугу безперервної інтеграції (наприклад, Travis CI ) для надання LaTeX та надання результатів github. CI буде розгортати "хмарного" працівника після кожного нового вчинення. Працівник компілює ваш документ у pdf і або обробляє ImageMagick, щоб перетворити його у зображення, або використовує PanDoc для спроби перетворення LaTeX-> HTML, де успіх може змінюватися залежно від вашого документа. Потім працівник передає зображення або html у ваше сховище, звідки це може бути показано у вашій програмі readme.

Зразок конфігурації TravisCi, який створює PDF, перетворює його в PNG і вводить його в статичне місце у вашому репо, вставляється нижче. Вам потрібно буде додати рядок, який отримує pdfконвертувати PDF у зображення

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

Ця конфігурація Travis Ci запускає робочий Ubuntu, завантажує зображення докера латексу, збирає ваш документ у pdf та передає його у відділення, яке називається branchanme-pdf.

Для отримання додаткових прикладів див. Це github repo та супутню його sx дискусію , приклад PanDoc , https://dfm.io/posts/travis-latex/ та цю публікацію на Medium .



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.