Teoremas, definiciones, ejemplos, etc. en español con AMS-Latex en Lyx

Desde hace un tiempo soy usuario de Lyx, un procesador de texto WYSIWYM basado en LaTeX, pero casi WYSIWYG gracias a que es un híbrido dirigido a principiantes de LaTeX o, simplemente, a hacer más fácil la vida trabajando con TeX. En particular, requiero escribir contenido matemático y, para ello, me es muy útil el paquete AMS LaTeX que existe para LyX, pues con él puedes escribir fácilmente teoremas, definiciones, ejemplos, corolarios, etc. numerados o sin numerar, automáticamente y con un excelente y elegante formato. Sin embargo, tenía un problema, y es que el paquete AMS LaTeX, no por nada de la American Mathematical Society, está hecho para escribir en inglés y, más frecuentemente, requiero escribir en español. El problema era entonces que los títulos de los ambientes, ya en el pdf, me aparecían en inglés (theorem, corollary, definition, etc.) en vez de en español como, de hecho, sí aparecen en LyX (creo que gracias a al paquete babel, que por lo demás traduce muy bien el resto de los ambientes). Había estado lidiando con este problema por un rato, y todas las soluciones que había encontrado eran para usuarios de LaTeX puro, pero no estaban claras para los usuarios de LyX y no lo había podido arreglar, hasta hoy. En los foros de LaTeX community, encontré un hilo donde se plantea una solución que me sirvió casi tal cual, con una pequeña modificación. La solución consiste en modificar el preámbulo de LaTeX desde LyX (Documento –> Configuración –>Preámbulo LaTeX) y añadir unas líneas donde se especifica que hay que intercambiar los nombres por los títulos en español. Para cambiar los títulos de teoremas, definiciones, proposiciones, ejemplos, etc. a mi me quedó así:

\makeatletter
\@namedef{thm}{\@thm{\let \thm@swap \@gobble \th@plain }{thm}{Teorema}}
\@namedef{cor}{\@thm{\let \thm@swap \@gobble \th@plain }{thm}{Corolario}}
\@namedef{defn}{\@thm{\let \thm@swap \@gobble \th@definition }{thm}{Definici\'on}}
\@namedef{prop}{\@thm{\let \thm@swap \@gobble \th@plain }{thm}{Proposici\'on}}
\@namedef{prop*}{\@thm {\th@plain }{}{Proposici\'on}}
\@namedef{example*}{\@thm {\th@definition }{}{Ejemplo}}
\@namedef{xca}{\@thm{\let \thm@swap \@gobble \th@definition }{thm}{Ejercicio}}
\@namedef{rem*}{\@thm {\th@remark }{}{Observaci\'on}}

En la liga, pueden ver los detalles de el por qué de cada línea. La única añadidura que hice fue eliminar una línea al final, según el texto que proponen en el foro, pues a mi me dió problemas (usando LyX 1.6.5 con babel en Ubuntu 10.04) y no me compilaba.

Espero esto ayude a alguien más que pudiera tener este problema.

16 pensamientos en “Teoremas, definiciones, ejemplos, etc. en español con AMS-Latex en Lyx

  1. hola
    recientemente comence a utilizar lyx y me enfrente al problema que describes. tu solución me funciono perfectamente, sin embargo segui teniendo problemas al tratar de usar el módulo de demostración, y el ambiente de bibliografia. finalente encontre una solucion quiza les sea de ayuda.
    Basta con insertar en codigo tex al inicio del documento lo siguiente (necesariamente en el documento, no en el preambulo latex):

    \renewcommand\refname{Referencias}

    \renewcommand\proofname{Demostraci\’on}

    saludos

    Me gusta

  2. Para la clase Book que no tiene capítulos aparecen 0.1 y así …
    para evitar esto poner en el preámbulo:

    \renewcommand{\thesection}{\@arabic\c@section}

    Fuente: Bioinformático

    Me gusta

  3. Otra duda,
    resulta que mi lyx me está numerando las definiciones, lemas, ejercicios con el mismo conteo, es decir si ponga por jeemplo definición 1, luego pongo un ejercicio y me dice ejercicio 2, en vez de decir ejercicio 1.
    … Sabes como resolverlo?

    Me gusta

    • Me da gusto que te sirva mi aporte, Ramón. Para numerar independientemente los diferentes campos tienes que agregar un módulo de LaTeX (package) en las opciones del documento. Te vas a documento –> configuración y del lado izquierdo hay un campo que dice módulos; ahí seleccionas el de AMS que dice numerar independientemente los campos o algo así, lee lo que dice y justamente hay uno que dice específicamente que eso es lo que hace, cambiando el comportamiento predefinido que comentas. Yo también lo cambié porque tampoco me gusta la numeración predefinida. Sólo toma en cuenta que hay algunos paquetes que no son compatibles entre sí y hay otros que son dependientes de segundos paquetes, pero ahí mismo te pone en gris los paquetes que no puedes instalar si tuvieras problemas de dependencias, en cuyo caso, elimina el paquete que te crea conflicto para que puedas agregar el nuevo.

      Me gusta

      • Hola Fermín,
        muchas gracias por el aporte, llevaba un cierto tiempo buscando la forma de que LyX al generar el documento pdf escribiese en español las palabras «teorema», «ejemplo», etc.
        No obstante, con respecto a la numeración, no basta sólo con ir a Documento->Configuración y elegir los módulos adecuados de AMS. Efectivamente hay que cargar estos módulos, pero aún así, aunque en el documento lyx se ve la numeración correcta, al generar el pdf sigue numerando consecutivamente con independencia del tipo de objeto, esto es, te imprime «Teorema 1», «Corolario 2», «Ejercicio 3», etc.

        El problema deriva de que en el preámbulo que has puesto, para todos los objetos siempre figura {thm} antes de la traducción al español, como en:
        \@namedef{cor}{\@thm{\let \thm@swap \@gobble \th@plain }{thm}{Corolario}}
        por lo que al compilarlo se numeran todos los objetos consecutivamente. La siguiente modificación, muy simple, en la que cada objeto recibe su nombre antes de la traducción, me ha resuelto el problema:

        \makeatletter
        \@namedef{thm}{\@thm{\let \thm@swap \@gobble \th@plain }{thm}{Teorema}}
        \@namedef{thm*}{\@thm {\th@plain }{}{Teorema}}
        \@namedef{cor}{\@thm{\let \thm@swap \@gobble \th@plain }{cor}{Corolario}}
        \@namedef{cor*}{\@thm {\th@plain }{}{Corolario}}
        \@namedef{defn}{\@thm{\let \thm@swap \@gobble \th@definition }{defn}{Definici\’on}}
        \@namedef{defn*}{\@thm {\th@plain }{}{Definición}}
        \@namedef{prop}{\@thm{\let \thm@swap \@gobble \th@plain }{prop}{Proposici\’on}}
        \@namedef{prop*}{\@thm {\th@plain }{}{Proposici\’on}}
        \@namedef{example}{\@thm{\let \thm@swap \@gobble \th@definition }{example}{Ejemplo}}
        \@namedef{example*}{\@thm {\th@definition }{}{Ejemplo}}
        \@namedef{xca}{\@thm{\let \thm@swap \@gobble \th@definition }{xca}{Ejercicio}}
        \@namedef{xca*}{\@thm {\th@plain }{}{Ejercicio}}
        \@namedef{rem}{\@thm{\let \thm@swap \@gobble \th@definition }{rem}{Observaci\’on}}
        \@namedef{rem*}{\@thm {\th@remark }{}{Observaci\’on}}

        Espero que le sea útil a quienes se encuentren con este problema.

        Saludos

        Me gusta

      • ¡Gracias por tu aporte! No recuerdo que yo tuviera el problema que mencionas, es decir, creo que a mi sí me imprimía bien la numeración en el PDF también, pero en caso que alguien tenga el mismo problema, por supuesto que puede ayudar. Nuevamente gracias.

        Me gusta

  4. Hola Fermín,
    busqué en google una solución a mi problema, ese de cambiar el idioma a los modulos de matemáticas, total que dí con tu blog, apliqué la solución y ya cuando iba guardar la página por si en el futuro necesito esta funcionalidad me di cuenta que TU eres el autor… Ja ja

    Saludos

    Me gusta

    • Debes agregar una línea como

      \@namedef{lem}{\@thm{\let \thm@swap \@gobble \th@plain }{thm}{Lema}}

      entre las otras definiciones que quieras hacer para cambiar los nombres.

      Me gusta

      • Hola. Cómo podría hacer para que al insertar una tabla, en lugar de que aparezca Cuadro, aparezca Tabla.
        Gracias.

        Me gusta

  5. Muchas gracias por tu aporte, me ha sido de gran utilidad.
    Estoy escribien mi proyecto fin de carrera en un tipo de documento libro en LYX y hay un par de cosas que no consigo hacer:
    – La primera es cambiar que en lugar de que aparezca Bibliografía, aparezca Referencias.
    – Y la seguna es que estas Referencias aparezcan en el índice general.
    He estado buscando por varios sitios, pero no me ha funcionado nada de lo que he encontrado. Uso LyX para Windows.

    Gracias.

    Me gusta

    • El primer número debe ser el número de la sección, el segundo de la subsección. ¿Has definido algúna sección? Probablemente estés usando en ambiente de subsección y se te haya olvidado usar el de sección. Si sólo tienes un nivel de profundidad en tu árbol, te recomiendo usar solamente secciones y no usar subsecciones. Por otro lado, podría también ser que estés usando una clase de documentos que utilice «partes» como en la clase de libro (Book); revisa qué clase de documento estás usando.

      Me gusta

      • Hola!
        Justo tengo la misma duda!
        Y quiero saber en qué ocasiones es conveniente usar la clasificación de «Capítulo», pues a mi parecer se ve más elegante usar clasificación de «capítulo» y «sección», que usar «sección y subsección», pero al hacerlo así salen mal las numeraciones en el pdf final.
        También quiero saber como hacer que «List of Tables», «List of Figures», «Chapter» etc salgan en español. Me refiero al formato de «book» normal.

        Me gusta

      • Aún está viva ésta conversación?
        Tengo justo la misma duda, aunque estoy usando 3 niveles de profundidad, capítulo, sección y subsección. En la edición del archivo Lyx todo sale perfecto, en el capítulo 2 tengo secciones 2.1, 2.1, 2.3 etc. Pero cuando lo exporto a pdf, tanto en el índice como en cada sección aparecen como 0.1, 0.2, 0.3.
        Hice una corrección que recomendaron que fue poner en los preámbulos:

        \renewcommand{\thesection}{\@arabic\c@section}

        Ahora aparecen las secciones como 1, 2, 3, y para el capítulo 3 se siguen como 4, 5, 6, etc
        Al menos ya no salen con un cero a la izquierda, pero sigue sin respetarse la numeración en las secciones y subsecciones con respecto a los capítulos (aunque en el archivo de Lyx todo se vea perfecto)

        Me gusta

¿Qué te parece? ¿Qué opinas?