Jak Mogę mieszać LaTeX z Markdown? [zamknięte]

Zamknięte. to pytanie jest off-topic . Obecnie nie przyjmuje odpowiedzi.


chcesz poprawić to pytanie? Update the question so to on-topic dla przepełnienia stosu.

Zamknięte 8 lat temu.

Popraw to pytanie

Używam Markdown do notatek z zajęć, i to jest świetne. Robię nawet wstępne przetwarzanie na Markdown, więc mogę robić takie rzeczy, jak tabele. Ale tym terminem uczę klasę z dużą ilością matematyki i Chciałbym móc umieścić formuły LaTeX z Markdown, coś takiego:

The refinement relation is written $a \sqsubseteq b$, which can be 
pronounced "$a$ approximates $b$" or "$b$ is at least as defined as $a$".

Chciałbym móc wziąć każdy fragment LaTeX ' a i wstępnie przetworzyć go do ładnego antyaliasowanego pliku PNG, który mógłbym następnie umieścić w moim Markdown za pomocą znacznika HTML <img>. Ale nie mam absolutnie pojęcia, jak wziąć fragment lateksu i uzyskać ładny obraz, który

  • ma odpowiednią obwiednię
  • jest antyaliased

Wszystko, co wiem, jak to zrobić, to uzyskać pełne strony w DVI, Formaty PostScript lub PDF.

Jestem pewien, że ten problem został rozwiązany, ale nie byłem w stanie odgadnąć właściwych terminów wyszukiwania. Jakieś sugestie, jak je rozwiązać lub gdzie szukać istniejącego rozwiązania?


EDIT: Po zainstalowaniu mathTeX, mogę powiedzieć, że kod jest nieelastyczny, że narusza Standard hierarchii systemu plików Linuksa i że jest to amatorska praca - zarówno w dobrym, jak i złym znaczeniu tego słowa. Kod jest tak złożony, że nie ma oczywiste wady. Będę szukał alternatyw.

Ponadto, jest jasne, że na dole, rozwiązania są oparte na dvipng.


Rok później: nigdy nie udało mi się uzyskać bezproblemowej integracji, na którą liczyłem, ale kuleję na swoim własnym skrypcie. Okazuje się, że zamiast dvipng jest nieco łatwiejszy w użyciu dvips -E i convert Program ImageMagick. Korzyści to nieco większa kontrola nad takimi rzeczami jak skalowanie i łatwość tworzenia przezroczyste tło. Ciekawy może sprawdzić ten przykład .

Nie mogę polecić tego rozwiązania nikomu. Ale też nie mogę polecić MathTeX ' a.
Author: flying sheep, 2010-02-03

15 answers

Próbowałeś z Pandoc ?

EDIT:

Chociaż dokumentacja stała się nieco skomplikowana, pandoc obsługiwał inline LaTeXi Szablony LaTeX przez 10 lat.

Dokumenty takie jak następujący można zapisać w Markdown :

---
title: Just say hello!
author: My Friend
header-includes: |
    \usepackage{tikz,pgfplots}
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    \fancyhead[CO,CE]{This is fancy}
    \fancyfoot[CO,CE]{So is this}
    \fancyfoot[LE,RO]{\thepage}
abstract: This is a pandoc test with Markdown + inline LaTeX
---

Just say hello!
===============

This could be a good example or inlined \LaTeX:

\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Here ends the furst plot
\hskip 5pt
%Here begins the 3d plot
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}

And now, just a few words to terminate:

> Goodbye folks!

Który można przekonwertować na LaTeX używając poleceń takich jak: pandoc -s -i Hello.md -o Hello.tex

Poniżej znajduje się obrazek przekonwertowanego pliku Hello.md na Hello.pdf za pomocą MiKTeX jako procesor LaTeX z poleceniem: pandoc -s -i Hello.md -o Hello.pdf

Tutaj wpisz opis obrazka

Wreszcie, są jakieś open source LaTeX templates jak ten: https://github.com/Wandmalfarbe/pandoc-latex-template , które można wykorzystać do lepszego formatowania.

Jak zawsze, czytelnik powinien kopać głębiej, jeśli ma mniej trywialnych przypadków użycia niż przedstawione tutaj.

 77
Author: tnotstar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-30 11:59:34

Być może mathJAX jest biletem. Jest zbudowany na jsMath, zabytkowej bibliotece JavaScript z 2004 roku.

[[0]}od 5-Feb-2015 chciałbym przełączyć się na polecić KaTeX - najbardziej wydajną bibliotekę Latex Javascript z Khan Academy.
 42
Author: duffymo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-05 23:23:19

Dodaj poniższy kod na górze plików Markdown, aby uzyskać obsługę renderowania MathJax

<style TYPE="text/css">
code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;}
</style>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [['$','$'], ['\\(','\\)']],
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'] // removed 'code' entry
    }
});
MathJax.Hub.Queue(function() {
    var all = MathJax.Hub.getAllJax(), i;
    for(i = 0; i < all.length; i += 1) {
        all[i].SourceElement().parentNode.className += ' has-jax';
    }
});
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-AMS_HTML-full"></script>

A następnie` $x^2$ `lub` $$X^2$$ ' renderuje się zgodnie z oczekiwaniami: -)

Zawsze możesz zainstalować lokalną wersję MathJax, jeśli nie chcesz korzystać z dystrybucji online, ale może być konieczne hostowanie jej przez lokalny serwer WWW.

UPDATE: w dzisiejszych czasach po prostu używam pandoc zamiast canonical markdown, ale powyższy jest nadal przydatny.

 27
Author: fommil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-21 11:47:12

Odpowiem na twoje pytanie kontr-pytaniem...

Co sądzisz o Org-mode? Nie jest tak czysty jak Markdown, ale jest podobny do Markdown i uważam, że jest łatwy w obsłudze i pozwala na osadzanie lateksu. Cf. http://www.gnu.org/software/emacs/manual/html_node/org/Embedded-LaTeX.html

Postscript

W przypadku, gdy nie spojrzał na org-mode, ma jedną wielką siłę jako ogólnego przeznaczenia "naturalny język znaczników" nad Markdown, a mianowicie jego traktowanie tabel. Źródło:

| 1 | 0 | 0 |
| -1 | 1 | 0 |
| -1 | -1 | 1 |

Reprezentuje dokładnie to, co myślisz, że będzie...

I Latex jest renderowany w kawałkach za pomocą preview-latex w tex-mode.

 12
Author: Charles Stewart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 12:21:08

Powinieneś spojrzeć na multimarkdown http://fletcherpenney.net/multimarkdown/

Posiada wsparcie dla metadanych( nagłówki, słowa kluczowe, Data, autor, itp), tabele, asciimath, mathml, piekło jestem pewien, że można umieścić Latex math kodu tam. jest to w zasadzie rozszerzenie do markdown, aby dodać wszystkie te inne bardzo przydatne funkcje. Używa XSLT, dzięki czemu można łatwo uzyskać własne style LaTeX i mieć go bezpośrednio przekonwertować. Używam go cały czas i bardzo mi się podoba.

I szkoda, że markdown nie zawiera tylko multimarkdown. byłoby miło.

Edit : Multimarkdown stworzy html, latex i kilka innych formatów. html może pochodzić z arkusza stylów do wyboru. przekonwertuje również do MathML, który wyświetla się w Firefoksie i Safari / Chrome, o ile dobrze pamiętam.

 8
Author: Mica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 16:38:21

RStudio ma dobre wolne IDE, które pozwala na Markdown i LaTeX.

 6
Author: rsacc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-29 02:03:56

Kramdown robi dokładnie to, co opisujesz:

Https://kramdown.gettalong.org/syntax.html#math-blocks

I jest o wiele bardziej niezawodny i dobrze zdefiniowany niż Markdown.

 6
Author: matt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-30 01:30:08

Możesz znaleźć mimeTeX przydatne.

 5
Author: Ignacio Vazquez-Abrams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-27 00:04:48

Hej, to może nie jest najlepsze rozwiązanie, ale dla mnie działa. Skończyło się na stworzeniu rozszerzenia Latex Python-Markdown.

Https://github.com/justinvh/Markdown-LaTeX

Dodaje obsługę wbudowanych wyrażeń matematycznych i tekstowych przy użyciu składni $math$ i %text%. Rozszerzenie jest preprocesorem, który będzie używać latex/dvipng do generowania pngs dla odpowiednich równań / tekstu,a następnie base64 kodować dane do wbudowania obrazów bezpośrednio, zamiast mieć zewnętrzne obrazy.

Dane są następnie umieszczane w pliku pamięci podręcznej, który koduje wyrażenie do reprezentacji base64. To ogranicza liczbę razy Latex faktycznie musi być uruchomiony.

Oto przykład:

%Hello, world!% This is regular text, but this: $y = mx + b$ is not.

Wyjście:

$ markdown -x latex test.markdown
<p><img class='latex-inline math-false' alt='Hello, world!' id='Helloworld' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAAAQBAMAAABpWwV8AAAAMFBMVEX///8iIiK6urpUVFTu7u6YmJgQEBDc3NxERESqqqqIiIgyMjJ2dnZmZmbMzMwAAAAbX03YAAAAAXRSTlMAQObYZgAAAVpJREFUKM9jYICDOgb2BwzYAVji8AQg8fb/PZ79u4AMvv0Mrz/gUA6W8F7AmcLAsJuBYT7Y1PcMfLiUgyWYF/B8Z2DYAVReABKrZ2DHpZwdopzrA0nKOeHKj66CKOcKPQJWwJo2NVFhfwCQyymhYwCUYD0avIApgYFh2927/QUcE3gDwMpvMhRCDJzNMIPhKZg7UW8DUOIMg9sCPgGo6e8ZODeAlAP9xLEArNy/IIwhAMx9D3IM+3cgi70BqnxZaNQFkHJWAQbeBrByjgURExaAuc9AyjnB5hjAlEO9ygVXzrplpskEMPchQvkBmGMcGApgjjkAVs7yhyWVAcwFK2f/AlJeAI0m5gMsEK+aMhQ6aDuA1DcDIZirBg7IOwxlB5g2QBJBF8OZVUz95hqfC3hOXWGYrwBSHskwk4EByGXab8QAlOBaGizFKYAtUlgUGEgBTCSpZnDCLQUA+y6MXeYnPDgAAAAASUVORK5CYII='> This is regular text, but this: <img class='latex-inline math-true' alt='y = mx + b' id='ymxb' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAOBAMAAABOTlYkAAAAMFBMVEX///9ERETu7u4yMjK6urp2dnZUVFSIiIjMzMwQEBDc3NwiIiJmZmaYmJiqqqoAAADS00rKAAAAAXRSTlMAQObYZgAAAOtJREFUKM9jYCAACsCk4wYGgiABTLInEKuS+QGxKvkVGBj47jBwI8tcffI84e45BoZ7GVcLECo9751iWLeSoRPITBQEggMMDBy9sxj2MDgz8DIE8yCpPMxwjWFBGUMMkpFcbAEMvxjKGLgYxIE8NkHBiYIyQMY+hmoGhi0Mdsi2czawbGCQBTJ+ILvzE0MaA9MHIIWwnWE9A+sBpk8LGDgmMCnAVXJNYPgCJHhRQvUiA/cDXoECZx4DXoSZTBtYgaaEPw5AVnkOGBRc5xTcbsReQrL9+nWwyxbgC88DcJZ+QygDcYD1+QPiFAIAtLA8KPZOGFEAAAAASUVORK5CYII='> is not.</p>

Jak widać jest to dane wyjściowe, ale to naprawdę nie jest problem, ponieważ już używasz Markdown:)

 3
Author: Justin Van Horne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-05 06:51:37

Tak, ale sam będziesz musiał go trochę zhakować. Napisałem filtr, który zastępuje znaczniki latex $\some\inline\latex$ lub $$\some\equation$$ odpowiednimi znacznikami obrazu na mimetex.skrypt cgi. Zajęło to 5 minut.

Ostrzeżenie: spektakularnie brzydki...

#!/usr/bin/env python
import sys, markdown,re

MIMETEX_LOC="http://some.server.com/cgi-bin/mimetex.cgi"

def sanitizeLatex(text):
    return re.sub(r"\\",r"%5C", text)

def wrapLatexBlock(text):
    return '<img alt="equation" class="block" src="%s?%s"></img>'%(MIMETEX_LOC,text)

def wrapLatexInline(text):
    return '<img alt="equation" class="inline" src="%s?%s"></img>'%(MIMETEX_LOC,text)

def prepLatexBlock(matchobj):
    return wrapLatexBlock(sanitizeLatex(matchobj.group()[2:-2]))

def prepLatexInline(matchobj):
    return wrapLatexInline(sanitizeLatex(matchobj.group()[1:-1]))


if __name__ == "__main__":
    # initialise markdown
    md=markdown.Markdown()
    raw_md=open(sys.argv[1],"r").read()

    ##
    # deal with embedded latex
    ##
    raw_md=re.sub(r'\$\$(.*?)\$\$',prepLatexBlock, raw_md)
    raw_md=re.sub(r'\$(.*?)\$',prepLatexInline, raw_md)

    ##
    # once latex is parsed, convert md to html
    ##
    main_html=md.convert(raw_md)

    # hey presto!
    print(main_html)

Oczywiście musisz samodzielnie zdefiniować odpowiedni css dla .blok i .obrazy w wierszu...

 2
Author: brice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-03 00:55:25

Natknąłem się na tę dyskusję dopiero teraz, więc mam nadzieję, że mój komentarz jest nadal przydatny. Jestem zaangażowany w MathJax i z tego, jak rozumiem twoją sytuację, myślę, że byłby to dobry sposób na rozwiązanie problemu: zostawiasz swój kod Latexowy tak, jak jest, a MathJax renderuje matematykę po obejrzeniu.

Czy jest jakiś powód, dla którego wolisz obrazy?

 2
Author: Hylke Koers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-17 21:38:23

Jakiego języka używasz?

Jeśli możesz użyć ruby, to maruku może być skonfigurowany do przetwarzania matematyki za pomocą różnych konwerterów latex->MathML. Instiki używa tego. Możliwe jest również rozszerzenie PHPMarkdown o użycie itex2MML do konwersji matematyki. Zasadniczo wstawiasz dodatkowe kroki w silniku Markdown w odpowiednich punktach.

Więc z ruby i PHP, to jest zrobione. Myślę, że te rozwiązania mogą być również dostosowane do innych języków-dostałem rozszerzenie itex2mml do tworzenia wiązań Perla.

 1
Author: Andrew Stacey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-07 14:02:29

Szukałem dokładnie tego samego, kiedy znalazłem teqhtml. Wykonuje konwersję równań $ i $$ na obrazy z przyjemnym bonusem wyrównania wynikowego obrazu pionowo z otaczającym tekstem. Nie dużo doc, ale to dość proste.

Mam nadzieję, że pomoże to przyszłym czytelnikom.

 1
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-13 17:46:23

Przepraszam, że budzę naprawdę stary wątek, ale używam jemdoc od kilku lat i jest naprawdę świetny.

 1
Author: traviscj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-16 18:04:24

Możliwe jest parsowanie Markdown w Lua za pomocą kodu Lunamark (zobacz jego Github repo), co oznacza, że Markdown może być parsowany bezpośrednio przez makra w Luatex i obsługuje konwersję do wielu formatów obsługiwanych przez Pandoc (tzn. lualatex, context, Metafun, Plain Luatex i skrypty texlua).

[[3]}projekt został rozpoczęty przez Johna MacFarlane , autora Pandoc, a Rozwój Narzędzia śledzi to Pandoc dość ściśle i jest podobna (tj. doskonała) jakość.

Khaled Hosny napisał moduł kontekstowy, zapewniający wygodną obsługę makr. odpowiedź Michala na Czy Jest jakiś pakiet z obsługą Markdown? question daje kod zapewniający podobne wsparcie dla Latex-a.

 1
Author: Charles Stewart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:08