News:

SMF 2.1.4 has been released! Take it for a spin! Read more.

Main Menu

mathematische Formeln darstellen

Started by chrisi99, May 04, 2006, 07:02:27 AM

Previous topic - Next topic

chrisi99

Hi, ich hoffe, es gibt dieses Thema noch nicht, aber leider kann ich nicht danach suchen (nicht spezifisch genug...)

gibt es für SMF ein Modul, mit dem mathematische Funktionen etc. schön dargestellt werden können?

damit es zb. nicht so aussieht f(x)=(1-x)^2/(x+1)

sondern so:



mfg

xduugu

So etwas funktioniert mit Latex. Hier gibt es eine alte Beschreibung, allerdings müssen dazu entweder einige Programme auf dem Server installiert sein oder man hat root-Rechte.

chrisi99

das klingt vielversprechend!

hast du das eventuell schon einmal getestet, ich habe zwar root Rechte, möchte aber "nichts riskieren", wenn du verstehst, was ich meine! :)

mfg

xduugu

getestet habe ich es nicht, aber das kann man ja recht einfach lokal unter linux machen.

Ich hab jetzt noch zwei weitere Möglichkeiten gefunden.
Zum einen kann man jsMath, welches allerdings nur Funktioniert, wenn der Besucher JavaScript aktiviert hat. (Beispiele)

Die andere Möglichkeit, die sich vielversprechend anhört, ist MathsPHP, wobei ich nicht sagen kann in wieweit das funktioniert, aber da es ja nur php-Dateien sind kann ja beim testen nichts passieren ;)

schamock

Quote from: xduugu on May 04, 2006, 08:00:27 AM
So etwas funktioniert mit Latex. Hier gibt es eine alte Beschreibung, allerdings müssen dazu entweder einige Programme auf dem Server installiert sein oder man hat root-Rechte.

So, ich hab mir die Anleitung mal vorgenommen. Mit SMF 1.1 RC2 hab ich aber folgendes Problem:
zB probiere ich
[tex]"o[/tex]
aus. Allerdings wird von SMF das " sofort escaped (also nach ") und der latexparser kann damit natürlich nix mehr anfangen.
Wie kann ich die Sache lösen? Im Latexparser alle <br />'s und specialcharacters wieder zurückkonvertieren??? Wär dann aber a weng arg viel Rechenaufwand...

Danke schon mal für Lösungsvorschläge!

xduugu

Wär mal interessant zu wissen wo du den Code überhaupt eingefügt hast. Die Zeilen die dort als Referenz angegeben sind, gibt es zumindest in meienr Subs.php nicht.

schamock

sers
hat sich schon erledigt... hätte mir mal die latex.php richtig anschaun solln. Da sind nämlich schon Statements vorbereitet, um die HTML-Kodierung rückgängig zu machen... jaja wer lesen kann... ;)

Falls es wen interessiert, wo ich das eingefügt hab: am Anfang von parse_bbc (ca. Zeile 950). Sieht dann so aus:

function parse_bbc($message, $smileys = true, $cache_id = '')
{
global $txt, $scripturl, $context, $modSettings, $user_info;
static $bbc_codes = array(), $itemcodes = array(), $no_autolink_tags = array();
static $disabled;

// LATEX
include_once('Sources/latex/latex.php');
$message = latex_content($message);

        ....


und die latex_content() in der latex.php sieht dann so aus:

function latex_content($text) {
// adjust this to match your system configuration
$latexrender_path = "/var/www/_smf/Sources/latex";
$latexrender_path_http = "/_smf/Sources/latex";

include_once($latexrender_path."/class.latexrender.php");

preg_match_all("#\[tex\](.*?)\[/tex\]#si",$text,$tex_matches);

$latex = new LatexRender($latexrender_path."/pictures",$latexrender_path_http."/pictures",$latexrender_path."/tmp");

for ($i=0; $i < count($tex_matches[0]); $i++) {
$pos = strpos($text, $tex_matches[0][$i]);
$latex_formula = $tex_matches[1][$i];

$latex_formula = str_replace("&amp;","&",$latex_formula);
$latex_formula = str_replace("&#38;","&",$latex_formula);
$latex_formula = str_replace("&nbsp;"," ",$latex_formula);
$latex_formula = str_replace("<BR>","",$latex_formula);
$latex_formula = str_replace("<br />","",$latex_formula);
$latex_formula = str_replace("<P>","",$latex_formula);
$latex_formula = str_replace("</P>","",$latex_formula);

$url = $latex->getFormulaURL($latex_formula);

$alt_latex_formula = htmlentities($latex_formula, ENT_QUOTES);
$alt_latex_formula = str_replace("\r","&#13;",$alt_latex_formula);
$alt_latex_formula = str_replace("\n","&#10;",$alt_latex_formula);

if ($url != false) $text = substr_replace($text, "<img src='".$url."' title='".$alt_latex_formula."' alt='".$alt_latex_formula."' align=absmiddle>",$pos,strlen($tex_matches[0][$i]));
else $text = substr_replace($text, "[Unparseable or potentially dangerous latex formula. Error $latex->_errorcode $latex->_errorextra]",$pos,strlen($tex_matches[0][$i]));
}
return $text;
}

Kimmel

Hallo Leute,

sorry erstmal, dass ich ein altes Thema wieder ausgrab, aber ich möchte ebenfalls ein Formeleditor in mein Forum integrieren. Nur verstehe ich nicht, wie meine Vorposter es geschafft haben, deswegen wäre es nett, wenn jemand mir das Schritt für Schritt erklären könnte, wie man einen Formeleditor in das Forum integriert.

Advertisement: