Exámenes con LaTeX: Usos Prácticos

Cómo crear y acomodar tablas de puntos

Mariano Morales Ramírez
Technicolor >
9 min readMay 25, 2018

--

Manipulando documentos con LaTeX: Usos Prácticos

En este apartado en particular voy a demostrar la versatilidad y funcionalidad de LaTeX a través de un tipo de documento — examen — que en lo personal utilizo con frecuencia y que ejemplifica de manera perfecta el poder del sistema — además de ilustrar, con código sencillo, la optimización que se puede lograr en términos de tiempo a partir reducir o eliminar el margen de error que es habitual al diseñar exámenes en procesadores de texto. Como podrán apreciar, esto permite a quien utiliza LaTeX, enfocarse en el contenido y no tanto en la forma (de eso se encarga LaTeX, y perfectamente).

Echa un vistazo al siguiente documento:

Para dimensionar a que me refiero con optimización del tiempo que pasamos diseñando documentos o dándoles formato (y de cómo va inmerso a esto la eliminación de errores frecuentes), veamos las líneas de código, que además tiene la enorme ventaja de ser legible por humanos, a diferencia de Perl, por ejemplo.

Para crear la tabla de puntos en LaTeX, sólo tuve que ingresar:

¡Listo!

¡Es todo! Con sólo esa sencilla línea de código, creé esta tabla de puntos:

Si te parece increíble, déjame decirte que LaTeX es un sistema infinitamente más poderoso que eso. Por ejemplo: digamos que queremos ahorrar espacio y en vez de desplegar una tabla de puntos de forma vertical, lo queremos hacer de forma horizontal, es decir, que se vea así:

Para ello, aunque no lo creas, sólo tuve que cambiar una letra.

Al cambiar [v] por [h], la tabla se despliega de manera horizontal.

Resulta que el comando \gradetable cuenta el número de problemas que existen en el examen y genera una tabla con la ponderación o los puntos que otorga cada uno, mientras que [v] le indica que la tabla debe desplegarse en dirección [v]ertical.

Puede parecer algo aterrador en un principio, pero si lo analizas bien te darás cuenta que realmente no es tan complicado porque el código es entendible por humanos. Lo terrible sería intentar diseñar el mismo formato utilizando Word, PowerPoint, Pages, etc…

Ahora, digamos que queremos ahorrar más espacio, y en lugar de tener una fila para cada problema, queremos solamente contar los puntos que hay en cada página. Para ello sólo tenemos que agregar una palabra: [pages] .

Así se vería la tabla y el código que le corresponde:

Nota que el \begin{center}da inicio al centrado de la tabla, y el \end{center} termina el centrado. Todo lo que siga a partir de \end{center} no se alineará al centro junto con la tabla de puntos.

Veamos los elementos que le preceden y proceden a la tabla:

El resultado, contrastando ambas versiones, es el siguiente:

Recapitulando: realmente el único cambio que tuve que hacer es sustituir v por h y después para cambiar de problemas a páginas sólo agregué el atributo [pages] .

Lo cierto es que este tipo de acomodos y automatización es posible para todos los elementos que puedan integrar el documento, y para ello se pueden utilizar variables o definiciones en el preámbulo (todo lo que le asignamos al documento antes de empezar).

Toma en cuenta que esto pudiese ser cualquier elemento y no solamente preguntas de examen. Imagina que sean citas, o todas las fotos de una publicación, o todos los títulos…

Además, no podemos ignorar el tema de la calidad de impresión, resolución y distribución/uniformidad de elementos que componen el documento.

Observa cómo la tabla no pierde calidad en su resolución en ningún momento incluso después de haber aplicado un acercamiento a una escala de 1812 puntos, o sea, un zoom máximo de 18x.

De forma similar, LaTeX te permite definir las medidas y las características de cada elemento, textual o gráfico. Te permite asignar variables para usarlas en contextos distintos, así como diferentes atributos para diferentes variables.

Puedo, por ejemplo, asignarle con un comando que en vez de que los puntos se desplieguen dentro de una caja, se muestren en el margen del lado izquierdo, con o sin caja, usando \pointsinmargin en vez de \pointsinrightmargin . Para hacer que los puntos aparezcan dentro de una caja, agrego \boxedpoints y listo. Así, con esta misma facilidad, puedo personalizar cualquier documento y cualquier elemento dentro de él, tal como puedo cambiar el estilo o tipo de letra, su tamaño, color o posición, por mencionar solo algunas.

Imagínate lograr esto en Word, Power Point o aquí, en Medium. Sería imposible obtener el mismo resultado sencillamente porque éstos son procesadores o presentadores de texto, mientras que LaTeX es además de un editor de texto, un sistema complejo de tipografía, programación (que con LaTeX realmente es casi un tema de automatización), y diseño de documentos y formatos para publicación, como ya lo hemos mencionado anteriormente.

Imagina lo que LaTeX puede hacer por ti si lo implementas poco a poco y conoces su estructura. Realmente el límite sería tu imaginación, y no hay cosa que no pueda ser creada o diseñada en LaTeX si te da curiosidad.

Es cierto, LaTeX no es para todos, y pensar que todos lo aprenderán o se interesarán en él es ilusorio, pero algo es cierto: no importa quién seas, la próxima vez que veas el formato de LaTeX, observarás el contexto entero y alguna característica de valor hallarás en quien sea o cual sea la razón que te hace consumir o interactuar — textual o gráficamente — con LaTeX.

Páginas Web con LaTeX

Este apartado es una vista previa

Con LaTeX podemos crear y desplegar todo este poder automáticamente en el navegador.

¡Sí! — y si eres programador, o estás familiarizado con estas tecnologías, ¡LaTeX puede ser controlado con JavaScript!

Esta es una página de mi sitio web en la que utilizo una librería de LaTeX que es activada por medio de una función de JavaScript.

JavaScript te permite asignar identificadores para aplicar funciones, es decir, cuando JavaScript está habilitado, y encuentra $$ o \( \) (y otras variaciones del mismo tipo) todo lo que se encuentre dentro de esos caracteres, será desplegado utilizando LaTeX. También es posible cargar LaTeX por medio de clases de CSS en <div> o <span>:

Esto minimiza tremendamente el tiempo de carga de la página y hace por primera vez, que sea posible mezclar HTML y JavaScript con LaTeX de manera funcional sin comprometer la velocidad de carga ni depender ningún plugin o activador, de la compatibilidad de buscadores o de ambientes exclusivos de un sistema u otro. Todo automatizado. El usuario ni cuenta se da.

Para entender mejor a qué me refiero con cargarlo o activarlo por medio de JavaScript, nota cómo se despliega

$$ por ejemplo: a² + b² = c² $$.

Tu navegador no despliega LaTeX por más de una razón, pero principalmente, porque Medium no lo soporta, y para ello tiene que estar instalado en el servidor o en el código fuente, al cual no tenemos acceso — aún. Si lo cargara, no verías los signos $$, ni tampoco el mismo tipo de letra.

Sin embargo, en la siguiente muestro cómo LaTeX se despliega en mi sitio web, donde tengo LaTeX instalado en el servidor:

Puedes ver cómo se despliega LaTeX al llamarlo con $$ por medio de JavaScript. Esto es de gran relevancia para cualquier tipo de publicación, pues imagina poder desplegar toda la elegancia y funcionalidad de LaTeX a tus publicaciones — de forma gratuita y casi automática.

Así se ve LaTeX en cualquier navegador moderno (o sea, todos menos Internet Explorer)

https://marianomorales.blog/LaTeX

Haciendo zoom (x5):

LaTeX en el navegador

Más zoom (x18)

¿Increíble no?

Puedes crear cosas como las que se están creando todos los días en medios digitales — tanto científicos como no científicos — , o crear exámenes de cualquier materia y sortear las preguntas de forma aleatoria y crear las claves en segundos — sí, para cualquier materia, pues su uso no se limita a ciencias o matemáticas — y crear cada vez un instrumento diferente sin consumir una décima fracción de lo que te hubiera llevado realizarlo en Word, Power Point, Pages, o similares. Prezi, Manuscripts y Slides, entre muchos otros, ya tienen soporte para LaTeX. Para ver estas herramientas en acción, visita la sección de cálculo de mi blog, que creé usando cuadros de texto y LaTeX exclusivamente:

Usos un poco más complejos de LaTeX

Es importante también tomar en cuenta que LaTeX no es la competencia ni busca superar o reemplazar a los procesadores o editores de texto, ni tampoco rebasar otras tecnologías; más bien existe para ofrecer soluciones integrales a proyectos que de lo contrario utilizarían más de un componente (o cliente, si hablamos de software), y nació hace más de 30 años, mismos en los que sólo se ha visto un crecimiento y una valoración más alta con cada año que pasa.

Un claro ejemplo de estas soluciones y de la razón por la que existe LaTeX, es WeBWorK. WeBWorK es un sistema complejo (muy complejo, diría yo) en donde conviven distintos ambientes de desarrollo así como lenguajes de programación.

Imagina, en un mismo documento, HTML, JavaScript, Perl, Python y LaTeX conviviendo e interactuando de forma armónica. Alguien tuvo que sufrir mucho para hacerlo posible, y la maravilla de todo es que quien está frente a la computadora, no tiene una mínima idea de lo que hay detrás de ese aparente sencillo sistema de tareas.

Esto es un ejemplo del ambiente en que conviven estas tecnologías en un programa como WeBWorK:

Perl? ¡No gracias!

En el caso anterior, todo lo que se halla entre \( entre este par de diagonales y paréntesis \), el navegador lo reconoce como código de LaTeX y lo despliega automáticamente:

\( es equivalente a $.

Para no extenderme más en este tema (que sin duda exploro con detalle en otros artículos dedicadas a WeBWorK), pero sólo resumiré que sin LaTeX, éste valiosísimo recurso perdería todo su potencial y todo el beneficio que le ha traído a los alumnos por más de 20 años, y que yo he tenido la oportunidad de validar tanto como alumno, y ahora como docente — .

Los más de 100,000 problemas validados y alimentados en la base de datos de WeBWorK no podrían ser sorteados o revisados automáticamente (lo que le vale su gran aceptación y uso) si no se permitiese su interacción armónica pero autónoma con Python.

Lee más acerca de este tema en mi blog:

--

--

Mariano Morales Ramírez
Technicolor >

I teach STEM related courses with AI. I like helping students find and unleash their true potential by enabling opportunities. Former Texas Tech student.