Página 1 de 1

[ABD] LaTeX para phpBB3 (para postear formulas matematicas y mas)

Publicado: 05 Dic 2008, 05:39
por mitch
Instalando este MOD conseguirás tener LaTeX en tu foro phpBB3 de una forma muy fácil, pues se utiliza un servidor externo (texify.com), por lo que no tendrás que instalar nada en tu servidor... solo instalar este MOD en tu foro.

Es de especial utilidad para foros educacionales, matemáticos y universitarios.

El MOD instala un editor latex en la página de posteo. Se ve de la siguiente forma:
Imagen Imagen Imagen
Probar el MOD online: http://www.phpbbmods.info/mitch/testposting.php" onclick="window.open(this.href);return false;

Esto te permite postear en tu foro fórmulas matemáticas, resolución de ejercicios de física, química, y muchas otras... ejemplos:

Imagen

Imagen

Y además, incluyo un tutorial que hicimos tiempo atrás con otra persona, para que los usuarios puedan aprender más sobre LaTeX.

Pasos a seguir:

1) Descargar y subir archivos

Descarga el siguiente adjunto:
latex mod.rar
(71.53 KiB) Descargado 488 veces
y los archivos que trae, debes subirlos a estas rutas
  • latex.php > Subirlo a la raíz del foro (donde esta memberlist.php, search.php, etc... donde comienza tu foro).
  • La carpeta "/latex/" (que tiene imagenes dentro) > debes subirla tal cual (toda la carpeta con su contenido) a la carpeta /images/ del foro.
  • latex_body.html y latex_gen.html > Estos 2 archivos los subes a la carpeta "template" de tu estilo (prosilver, subsilver2, el que sea).
2) Edicion de archivos

Ahora toca editar algunos archivos... va a depender del estilo que uses

> Edicion para prosilver (y otros estilos que se basen en este)
  • En el archivo editor.js
    Ir al final del archivo, y agregar en una nueva línea:

    Código: Seleccionar todo

    /**
    * Generador de url para Latex, por Mitch
    */
    function genurlmitch(texto){
    var espacio = " ";
    var rempespacio = '\\ ';
    var1 = texto.split('%').join('%25');
    var1 = var1.replace(/\s*[\r\n][\r\n \t]*/g, '\\\\');
    var1 = var1.split(espacio).join(rempespacio);
    var1 = var1.split(espacio).join('%20');
    var1 = var1.split('!').join('%21');
    var1 = var1.split('#').join('%23');
    var1 = var1.split('$').join('%24');
    var1 = var1.split('&').join('%26');
    var1 = var1.split('(').join('%28');
    var1 = var1.split(')').join('%29');
    var1 = var1.split('*').join('%2A');
    var1 = var1.split('+').join('%2B');
    var1 = var1.split('-').join('%2D');
    var1 = var1.split(',').join('%2C');
    var1 = var1.split('/').join('%2F');
    var1 = var1.split(':').join('%3A');
    var1 = var1.split(';').join('%3B');
    var1 = var1.split('<').join('%3C');
    var1 = var1.split('=').join('%3D');
    var1 = var1.split('>').join('%3E');
    var1 = var1.split('?').join('%3F');
    var1 = var1.split('@').join('%40');
    var1 = var1.split('[').join('%5B');
    var1 = var1.split('\\').join('%5C');
    var1 = var1.split(']').join('%5D');
    var1 = var1.split('^').join('%5E');
    var1 = var1.split('_').join('%5F');
    var1 = var1.split('{').join('%7B');
    var1 = var1.split('|').join('%7C');
    var1 = var1.split('}').join('%7D');
    var1 = var1.split('~').join('%7E');
    var1 = var1.split('¡').join('%A1');
    var1 = var1.split('©').join('%A9');
    var1 = var1.split('±').join('%B1');
    var1 = var1.split('²').join('%B2');
    var1 = var1.split('³').join('%B3');
    var1 = var1.split('¿').join('%BF');
    var1 = var1.split('ß').join('%DF');
    var1 = var1.split('Ø').join('%D8');
    var1 = var1.split('Þ').join('%DE');
    var1 = var1.split('ø').join('%F8');
    var1 = var1.split('\"').join('%22');
    var1 = var1.split('\'').join('%27');
    var salida = ['http://www.texify.com/img/%5CLARGE%5C%21',var1,'.gif'];
    var salida2 = salida.join("");
    return salida2;
    } 
    function latexurlmitch(){
    	var s1 = document.getElementById('cadena1');
    	// Obtenemos el valor del area de texto	
    	texto1 = document.getElementById('texto').value;
    	// Cambiamos su valor
    	s1.value = genurlmitch(texto1);
    }
    function imgpostlatex() {
    	
    		var prev = document.getElementById('texto').value;
    	      if (prev == "")
          {
             alert("Debes escribir una fórmula");
             return (false);
          }
    else {
    	var s1 = document.getElementById('cadena1').value;
    var1 = '[img]';
    var2 = '[/img]';
    var salida = ['[img]',s1,'[/img]'];
    var salida2 = salida.join("");
    insert_text(salida2, true); 
    }
    }
    
    function latexajax(){
    		var prev = document.getElementById('texto').value;
    	      if (prev == "")
          {
             alert("Debes escribir una fórmula");
             return (false);
          }
    else {
    	var s1 = document.getElementById('cadena1').value;
    setTimeout("latexajax2(document.getElementById('cadena1').value)", 1000)
         document.getElementById('latexprev').src = './images/latex/ajaxloader.gif';
    }
    }
    function latexajax2(s1){
         document.getElementById('latexprev').src = s1;
    }
    
    function prevlatex() {
    			var prev = document.getElementById('texto').value;
    	      if (prev == "")
          {
             alert("Debes escribir una fórmula");
             return (false);
          }
    else {
    	var s1 = document.getElementById('cadena1').value;
    window.open(s1, this.target, 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes, width=500, height=400');
    }
    }
    	function BBClatex(text, spaces) {
    
    		var textarea = document.getElementById('texto');
    
    	if (!isNaN(textarea.selectionStart))
    	{
    		var sel_start = textarea.selectionStart;
    		var sel_end = textarea.selectionEnd;
    
    		mozWrap(textarea, text, '')
    		textarea.selectionStart = sel_start + text.length;
    		textarea.selectionEnd = sel_end + text.length;
    	}	
    	
    	else if (textarea.createTextRange && textarea.caretPos)
    	{
    		if (baseHeight != textarea.caretPos.boundingHeight) 
    		{
    			textarea.focus();
    			storeCaret2(textarea);
    		}		
    		var caret_pos = textarea.caretPos;
    		caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
    		
    	}
    	else
    	{
    		textarea.value = textarea.value + text;
    	}
    }
    function storeCaret2(textEl)
    {
    	if (textEl.createTextRange)
    	{
    		textEl.caretPos = document.selection.createRange().duplicate();
    	}
    }
    
  • En el archivo posting_editor.html
    Buscar:

    Código: Seleccionar todo

    </textarea>
    Agregar despues (nueva linea):

    Código: Seleccionar todo

    <br><!-- INCLUDE latexgen.html -->

> Edicion para subsilver2 (y otros estilos que se basen en este)
  • En el archivo editor.js
    Ir al final del archivo, y agregar en una nueva línea:

    Código: Seleccionar todo

    /**
    * Generador de url para Latex, por Mitch
    */
    function genurlmitch(texto){
    var espacio = " ";
    var rempespacio = '\\ ';
    var1 = texto.split('&#37;').join('%25');
    var1 = var1.replace(/\s*[\r\n][\r\n \t]*/g, '\\\\');
    var1 = var1.split(espacio).join(rempespacio);
    var1 = var1.split(espacio).join('%20');
    var1 = var1.split('!').join('%21');
    var1 = var1.split('#').join('%23');
    var1 = var1.split('$').join('%24');
    var1 = var1.split('&').join('%26');
    var1 = var1.split('(').join('%28');
    var1 = var1.split(')').join('%29');
    var1 = var1.split('*').join('%2A');
    var1 = var1.split('+').join('%2B');
    var1 = var1.split('-').join('%2D');
    var1 = var1.split(',').join('%2C');
    var1 = var1.split('/').join('%2F');
    var1 = var1.split(':').join('%3A');
    var1 = var1.split(';').join('%3B');
    var1 = var1.split('<').join('%3C');
    var1 = var1.split('=').join('%3D');
    var1 = var1.split('>').join('%3E');
    var1 = var1.split('?').join('%3F');
    var1 = var1.split('@').join('%40');
    var1 = var1.split('[').join('%5B');
    var1 = var1.split('\\').join('%5C');
    var1 = var1.split(']').join('%5D');
    var1 = var1.split('^').join('%5E');
    var1 = var1.split('_').join('%5F');
    var1 = var1.split('{').join('%7B');
    var1 = var1.split('|').join('%7C');
    var1 = var1.split('}').join('%7D');
    var1 = var1.split('~').join('%7E');
    var1 = var1.split('¡').join('%A1');
    var1 = var1.split('©').join('%A9');
    var1 = var1.split('±').join('%B1');
    var1 = var1.split('²').join('%B2');
    var1 = var1.split('³').join('%B3');
    var1 = var1.split('¿').join('%BF');
    var1 = var1.split('ß').join('%DF');
    var1 = var1.split('Ø').join('%D8');
    var1 = var1.split('Þ').join('%DE');
    var1 = var1.split('ø').join('%F8');
    var1 = var1.split('\"').join('%22');
    var1 = var1.split('\'').join('%27');
    var salida = ['http://www.texify.com/img/%5CLARGE%5C%21',var1,'.gif'];
    var salida2 = salida.join("");
    return salida2;
    } 
    function latexurlmitch(){
    	var s1 = document.getElementById('cadena1');
    	// Obtenemos el valor del area de texto	
    	texto1 = document.getElementById('texto').value;
    	// Cambiamos su valor
    	s1.value = genurlmitch(texto1);
    }
    function imgpostlatex() {
    	
    		var prev = document.getElementById('texto').value;
    	      if (prev == "")
          {
             alert("Debes escribir una fórmula");
             return (false);
          }
    else {
    	var s1 = document.getElementById('cadena1').value;
    var1 = '[img]';
    var2 = '[/img]';
    var salida = ['[img]',s1,'[/img]'];
    var salida2 = salida.join("");
    insert_text(salida2, true); 
    }
    }
    
    function latexajax(){
    		var prev = document.getElementById('texto').value;
    	      if (prev == "")
          {
             alert("Debes escribir una fórmula");
             return (false);
          }
    else {
    	var s1 = document.getElementById('cadena1').value;
    setTimeout("latexajax2(document.getElementById('cadena1').value)", 1000)
         document.getElementById('latexprev').src = './images/latex/ajaxloader.gif';
    }
    }
    function latexajax2(s1){
         document.getElementById('latexprev').src = s1;
    }
    
    function prevlatex() {
    			var prev = document.getElementById('texto').value;
    	      if (prev == "")
          {
             alert("Debes escribir una fórmula");
             return (false);
          }
    else {
    	var s1 = document.getElementById('cadena1').value;
    window.open(s1, this.target, 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes, width=500, height=400');
    }
    }
    	function BBClatex(text, spaces) {
    
    		var textarea = document.getElementById('texto');
    
    	if (!isNaN(textarea.selectionStart))
    	{
    		var sel_start = textarea.selectionStart;
    		var sel_end = textarea.selectionEnd;
    
    		mozWrap(textarea, text, '')
    		textarea.selectionStart = sel_start + text.length;
    		textarea.selectionEnd = sel_end + text.length;
    	}	
    	
    	else if (textarea.createTextRange && textarea.caretPos)
    	{
    		if (baseHeight != textarea.caretPos.boundingHeight) 
    		{
    			textarea.focus();
    			storeCaret2(textarea);
    		}		
    		var caret_pos = textarea.caretPos;
    		caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
    		
    	}
    	else
    	{
    		textarea.value = textarea.value + text;
    	}
    }
    function storeCaret2(textEl)
    {
    	if (textEl.createTextRange)
    	{
    		textEl.caretPos = document.selection.createRange().duplicate();
    	}
    }
    
  • En el archivo posting_body.html
    Buscar:

    Código: Seleccionar todo

    <td valign="top" style="width: 100%;"><textarea name="message" rows="15" cols="76" tabindex="3" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" style="width: 98%;">{MESSAGE}</textarea></td>
    Reemplazar por:

    Código: Seleccionar todo

    <td valign="top" style="width: 100%;"><textarea name="message" rows="15" cols="76" tabindex="3" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" style="width: 98%;">{MESSAGE}</textarea>
    <br><!-- INCLUDE latexgen.html -->
    </td>

Y listo... Limpias el caché de tu foro (boton Limpiar cache del índice del administrador) y deberías poder ver y usar el MOD.
(Si no se agregara el código al post o no se formara la fórmula, presiona las teclas CONTROL+F5 para actualizar el caché de tu navegador)

Errores? Comentarios? en este tema :D

salu2

Re: LaTeX para phpBB3 (para postear formulas matematicas y mas)

Publicado: 02 Feb 2010, 21:55
por mitch
Tema Cerrado - La web ya no da soporte a webs externas. Una lástima.