Renderização de látex no README.md no Github


134

Existe alguma maneira de renderizar o LaTex em README.md em um repositório GitHub? Eu pesquisei no Google e procurei no estouro de pilha, mas nenhuma das respostas relacionadas parece viável.


1
Não é possível diretamente. Existe alguma coisa específica para a qual você acha que precisa do LaTex? Por exemplo, se você quiser equações matemáticas, isso pode ser possível com alguns truques específicos. Diga-nos o que você deseja renderizar e alguém poderá indicar uma solução alternativa.
Waylan

1
Sim, eu quero equações matemáticas e equações alinhadas, junto com símbolos matemáticos embutidos. É praticamente isso.
user90593



1
você já pensou em usar os notebooks Jupyter? Você pode até mesmo inserir código python agora;)
Charlie Parker

Respostas:


42

Para expressões curtas e matemática não tão sofisticada, você pode usar o HTML embutido para obter a matemática renderizada do látex nos codecogs e incorporar a imagem resultante. Aqui está um exemplo:

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

O que deve resultar em algo como o próximo

Atualização: Isso funciona muito bem no eclipse, mas não no github, infelizmente. A única solução é a seguinte:

Pegue sua equação do látex e vá para http://www.codecogs.com/latex/eqneditor.php , na parte inferior da área em que sua equação aparece exibida, há um pequeno menu suspenso, escolha o URL codificado e cole-o no seu markdown do github da seguinte maneira:

![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
Sugiro usar latex.codecogs.com/png.latex em vez de latex.codecogs.com/gif.latex ; retorna imagens de melhor qualidade!
Steffo 03/04/19

9
você pode usar latex.codecogs.com/svg.latex, independente da resolução.
Lizardfireman

28

Carrego repositórios com equações no Gitlab porque ele possui suporte nativo para o LaTeX em arquivos .md:

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

A sintaxe para o látex embutido é $`\sqrt{2}`$.

O Gitlab renderiza equações com JavaScript no navegador em vez de mostrar imagens, o que melhora a qualidade das equações.

Mais informações aqui .

Espero que o Github também implemente isso no futuro.


Surpreendente! Obrigado pela dica :)
Jonathan H

Você sabe se o GitHub implementou isso?
Rylan Schaeffer


21

Readme2Tex

Eu tenho trabalhado em um script que automatiza a maior parte do problema de obter o LaTeX tipicamente para uma remarcação com sabor do Github: https://github.com/leegao/readme2tex

Existem alguns desafios com a renderização do LaTeX for Github. Primeiro, a remarcação com sabor do Github retira a maioria das tags e mais atributos. Isso significa que não há bibliotecas baseadas em Javascript (como Mathjax) nem estilo CSS.

A solução natural parece então incorporar imagens de equações pré-compiladas. No entanto, você logo perceberá que o LaTeX faz mais do que transformar fórmulas fechadas com cifrão em imagens.

insira a descrição da imagem aqui

Simplesmente incorporar imagens de compiladores on-line dá uma aparência realmente não natural ao seu documento. Na verdade, eu diria que é ainda mais legível na sua gíria matemática x ^ 2 todos os dias do que nervosa .

Acredito que é importante garantir que seus documentos sejam digitados de maneira natural e legível. Foi por isso que escrevi um script que, além de compilar fórmulas em imagens, também garante que a imagem resultante seja devidamente ajustada e alinhada ao restante do texto.

Por exemplo, aqui está um trecho de um .mdarquivo referente a algumas propriedades enumerativas das expressões regulares digitadas usando readme2tex:

insira a descrição da imagem aqui

Como você pode esperar, o conjunto de equações na parte superior é especificado apenas iniciando o align*ambiente correspondente

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

Observe que, embora as equações em linha ($ ... $) sejam executadas com o texto, exiba as equações (aquelas delimitadas por \begin{ENV}...\end{ENV} ou$$...$$ ) são centralizadas. Isso facilita para as pessoas que já estão acostumadas ao LaTeX continuarem sendo produtivas.

Se isso parece algo que poderia ajudar, não deixe de conferir. https://github.com/leegao/readme2tex


14
Com base neste trabalho, criei um aplicativo GitHub que automatiza o processo de renderização, acionando-o toda vez que um push é feito. Eu acho que é útil para que eu compartilhar o link para quem quiser experimentá-lo: github.com/agurz/github-texify
agurodriguez

3
Agradável! Isso é realmente muito incrível de você fazer :)
Lee

O aplicativo TeXify parece não funcionar ao incluir mathjax embutido para itens enumerados de redução.
user32882


13

Eu testei alguma solução proposta por outros e gostaria de recomendar o TeXify criado e proposto em comentário por agurodriguez e descrito mais detalhadamente por Tom Hale - gostaria de desenvolver sua resposta e de alguma razão para que essa seja uma solução muito boa:

  • O TeXify é um invólucro do Readme2Tex (mencionado na resposta de Lee ). Para usar o Readme2Tex, você deve instalar muitos softwares em sua máquina local (python, látex, ...) - mas o TeXify é um plug-in do github para que você não precise instalar nada na sua máquina local - você só precisa de uma instalação online que plug-in na sua conta do github pressionando um botão e escolha repositórios para os quais o TeXify terá acesso de leitura / gravação para analisar suas fórmulas tex e gerar imagens.
  • Quando você cria ou atualiza um *.tex.mdarquivo no seu repositório , o TeXify detecta alterações e gera *.mdarquivos onde as fórmulas de látex serão trocadas por suas imagens salvas no texdiretório do seu repositório. Portanto, se você criar o arquivo README.tex.md, o TeXify gerará README.md com imagens, em vez de fórmulas tex. Portanto, analisar fórmulas tex e gerar documentação é feito automaticamente em cada commit e push :)
  • Como todas as suas fórmulas são alteradas para imagens no texdiretório e o arquivo README.md usa links para essas imagens, você pode desinstalar o TeXify e toda a sua documentação antiga ainda funciona :). O texdiretório e os *.tex.mdarquivos permanecerão no repositório para que você tenha acesso às fórmulas e imagens originais de látex (você também pode armazenar com segurança no texdiretório suas outras imagens da documentação "feitas à mão" - o TeXify não as tocará).
  • Você pode usar a sintaxe látex das equações diretamente no arquivo README.tex.md (sem perder a sintaxe da marcação .md), o que é muito útil . Julii em sua resposta propôs o uso de links especiais (com fórmulas) para serviços externos, por exemplo. http://latex.codecogs.com/gif.latex?s%3D%5Ctext%20%7B%20sensor%20reading%20%7Do que é bom, porém tem algumas desvantagens: as fórmulas nos links não são fáceis (úteis) de ler e atualizar, e se houver algum problema com esse serviço de terceiros, sua documentação antiga parará de funcionar ... No TeXify, sua documentação antiga funcionará sempre mesmo se você desinstalar esse plug-in (porque todas as suas imagens geradas a partir de fórmulas de látex ficam no repositório no texdiretório).
  • O Yuchao Jiang, em sua resposta, propôs usar o Jupyter Notebook, o que também é bom, mas tem algumas desvantagens: você não pode usar fórmulas diretamente no arquivo README.md, é necessário criar um link para outro arquivo * .ipynb no seu repositório que contém látex Fórmulas (MathJax). O formato do arquivo * .ipynb é JSON, o que não é útil para manutenção (por exemplo, Gist não mostra erro detalhado com o número da linha no arquivo * .ipynb quando você esquece de colocar vírgula no lugar apropriado ...).

Aqui está um link para alguns dos meus repositórios em que uso o TeXify para cuja documentação foi gerada a partir do arquivo README.tex.md .


@Royi Eu não sei
Kamil Kiełczewski

É bom, mas como você lida com toneladas de imagens svg de lixo não utilizadas na pasta / tex?
21419 Serge Serge

@SergeP. excluir tudo e empurrar?
Kamil Kiełczewski 21/03/19

6

Para conversão automática mediante envio ao GitHub, dê uma olhada no aplicativo TeXify :

Aplicativo GitHub que procura arquivos com extensão * .tex.md e renderiza suas expressões TeX como imagens SVG

Como funciona (do repositório de origem ):

Sempre que você pressionar o TeXify, será executado e pesquisado os arquivos * .tex.md no seu último commit. Para cada um deles, ele executa o readme2tex, que aceita expressões LaTeX entre cifrões, converte-as em imagens SVG simples e salva a saída em um arquivo de extensão .md (isso significa que um arquivo chamado README.tex.md será processado e a saída será salva como README.md). Depois disso, o arquivo de saída e as novas imagens SVG são confirmadas e enviadas de volta ao seu repositório.


1
Este trabalho é de @agurodriguez, que menciona isso em um comentário acima
icc97 13/01/19

1
@ icc97 sim, mas agurodriguez não cria resposta (e eu provavelmente nunca notarei seu comentário). Como o Tom cria uma resposta (~ 1 ano após o agurodriguez), percebo que o TeXify existe e me permite usá-lo e escrever minha própria base de respostas . Por isso, foi bom :)
Kamil Kiełczewski

3
@ KamilKiełczewski Não há nada de errado com esta resposta, estou apenas mencionando que o TeXify foi criado por um usuário de SO por causa dessa discussão, o que é bem legal.
icc97

Estou usando o TeXify no meu leia-me, mas, por algum motivo, a renderização está pulando linhas quase sempre que houver um $...$no texto. Alguma pista porque? Este é o repositório
Bruno Conte Leite

3

Minha solução rápida é esta:

etapa 1. Adicione látex ao seu .mdarquivo

$$x=\sqrt{2}$$

Nota: os eqns matemáticos devem estar em $$ ... $$ ou \\(... \\).

etapa 2. Adicione o seguinte ao seu scripts.htmlarquivo ou tema (anexe este código no final)

<script type="text/javascript" async

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

Feito!. Veja sua eq. carregando a página.


1
Que scripts.htmlarquivo? Não consigo encontrar nenhuma referência a isso como um recurso do github.
Jay Lemmon

você tem arquivo de Jeykylltema ( arquivo de tema)? Este código é para exibir o látex nas páginas git.
CKM

2
Deve esclarecer que isso funciona apenas para páginas git, não para README.md em repositório regular.
germanium

1

Você pode obter um serviço de integração contínua (por exemplo, Travis CI ) para renderizar o LaTeX e confirmar os resultados no github. O IC implantará um trabalhador de "nuvem" após cada nova confirmação. O trabalhador compila seu documento em pdf e cita o ImageMagick para convertê-lo em uma imagem ou usa o PanDoc para tentar a conversão LaTeX-> HTML, onde o sucesso pode variar dependendo do seu documento. O Worker confirma uma imagem ou html no seu repositório, de onde pode ser mostrado no seu leia-me.

A configuração de exemplo do TravisCi que cria um PDF, o converte em PNG e o confirma em um local estático no seu repositório é colada abaixo. Você precisaria adicionar uma linha que busque o pdfconverte o PDF em uma imagem

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

Essa configuração do Travis Ci inicia que um trabalhador do Ubuntu faça o download de uma imagem de docker de látex, compile seu documento para pdf e o confirme em um ramo chamado branchanme-pdf.

Para obter mais exemplos, consulte este repositório do github e sua discussão sobre sx , exemplo do PanDoc , https://dfm.io/posts/travis-latex/ e esta publicação no Medium .



Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.