LaTeX -> MathJax |
18.05.2013, 07:05 | Airblader | Auf diesen Beitrag antworten » | ||||||||||
LaTeX -> MathJax Ich fände die Ablösung von LaTeX zugunsten von MathJax auch eine coole Sache, denn MathJax bietet einige Vorteile:
|
||||||||||||
19.05.2013, 17:28 | Thomas | Auf diesen Beitrag antworten » | ||||||||||
Danke für den Hinweis, ich seh mir das mal an. Weißt du spontan, ob das in allen Browsern funktioniert (das ist der Vorteil von der derzeit eingesetzten Lösung)? Punkt 5 sollte jetzt schon möglich sein. |
||||||||||||
19.05.2013, 18:25 | Airblader | Auf diesen Beitrag antworten » | ||||||||||
http://www.mathjax.org/resources/browser-compatibility/ Wenn das nicht genug ist, kann man für bestimmte Browser ja sicherlich den Server-Fallback einbauen. |
||||||||||||
23.05.2013, 10:50 | Thomas | Auf diesen Beitrag antworten » | ||||||||||
Das sieht ja ganz gut aus, danke! |
||||||||||||
25.05.2013, 17:36 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Danke Airblader, dass du dich dieser Sache schon angenommen hast! Ich hatte diese Initiative kurzzeitig wieder aus den Augen verloren. @Thomas mathjax funktioniert in allen relevanten Browsern. Die Implementierung auf dem Server sollte meiner Einschätzung nach nicht schwierig sein. Das Schriftbild sieht mit mathjax viel homogener aus als mit dem jetzigen serverseitigen Rendern des Latex-Codes. Ich sehe eigentlich nur einen Nachteil: Das Rendern auf dem Client beansprucht 2-3 Sekunden, bis der den Code per javascript umgesetzt hat. Ich stelle mal ein Beispiel gegenüber (die Aufgabe 57 aus dem Mathe-Marathon Uni): derzeitig: Es sei ein Vektorraum über und eine konvexe, balancierte, absorbierende und "beschränkte" Teilmenge, wobei die letzten drei Eigenschaften folgendes bedeuten (Konvexität ist wohl bekannt): Zu jedem gibt es , so dass für alle mit (absorbierend) und für alle mit . Balanciertheit bedeutet: Für ist auch jedes in für . Wir definieren nun das Minkowski-Funktional von als Funktional durch . Nun die eigentliche Aufgabe: Zeige, dass eine Norm auf definiert, so dass die abgeschlossene Einheitskugel von der Abschluss von (bezüglich ) ist. Mit mathjax (von meiner persönlichen mathjax-Testseite als Screenshot): [attach]30272[/attach] |
||||||||||||
25.05.2013, 17:45 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
RE: LaTeX -> MathJax Noch was dazu:
Die Syntax ändert sich eigentlich überhaupt nicht. In mathjax ist für Mathematik-Darstellungen ausreichendes Latex möglich, sogar mehr als zur Zeit hier (siehe z.B. die Seltsamkeit mit dem fehlenden Hash \# ). |
||||||||||||
Anzeige | ||||||||||||
|
||||||||||||
25.05.2013, 17:51 | Che Netzer | Auf diesen Beitrag antworten » | ||||||||||
RE: LaTeX -> MathJax Würde denn auch die [l]-[/l]- bzw. [la]-[/la]-Syntax beibehalten werden oder bräuchte man dazu neue Tags? Würden sich die bisher bestehenden Beiträge verändern? Am meisten stört mich ja, dass die Formeln immer etwas nach unten in den Zeilen rutschen (und ich bin zu faul, immer [mimetex]...[/mimetex] statt [l]...[/l] zu schreiben). Das würde sich dann sicher auch ändern, oder? |
||||||||||||
25.05.2013, 18:17 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Selbst das mit den mimetex-Tags funktioniert ja nur begrenzt. Guck dir meinen Beitrag an, wo man sehen kann, wie mit mathjax alles auf der Zeilenkante ausgerichtet ist. Zur align-Umgebung: Man müsste wohl wieder echtes Latex schreiben, also
Man könnte aber auch die Möglichkeit der Codeeinfassung durch [l ]...[/l] und [la ]...[/la] beibehalten und der Server würde dies entsprechend umsetzen, also bei [la] den Code mit einer align-Umgebung einfassen. Er würde dann ein Preprocessing des Codes vornehmen und obiges zurückschicken. Ebenso muss zwischen inline-Code \(...\) und in einer neuen Zeile gerendertem Code mit \[...\] unterschieden werden, was ja zur Zeit einfach durch Zeileneinschub passiert. |
||||||||||||
25.05.2013, 21:02 | Airblader | Auf diesen Beitrag antworten » | ||||||||||
Ich habe mathjax nur ein einziges Mal für eine Kleinigkeit verwendet, aber ich bin relativ überzeugt, dass man die Tags auch konfigurieren konnte. Die Preprocessing-Variante ginge natürlich auch. Die Renderzeit ist IMHO vertretbar, Grafiken müssen schließlich auch erst laden – und wer innerhalb einer Sekunde schon Formeln liest, der muss wahnsinnig schnell unterwegs sein. Da man auch alle alten Formeln künftig per mathjax rendern kann, kann man die Tags auch beibehalten, um auch Chés Frage einzugehen, man braucht also keine Sondertags für mathjax. |
||||||||||||
25.05.2013, 21:09 | Che Netzer | Auf diesen Beitrag antworten » | ||||||||||
Naja, wenn $...$ auch funktionieren würde, fände ich das ganz praktisch (wobei das bei manchen Textaufgaben Probleme machen könnte). Auch \[...\] ist ganz schön zu nutzen, aber muss man die align*-Umgebungen dort drinnen beginnen? Ein bloßes \begin{align*}... genügt nicht? Ach ja, und würden die \[...\]-Formeln auch eingerückt oder zentriert dargestellt werden? (letzteres wäre bei vielleicht etwas zu extrem) |
||||||||||||
25.05.2013, 21:39 | Airblader | Auf diesen Beitrag antworten » | ||||||||||
Auch hier – ich bin recht sicher, dass sich das alles konfigurieren lässt. Mathjax unterstützt aber auch so schon den Unterschied zwischen Inline- und abgesetzten Formeln. Schau dir mal diese Seite an (http://www.mathjax.org/demos/tex-samples/) und den Quelltext dazu, dann siehst du eine Standard-Verwendung. |
||||||||||||
25.05.2013, 21:58 | Che Netzer | Auf diesen Beitrag antworten » | ||||||||||
Ich habe jetzt hier noch etwas gefunden: http://docs.mathjax.org/en/v1.1-latest/s...and-latex-input Begrenzungen durch $ sind also optional. Gibt es irgendeine Möglichkeit, herauszufinden, wie oft das Zeichen hier benutzt wird/wurde? Naja, auch mit \( wäre ich zufrieden. Ob man die bisherigen [la]-Tags umschalten sollte, käme wohl darauf an, ob das wirklich alles reibungslos klappt. |
||||||||||||
25.05.2013, 23:45 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Das Problem ist die Kompatibilität mit altem Code. Aber eigentlich muss der ja so nicht in der Datenbank stehen, man könnte ihn einmal beim Übergang auf mathjax-Code transformieren, dann wäre der Fisch gegessen. Ich habe mein mathjax so konfiguriert, dass inline-Code statt mit \(...\) auch mit $....$ funktioniert:
wird gerendert als: [attach]30277[/attach] |
||||||||||||
27.05.2013, 09:16 | Airblader | Auf diesen Beitrag antworten » | ||||||||||
Bei anderthalb Millionen Beiträgen (nur in sichtbaren Bereichen?) ist "mal kurz über die Datenbank bügeln" leider nicht ganz so einfach, schon gar nicht bei solchen Updates auf Textfelder, bei denen noch in Form von regulären Ausdrücken oder so prozessiert werden müsste. |
||||||||||||
27.05.2013, 09:41 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Ich weiß natürlich nicht, welche Tricks bisher innerhalb der Latex-Tags möglich waren, denn es geht wohl nur darum. Die Frage kann nur der Server-Entwickler beantworten. Ansonsten lässt sich der Latex-Code wohl 1-zu-1 umsetzen, nur anhand ener Heuristik muss festgestellt werden, ob das [l ] bzw. [/l ] ([latex ] bzw. [latex ]) durch \[ bzw. \] oder \( bzw. \) ersetzt werden soll. Die [la ]-Tags müssen natürlich gesondert behandelt werden. Man kann ja auch erst mal zweigeteilt fahren: Alle Threads bzw. Beiträge ab einem bestimmten Datum werden in mathjax umgesetzt, die älteren wie bisher belassen. Es lässt sich auch innerhalb eines Threads alter Code und mathjax-code mischen, je nach Datum des Beitrags. |
||||||||||||
27.05.2013, 20:35 | Airblader | Auf diesen Beitrag antworten » | ||||||||||
Diese Idee, Dinge ab einem gewissen Datum anders handzuhaben, gab es in der Vergangenheit auch schon bei anderen Themen und sind bei Thomas glaube ich auf wenig Gegenliebe gestoßen – und dem stimme ich durchaus auch zu. |
||||||||||||
27.05.2013, 20:43 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Dann mach einen besseren Vorschlag. Warum ist das auf wenig Gegenliebe gestoßen? Vermutlich wegen Code-Duplizierung und nahezu doppelter Wartungsarbeit. Kann ich nachvollziehen. Übergangsphasen zwischen zwei Systemen sind immer mit erhöhtem Aufwand verbunden. Das ist aber nur temporär. Migration ist immer ein hässliches Geschäft, das möchte man nach Möglichkeit vermeiden. Dummerweise sind nicht alle Systeme evolutionär entwickelbar. |
||||||||||||
27.05.2013, 20:47 | Che Netzer | Auf diesen Beitrag antworten » | ||||||||||
Wieso sollen denn die bisherigen Formeln überhaupt umgestellt werden? |
||||||||||||
27.05.2013, 20:53 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Ich weiß nicht, wo die Probleme liegen sollen, da der Latex-Code im Wesentlichen gleich bleibt. Ich denke aber, dass auf dem Server irgendwelche Codeteile konvertiert werden. |
||||||||||||
27.05.2013, 23:41 | Airblader | Auf diesen Beitrag antworten » | ||||||||||
In diesem Fall ist deine Lösung aber nicht temporär, alte Beiträge verschwinden ja schließlich nicht. Ich muss solche "Datenbankbereinigungen" (ich würde es hier gar nicht Migration nennen – das System wird nicht migriert) öfters mal durchführen, oft in der Größenordnung von 20.000 bis 500.000 betroffene Datensätze. Da spielt vor allem auch der Planungsaufwand eine gewisse Rolle, sowas kontrolliert man hinterher ja schließlich nicht per Hand; dementsprechend muss man sich vorher eine Menge Gedanken machen über alle möglichen Fälle, die auftreten könnten. Das kann schonmal ein paar Tage in Anspruch nehmen. Hier sprechen wir nochmal von gut der dreifachen Menge an Beiträgen.
Code-Duplizierung gibe es hier nicht, schließlich sind es zwei verschiedene Techniken. Das Problem ist eher, dass ein Feature plötzlich in zwei Versionen läuft. Sowas würde ich auch gerne verhindern. Thomasens Gründe kann dir letztlich aber nur Thomas sagen. Vielleicht habe ich mich ja aber auch falsch erinnert. Was genau hier überhaupt bereinigt werden müsste ist mir aber auch nicht klar. Eigentlich sollte alles per Konfiguration doch klappen. Dass serverseitig der LaTeX-Code angefasst wird würde ich ausschließen – wir können beim Zitieren ja immer auf den Klartext zugreifen. Die BB-Tags werden einfach durch einen normalen Parser gejagt, der eben ein entspr. PHP-Skript mit Image-Output aufruft und über GET-Parameter mit der Formel versorgt. Das Skript lässt sich ja auch problemlos manuell aufrufen. |
||||||||||||
28.05.2013, 00:53 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Die alten Beiträge verschwinden zwar nicht, werden aber konvertiert oder eben nicht. Es ist schon eine Art Migration, da von einer Art der Codierung auf eine andere übergegangen wird. Aber machen wir keine Begriffsklauberei, wir wissen, was gemeint ist. Mit Code-Duplizierung meinte ich, zwei verschiedene Versionen Server-Code vorzuhalten, die dann auch beide gepflegt werden müssten, wenn man sich dafür entscheidet, nur einen Teil der Datenbank zu konvertieren. Natürlich kann man beim Zitieren auf den Latex-Code (ich nehme an, das meintest du mit Klartext) zugreifen, denn der steht ja in der DB und wird auch an den Client geliefert. Auf dem Server wird im Skript latex2png.php daraus ein Bild gerendert. Mir fällt nur auf, dass innerhalb des Latex-Codes auch HTML-Tags auftauchen (z.B. <br/>, vermutlich wenn man einen Zeilenumbruch innerhalb der Latex-Tags vorgenommen hat), mit denen mathjax natürlich nichts anfangen könnte. Um so etwas müsste das Latex dann bereinigt werden. Edit: Ich sehe gerade, dass mathjax <br/>-Tags einfach ignoriert. Die wären also sogar ganz unproblematisch. |
||||||||||||
13.05.2014, 00:39 | aakka | Auf diesen Beitrag antworten » | ||||||||||
Hallo, falls jemand lokal die Formeln in den Foren-Beiträge in MathJax gesetzt haben will, kann er mein Bookmarklet verwenden (Javascript-Snippet, dass man etweder über ein Lesezeichen oder die JavaScript-Konsole lädt), einfach PN an mich falls Interesse. Kann auch gerne hier gepostet werden, nur ich selbst kann es (noch) nicht (weil URLs drinnen und ich es nicht nur deswegen umbauen will). Nachteil ist halt (neben denen von MathJax wie der relativ langen Ladezeit), dass man es auf jeder Seite mit Formeln neu ausführen muss (außer man besorgt sich Browser-Erweiterungen wie GreaseMonkey für Firefox o.ä.). Aber wer wie ich schön gerenderte Formeln sehen will wird es schätzen. Ah ja und vielleicht funktioniert es nicht mit allem LaTeX-Code hier, ich musste z.B. das \dd-Makro manuell definieren. Vielleicht kann ich so etwas an die Community zurückgeben, wo ich lange Zeit nur ein s.g. "Lurker" war. Und zur Diskussion, wenn aus Mathoid was wird, dann werden serverseitig (!) MathJax-generierte SVG-Bilder auch eine Option (SVG ist halt ein bischen weniger schön weil generell nur grausstufen-antialiased). Wikipedia/-media ist auch daran interessiert. |
||||||||||||
13.05.2014, 09:51 | Thomas | Auf diesen Beitrag antworten » | ||||||||||
@aakka: Schick mir das Snippet bitte per PN, danke. |
||||||||||||
13.05.2014, 11:12 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
@Thomas Wie weit sind die Überlegungen gediehen, von Latex auf Mathjax umzusteigen? Oder wird das gar nicht mehr erwogen? |
||||||||||||
13.05.2014, 15:36 | Thomas | Auf diesen Beitrag antworten » | ||||||||||
MathJax bietet definitiv das schönere Rendering und einige nette Features. Hier das Snippet (via Bookmarklet oder Javascript Konsole), Edit: nach Vorschlag unten aktualisiert:
Bitte gerne damit mal experimentieren und ggf. Probleme mit existierenden Formeln, die damit in MathJax nicht funktionieren hier melden. Wenn das Snippet ein größtenteils problemloses Rendering ermöglicht, werde ich einen Umstieg in Erwägung ziehen. |
||||||||||||
13.05.2014, 16:11 | aakka | Auf diesen Beitrag antworten » | ||||||||||
Mein Snippet hatte noch kleinere Probleme, folgenden Teil:
durch folgenden
ersetzen, damit:
Verbleibende bekannte Probleme:
Für schnelleres Laden bietet es sich an die MathJax-Schriften lokal zu installieren (die kriegt man z.B. vom MathJax-Github-Repo). |
||||||||||||
13.05.2014, 16:28 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
@Thomas, @aaka Das sieht ja ziemlich gut aus . |
||||||||||||
14.05.2014, 14:56 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
So etwas geht leider gar nicht: |
||||||||||||
14.05.2014, 15:52 | aakka | Auf diesen Beitrag antworten » | ||||||||||
XY wird nicht anscheinend unterstützt, allerdings CD schon, siehe: meta.math.stackexchange.com/questions/2324/how-to-draw-a-commutative-diagram und docs.mathjax.org/en/latest/tex.html#amscd Und gerade entdeckt: github.com/sonoisa/XyJax Hab nebenbei gemerkt dass bei dem Bookmarklet zuviele Erweiterungen geladen werden, wenn ich Zeit finde werde ich einen Fix bereitstellen, vielleicht kann ich auch die implizite align-Umgebung dann wirklich zum Laufen bringen (die geht nämlich anders als vorher angedeutet überhaupt nicht). |
||||||||||||
14.05.2014, 18:46 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Man müsste [l(atex)a] bzw. [/l(atex)a] durch \begin{align} bzw. \end{align} substituieren, außerdem die br-Tags durch \\. Oder siehst du das anders? |
||||||||||||
14.05.2014, 23:17 | aakka | Auf diesen Beitrag antworten » | ||||||||||
Hier nun das aktualisierte Bookmarklet mit diesen Änderungen, sollte außerdem ein bisschen mehr unterstützen (indem es offizielle Erweiterungen automatisch bei Bedarf ladet) aber gleichzeitig weniger standardmäßig ladet (z.B. der MathML-Input-Parser ist hier wirklich unnötig), außerdem werden Fehlermeldungen nun direkt anzeigt: pastie.org/private/9syh7dmlclcrd4fdwuquta (wenn Interesse besteht, werd ich auch den ganzen Quelltext auch noch einmal in schöner Form [vorm Minimieren] posten). Ah ja und ein paar Beiträge die damit immer noch nicht gehen, müsste man sich wohl im Detail anschauen warum:
Und als Ausgleich (aus psychologischen Gründen ) ein paar schöne Beiträge die keine Probleme bereiten (ich habe jetzt einige durchgeackert, der Großteil geht tadellose):
(Sehe gerade, dass ich eine Person gleich mehrmals verlinkt habe ) P.S.: Ab wann darf ich URLs posten? Könnte mich nicht jemand mit den richtigen Rechten gleich von dieser Beschränkung befreien? |
||||||||||||
14.05.2014, 23:48 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Das sieht sehr gut aus. Nur manchmal sind die eckigen Klammern seltsam schwach oder abgeschnitten. Liegt aber wohl nicht an deinem Code. Da hat wohl mathjax ein Problem. Gut, dass align funktioniert.
Vielleicht musst du erst mal von deinen null Beiträgen runterkommen. Schreib doch mal was in einem mathematischen Thread . |
||||||||||||
15.05.2014, 00:00 | aakka | Auf diesen Beitrag antworten » | ||||||||||
MathJax unterstützt auch andere Schriften, probieren kann man sie z.B. unter checkmyworking.com/misc/MathJax-play-area/
|
||||||||||||
15.05.2014, 00:08 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Mach dir keinen Kopf drum. Die funktionieren nicht, weil der Latex-Code nicht korrekt ist. Ein alter Workaround, damit die array-Umgebung richtig dargestellt wird. Ist aber inzwischen nicht mehr notwendig. Hab das getestet, indem ich dieses seltsame \end{align*}\[ am Anfang und das \]\begin{align*} am Ende weggelassen habe. Dann funktioniert es einwandfrei. Könntest du natürlich auch von deinem Code entfernen lassen, falls es auftaucht. |
||||||||||||
15.05.2014, 00:22 | RavenOnJ | Auf diesen Beitrag antworten » | ||||||||||
Wie kann ich die dann benutzen? Und wo packe ich sie hin beim download? |
||||||||||||
15.05.2014, 01:01 | aakka | Auf diesen Beitrag antworten » | ||||||||||
Vielleicht bastle ich morgen da noch was. Da fällt mir ein, auch mit SVG-Renderer vergleichen wäre vielleicht keine schlechte Idee, einfach auf Formel rechtsklicken und im Menü unter "Math Settings" → "Math Renderer" "SVG" auswählen. |
||||||||||||
15.05.2014, 16:09 | aakka | Auf diesen Beitrag antworten » | ||||||||||
So, hier jetzt Abwandlungen des Bookmarklets für verschiedene andere Schriften: pastie.org/private/0kqyjty0hozjbu0yuraag (komischerweise werden bei mir bis auf STIX alle von diesen Schriften aus dem Web geladen, obwohl ich eigentlich alle lokal installiert hätte, vielleicht ein MathJax-Bug) |
||||||||||||
15.05.2014, 16:33 | Equester | Auf diesen Beitrag antworten » | ||||||||||
Hi aakka, Du brauchst nur 10 Beiträge, dann müsstest du Links posten dürfen . |
||||||||||||
03.06.2014, 22:56 | Thomas | Auf diesen Beitrag antworten » | ||||||||||
Danke für deine Mühe! Ich werde sehen, wie sich dein Bookmarklet hier am besten 'nativ' umsetzen lässt. |
||||||||||||
05.06.2014, 01:55 | aakka | Auf diesen Beitrag antworten » | ||||||||||
Es ist halt nur dafür gedacht die Bilder der bestehenden Lösung zu ersetzen, wenn Ihr also wirklich MimeTex durch MathJax ersetzen wollt dann könnt ihr gleich die Sachen in dem für MathJax passenden Format generieren (also in <script type="math/tex">-Elementen). Hier aber mal der aktuelle Quelltext unminimiert:
|
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
Die Neuesten » |