boletíns de exercicios automatizados con Latex

Son moitos os alumnos que teñen que repetir varias veces unha tipoloxía de exercicio para afianzar o algoritmos de resolución do mesmo. Ademais, os rapaces precisan ter a seguridade que están resolvendo ben o exercicio, e para isto que mellor que facilitarlle o resultado final do exercicio.

Para empregar este recurso na aula, o profesor imprime tantas follas do pdf como alumnos ten na aula e reparte cadanseu boletín. Vexamos un exemplo:

Ficheiro

Código Latex deste documento: https://atio.es/pub/ficheiros/download.php?file=../boletin_atio.zip 

Como podemos observar, trátase dun documento elaborado para 6 alumnos distintos. Imprimiríanse os 6 boletíns e cada alumno ou alumno faría o seu. Se nos fixamos, os valores que aparecen nos diferentes exercicios son distintos para cada boletín.

En ocasións, un alumno ou alumna no sabe moi ben como se resolve. Sen embargo ao facilitarlle o resultado, fai unha especie de enxeñería inversa para descubrir a forma de resolvelo. Outras veces, decide copiar polo compañeiro do lado, cousa moi positiva porque o compañeiro cúbrese de gloria, por é profe por uns instantes. Pero, cos exercicios automatizados, ben é certo que pode copiar a forma de facelo, pero non os resultados, o que lle obriga a pensar.

Probablemente, se chegaches lendo ata aquí, penses que isto non é para ti, pois non sabes nada de código e é o máis parecido ao chino. Realmente non tes porque coñecer todas as funcionalidades nin moito menos. Trátase de ir metendo exercicios e ir probando. Anímate!

Vexamos como podemos elaborar un boletín de exercicios con valores automatizados, é dicir, con variables que collen valores de forma automática e ademais facilitámoslle a resposta aos nenos.

Creación dun boletín

Antes de nada debemos ter instalado un editor unha distribución Latex. Está explicado aquí:

https://blog.atio.es/node/374

E tamén resulta interesante analizar esta nova, onde explico como se incrusta código Python nun documento Latex:

https://blog.atio.es/node/376

 

1. Descargamos o documento mestre seguinte: https://atio.es/pub/ficheiros/download.php?file=../exercicios_aleatorios.zip  

2. Comprimimos o ficheiro e podemos visualizar algo así:

3. Abrimos o ficheiro main.tex e analicemos o contido:

\documentclass[12pt, a4paper]{article}
\include{configs/paquetes}
\ExplSyntaxOn
\cs_new_eq:NN \Repeat \prg_replicate:nn
\ExplSyntaxOff
\title{Boletín de exercicios}
\author{}
\date{}
\begin{document}
%Número boletíns que desexamos crear (por defecto 1)
\Repeat{1}{  
    \textbf{\practica}
    \vspace{2mm}
    \begin{enumerate}
        \item \input{exercicios/exercicio1.tex}
        \item \input{exercicios/exercicio2.tex}     
    \end{enumerate}
    \clearpage
}    
\end{document}

Do código anterior podemos modificar o title, engadir un autor, aínda que neste exemplo non os vou empregar. Tamén debemos modificar o número de boletíns que desexamos crear. Por exemplo, no caso de ter 25 alumnos na aula, deixaríamos o valor repeat así

a. Número de boletíns (main.tex)

\Repeat{25}{

E xa metidos dentro do repeat

b. Título da práctica (main.tex)

\textbf{\practica}

O título da práctica está configurado dentro do cartafol configs e no ficheiro docstyle.sty. Concretamente na seguinte liña:

\newcommand\practica{Práctica de electricidade}

c. Chamada aos diferentes exercicios (main.tex)

  \begin{enumerate}
        \item \input{exercicios/exercicio1.tex}
        \item \input{exercicios/exercicio2.tex}     
  \end{enumerate}

Neste exemplo, estamos chamando a dous exercicios, que están editados no cartafol exercicios. Engadiríamos máis liñas para chamar ao exercicio 3, 4..

\item \input{exercicios/exercicio3.tex}

d. Creación dun exercicio

Abrimos o cartafol exercicios e editamos por exemplo o exercicio 1

\begin{pycode}
from numpy import *
v=random.choice([10,20,30,40,50])
r=random.choice([2,3,4,5])  
i ="{0:.2f}".format(v/r)                  
\end{pycode}
Conéctase unha resistencia de \py{r} k$\Omega$ a unha pila de \py{v} V. Cal é a intensidade de corrente eléctrica que percorre o circuíto?

Solución: I= \py{i} A

Todo o qeu vai entre as etiquetas \begin{pycode} e \end{pycode}, é o código Python.

Na seguinte liña faise un sorteo entre os valores que están entre os corchetes: 10, 20...Obviamente podemos engadir os que queiramos. Cantos máis teñamos menos posibilidades teremos que se repitan nos diferentes boletíns. O valor sorteado asignámolo á variable v.

v=random.choice([10,20,30,40,50])

Seguidamente calculamos a división das dúas variables v e r, e coa etiqueta "{0:.2f}".format, imprimimos o resultado con dous decimais. O resultado deste cálculo empregarémolo máis tarde, para facilitarlle o resultado final aos alumnos.

i ="{0:.2f}".format(v/r)

Una vez finalizada a parte do código procedemos co enunciado do exercicio:

Conéctase unha resistencia de \py{r} k$\Omega$

Para chamar a unha variable sorteada na parte de cálculo farémolo co seguinte código:

\py{r}

E xa por último imprimimos a solución, que calculamos anteriormente na parte de cálculo

Solución: I= \py{i} A

e. Ficheiros de configuración

Pero todo isto non funcionaría sen o emprego de diferentes librerías ou paquetes de latex. No ficheiro paquetes.tex, incluiremos todas as queiramos. A medida que vaiamos aprendendo latex, iremos perfeccionando este ficheiro. Pero para arrancar pode valer o que vos deixo de exemplo.

E outro dos ficheiros importantes é o docstyle.sty, que ven a ser un páxina de estilos do documento. Coma sempre pódese personalizar. Vexamos algún elemento a modificar.

i. Título da práctica. Como vimos, en main.tex utilizámolo.

\newcommand\practica{Práctica de electricidade}

ii. Tipo de fonte tipográfica

\renewcommand{\familydefault}{\sfdefault}

iii. Texto que queiramos no cabeceiro o no pé de páxina

Por exemplo no lado esquerdo imprimimos o departamento didáctico, que definimos máis arriba en: \newcommand\departamento{Departamento de tecnoloxía} :

\lhead{
\scriptsize\textbf{\departamento}

E no lado dereito imprimimos o logotipo do departamento. Trátase dunha imaxe co nome de tux.png que está no cartafol imaxes. E para imprimila no documento empregamos as seguintes liñas

\rhead{
%logotipo do departamento
\includegraphics[scale=0.35]{tux.png}

Compilación do documento

Tal e como escribín na nova https://blog.atio.es/node/376, nos documentos Latex que teñan incrustado código python debemos de empregar tres instrucións, que pode cambiar a relativa a pythontex, en función de onde decidamos instalar esta utilidade, se é que non está instalada de forma nativa no sistema.

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode *.tex

python3 /usr/share/texmf-dist/scripts/pythontex/pythontex3.py *.tex

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode *.tex
pdf