THMMY.gr

Παρα-φόρουμ => Τεχνικά Θέματα του Forum => Topic started by: nohponex on May 09, 2015, 01:55:19 am



Title: Τα bbcode [tex] δουλευει και πάλι
Post by: nohponex on May 09, 2015, 01:55:19 am
Καληνύχτα σας τα tex bbcode (https://www.thmmy.gr/smf/Themes/scribbles2_114/images/bbc/tex.gif) δουλεύουν και πάλι, κάντε καμιά δοκιμή σε τίποτα περίεργο μήπως ξέφυγε κάτι στις μετατροπές.

Παράδειγμα:

Tex code

Code:
[tex]\sqrt{\frac{x^2}{k+1}}\qquad
x^\frac{2}{k+1}\qquad
\frac{\partial^2f}{\partial x^2}[/tex]

Η μετατροπή σε εικόνα γίνεται μέσω της σελίδας http://www.sciweavers.org/free-online-latex-equation-editor

Have fun!  8))

(οι δοκιμές σας όχι σε αυτό το topic)


Title: Re: Τα bbcode [tex] δουλευει και πάλι
Post by: Katarameno on May 09, 2015, 10:22:18 am
Tex code
 :P


Title: Re: Τα bbcode [tex] δουλευει και πάλι
Post by: nohponex on May 09, 2015, 17:33:18 pm
μπα, κάτι δε πάει καλά, λες και επαναλαμβάνει του από πάνω : έγραψα αυτό και μετά από ένα edit έβγαλε το από πάνω

Κάτι δεν πάει καθόλου καλά, όντως.

Τα posts των άλλων αλλάζουν συνεχώς σε μένα. Του Firkraag από κάτω πχ γίνεται ίδιο με το post του Kataramenou, έπειτα ίδιο με το πρώτο το nohponex και έπειτα γίνεται αυτό που όντως έγραψε.

H υπηρεσία failαρει στοχαστικά  ::)
Δεν μπορώ να καταλάβω τι ακριβώς κάνει με τα responses, αλλά όταν είναι πολλά ταυτόχρονα σε μια σελίδα επιστρέφει ακανόνιστα όποια να ναι.

Προσπάθησα να χρησιμοποιήσω κάποια άλλη υπηρεσία για το render άλλα δεν τελείωσα με τις μετατροπές για το url encoding.


Title: Re: Τα bbcode [tex] δουλευει και πάλι
Post by: Niri on July 01, 2018, 21:30:58 pm
Μιας που το latex δε δουλευει σωστα θα ηθελα να κανω την προταση, αν υπαρχει ενδιαφερον, να χρησιμοποιηθει η βιβλιοθηκη MathJax για το rendering. Με αυτο τον τροπο και δε θα βασιζομαστε σε τριτο site για το rendering αλλα και οι εξισωσεις θα ειναι σε μορφη html ή svg αντι σε μορφη εικονας.

Υπαρχει ηδη mod (http://custom.simplemachines.org/mods/index.php?mod=4077) για το smf αλλα δεν ξερω τι εκδοση ειναι το forum για να ξερω αν ειναι συμβατο.

Αλλα ακομα και να μην κανει το mod θα μπορουσε απλα να μπει το script της mathjax στο head της σελιδας με καποιο configuration για να κανει το rendering.
πχ εγω δοκιμασα αυτο στην εκδοση 2.0.15 του smf και δουλευε καλα
Code:
...
<?php
echo 
"

<script type=\"text/x-mathjax-config\">
  MathJax.Hub.Config({
    extensions: [\"tex2jax.js\"],
    jax: [\"input/TeX\", \"output/HTML-CSS\"],
    tex2jax: {
      inlineMath: [ ['[latex]','[/latex]']],
      displayMath: [ ['[latex]','[/latex]'] ],
      processEscapes: true,
  ignoreClass: \".*\",
  processClass: \"inner|post|list_posts|bbc_standard_quote\"
 
    },
    \"HTML-CSS\": { fonts: [\"TeX\"] }
  });
</script>  
<script type=\"text/javascript\" src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js\">
</script>

"
;
?>

...

Φυσικα ειναι λιγο πιο φασαρια ετσι καθως για dynamic περιεχομενο οπως οταν κανουμε preview χρειαζεται να μπει η εντολη
Code:
<?php
echo 
"
...
MathJax.Hub.Queue([\"Typeset\",MathJax.Hub,\"preview_body\");
...
"
;
?>
μεσα στη συναρτηση που καλειται για να καταλαβει οτι κατι αλλαξε οπως αναφερεται εδω (https://docs.mathjax.org/en/v1.0/typeset.html).


Νομιζω βεβαια η καλυτερη λυση θα ηταν να χρησιμοποιηθει το mathjax με το node.js οπως εχουν κανει καποιοι αλλοι και να γινεται το rendering στο server μια φορα μονο κατα το ποσταρισμα ομως αυτο φανταζομαι θελει αρκετα περισσοτερο κοπο και χρονο.

Αυτες λοιπον ειναι η προτασεις μου. Ξερω οτι οι admin εχουν και αλλες δουλειες και δεν εχουν πολυ χρονο και αυτο δεν επειγει να φτιαχτει ομως ειπα να το αναφερω για να υπαρχει σαν προταση για το μελλον αν ενδιαφερεται κανεις.

Edit: διορθωση κωδικα


Title: Re: Τα bbcode [tex] δουλευει και πάλι
Post by: L on July 01, 2018, 21:44:26 pm
Δε γνωρίζω για τον server, αλλά λογικά είναι εύκολο να εισαχθεί ένα τέτοιο script στο mTHMMY τουλάχιστον.

(btw το forum μας είναι SMF v1.x.x)


Title: Re: Τα bbcode [tex] δουλευει και πάλι
Post by: Niri on September 26, 2018, 18:14:09 pm
Και μιας που βρηκα και λιγο ελευθερο χρονο μετα την εξεταστικη ας κανω και μια ακομα προταση για το latex rendering μιας που δε δουλευει σωστα.

Η προταση μου ειναι να γινει χρηση του rest api της wikipedia. Πιο συγκεκριμενα εδω εχει αρκετα αναλυτικες οδηγιες για το πως να γινει χρηση του:
https://wikimedia.org/api/rest_v1/

Γενικα ομως με απλα λογια απλα του στελνεις με post την latex εκφραση και μετα παιρνεις ενα μοναδικο string στο response header που το βαζεις σε ενα url και σου επιστρεφει ετοιμη την rendered εικονα ή svg.

Εκανα και ενα πολυ απλοικο proof of concept προγραμματακι που χρησιμοποιει php και παιρνει απο μια φορμα την εκφραση και την κανει rendering.

Code:
<!DOCTYPE HTML>  
<html>
<body> 


<?php

function wikipedia_api_stuff($expression){
global $t;
$url 'https://wikimedia.org/api/rest_v1/media/math/check/tex';

$data = array('q' => $expression);

$options = array(
'http' => array(
'header'  => "Content-type: application/x-www-form-urlencoded",
'method'  => 'POST',
'content' => http_build_query($data)
)
);
$context  stream_context_create($options);
$result file_get_contents($urlfalse$context);


foreach ($http_response_header as $header) {
$key=stripos($header"x-resource-location");
if($key===0){break;}
}

$t=explode(": "$header);

// if ($result === FALSE) { /* Handle error */ }

}

?>


<?php

$expression 
"";
if (
$_SERVER["REQUEST_METHOD"] == "POST") {
  
$expression $_POST["expression"];

  
wikipedia_api_stuff($expression);
}

?>


<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
  Enter expression:<br>
  <textarea type="text" name="expression" rows="3" cols="35"><?php echo $expression;?></textarea><br>
  <input type="submit" value="Submit">
</form>

<?php
$render_url
'https://wikimedia.org/api/rest_v1/media/math/render/svg';

if(!(empty(
$t[1]))){
echo "<img src=\"$render_url/$t[1]\" alt=\"expression goes here\" />";
}

?>


</body>
</html>