domingo, 26 de junio de 2011

Instrucciones condicionales

Un aspecto importante del tex es la posibilidad de ejecutar instrucciones tex, o simplemente insertar texto, dependiendo del valor de variables lógicas que pueden tomar el valor verdadero o falso. Inserto a continuación un corto fichero latex que permite obtener dos salidas distintas en función del valor de una variable lógica "sol" . Si el valor de la variable lógica "sol" es "false" se obtienen dos preguntas de un examen tipo test de cuatro alternativas. Si el valor de "sol" es "true" se obtienen los mismas preguntas con un asterisco en rojo, *, señalando la alternativa correcta.

\documentclass[a4paper,11pt]{exam}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage[dvips]{graphics}
\usepackage{amsmath}
\usepackage{times}
\usepackage{txfonts}
\usepackage{pstricks}
%
%   La instrucción:
%

\newif\ifsol

%
%   sirve para definir una instrucción condicional, denominada en el presente
%   caso \ifsol,  que permite la ejecución de texto e instrucciones tex en
%   función del valor de una variable lógica implícitamente definida,  en el
%   presente caso llamada "sol", cuyo valor por defecto es "false", valor que
%   podemos alterar  con las  instrucciones \soltrue  y \solfalse
%
%   La instrucción \ifsol se utliza de la siguiente forma:
%      \ifsol{texto e instrucciones si la variable lógica "sol" tiene el valor "true"}
%       \else{texto e instrucciones si la variable lógica "sol" tiene el valor "false"}
%      \fi
%   puede usarse también en forma reducida:
%      \ifsol{texto e instrucciones si la variable lógica "sol" tiene el valor "true"}
%      \fi
%      
%   equivalente a:
%      \ifsol{texto e instrucciones si la variable lógica "sol" tiene el valor "true"}
%       \else{}
%      \fi
%
%
%   la siguiente macro sirve para marcar la solución verdadera con
%   un asterisco en rojo en las preguntas   tipo test sólo cuando la
%   variable lógica "sol" tiene el valor "true".
%

\def\marca{\ifsol{\hspace{3mm}$\mathbf{\color{red}{\ast}}$}\fi}

              %
\soltrue  % con esta instrucción se marcará la respuesta verdadera con
              % un asterisco rojo; si la desactivamos o quitamos no se marcará
              % nada: por defecto "sol" tiene el valor "false" 
              %
\begin{document}
\begin{questions}
\question La función $f(x)=\dfrac{|x-1|}{x}$,\; definida para $x>0$
\begin{choices}
\choice Es continua y derivable para todo $x > 0$.
\choice Es continua, excepto en el punto $x=1$.
\choice Es continua para todo $x > 0$, pero no es derivable en todo su dominio. \marca
\choice Es discontinua en $x=2$.
\end{choices}
\pagebreak[3]
\question
La integral $\displaystyle \int_0^2 \dfrac{1}{t^2-2t+1}\;dt$ es igual a:
\begin{choices}
\choice $-1$.
\choice $1$.
\choice La integral es divergente.\marca
\choice Ninguna de las anteriores.
\end{choices}
\end{questions}

\end{document}

2 comentarios:

  1. Excelente. La verdad es que ignoraba completamente el uso de sentencias condicionales en TeX. Veo que son útiles, pero me pregunto si se pueden hacer cosas más complejas más o menos facilmente o si, llegado el caso, es más práctico generar texto dinámico a partir de un script para bash, php, python o el lenguaje que uno domine . ¡Gracias por compartir!

    ResponderEliminar
  2. Qué tal?

    Soy un estudiante de matemáticas y un día un profesor nos dio una clase de Latex. La verdad es que fue muy escaso pues no había tiempo y buscando en internet notas he aprendido bastante sobre el tema, pero bueno, la pregunta que me gustaría hacerle es dónde ha aprendido a hacer todo esto, porque yo encuentro manuales pero son casi todos a nivel básico, no hablan nada sobre personalizar cosas.

    En un ejemplo que tiene el título del capítulo aparece en el margen lateral de la página, ese es un ejemplo de cosas que me gustaría saber dónde aprender, es decir, algún manual completo porque realmente hasta ahora obtengo cosas de muchos sitios

    ResponderEliminar