Organizar preguntas

Organizar preguntas

Tengo un conjunto de cuestionarios de Matemáticas para escribir en TeX agrupándolos según sus temas, como álgebra abstracta, análisis real, ecuaciones diferenciales, etc. ¿Se puede lograr lo siguiente?

Escriba las preguntas que aparecen en los cuestionarios en el orden en que aparecen y agregue alguna etiqueta a cada pregunta según su tema. En el resultado, las preguntas de todos los cuestionarios sobre el mismo tema se organizan juntas.

Respuesta1

Podría haber una mejor manera de manejar esto, pero hice algo similar con las respuestas de los ejercicios en mi libro LaTeX aprovechando las extensiones disponibles en el verbatimpaquete que me permitieron juntar las preguntas y las respuestas a pesar de que las respuestas estarían impresas en un formato. sección separada al final de cada capítulo.

Este es el código que usé (todo esto estaba en el .clsarchivo, por lo que se usa @como una letra). Anotaré la lista para aclarar las cosas.

Primero crea una nueva escritura.(Necesitará uno para cada categoría, pero recuerde que solo hay 16 flujos de escritura disponibles y LaTeX usa algunos de ellos por sí solo).

\newwrite\ans@out
\immediate\openout\ans@out=\jobname.ans

Definir el entorno de respuestaEsto se basa en el verbatimwriteentorno de ejemplo del verbatimpaquete.documentación. Las líneas que comienzan con \immediate\writese utilizan para agregar texto adicional más allá del contenido del archivo de entrada.

\def\answer{%
  \@bsphack
  \let\do\@makeother\dospecials
  \immediate\write\ans@out{\string\preans}
  \immediate\write\ans@out{\string\par\string\noindent
       {\string\sc\space Exercise\string~\thequestion.}\quad}%
  \immediate\write\ans@out{\string\vadjust{\string\nobreak}\relax}
  \catcode`\^^M\active
  \def\verbatim@processline{%
    \immediate\write\ans@out
       {\the\verbatim@line}}%
  \verbatim@start}
\def\endanswer{%
  \immediate\write\ans@out{}
  \@esphack}

Esta es una de las macros que utilicé para formatear las respuestas. De hecho, me da un poco de vergüenza lo feo que está marcado mi resultado generado de forma intermedia.

\def\preans{\if@nobreak\global\@nobreakfalse\else\bigfilbreak\fi}

Definir un comando para imprimir las respuestasCerramos la escritura y luego leemos el archivo en el que volvimos a escribir.

\def\printanswers{\immediate\closeout\ans@out
  \@input{\jobname.ans}
}

Macros para preguntas de composición tipográficaEstos son menos interesantes y sólo aparecen aquí para que estén completos.

\newcounter{question}[chapter]
\def\thequestion{\thechapter-\arabic{question}}
\def\question{\par\refstepcounter{question}\noindent
   {\sc Exercise \thequestion.}
   \ignorespaces}
\def\endquestion{\par}

Una vez realizadas todas estas definiciones, podríamos hacer algo como esto en el archivo de entrada:

\begin{question}
What \LaTeX\ commands would you type at the beginning of the input file for
an article which had the title ``Birds \& Bees of North
America,'' was written by ``Dr.~H.T. Jones'' and had today's date
printed for the date field?
\end{question}

\begin{answer}
\begin{verbatim}
\documentclass{article}
\title{Birds \& Bees of North America}
\author{Dr.~H.T. Jones}
\begin{document}
\maketitle
...
\end{verbatim}
Note that \& is input as \verb+\&+ and a \verb+~+ is used after
``Dr.''\ to prevent an end-of-sentence space from being printed
there (a \verb*+\ + could have been used as well). Today's date
was supplied by omitting the date field.
\end{answer}

que produceSalida del entorno de preguntas.en el punto donde aparecen los entornos questiony yanswerSalida del entorno de respuesta.donde \printanswersaparece el comando.

En su caso, necesitará emular el answersentorno para cada una de sus categorías y luego tener un \printallofitcomando o algo así que cierre y vuelva a leer todos los archivos de entrada generados.

Respuesta2

biblatexAdemás oscolahace lo que quieres, pero la curva de aprendizaje es alta. Cada pregunta se definiría como un elemento biblatex, con un campo de palabra clave para definir la clase de tema de la pregunta. oscolatiene las herramientas para construir una tabla separada para cada tema.

O, si es una tarea única, probablemente haría esto: colocar todas las preguntas en un archivo de texto sin formato, una por línea; prefije cada pregunta con \item \vphantom{\hphantom{keyword}}dónde keywordse reemplaza por una palabra clave para cada tema; grep el archivo para enviar todas las preguntas de un tema determinado a su propio archivo, luego incluya esos archivos de salida en el documento maestro LaTeX.

información relacionada