Organizando perguntas

Organizando perguntas

Eu tenho um conjunto de questionários de matemática para serem escritos em TeX, agrupando-os de acordo com seus tópicos, como álgebra abstrata, análise real, equações diferenciais, etc.

Digite as perguntas que aparecem nos questionários na ordem das perguntas e adicione algum rótulo a cada pergunta de acordo com seu tópico. Na saída, as perguntas de todos os questionários sobre o mesmo tópico são organizadas juntas.

Responder1

Pode haver uma maneira melhor de lidar com isso, mas fiz algo semelhante com as respostas dos exercícios em meu livro LaTeX, aproveitando as extensões disponíveis no verbatimpacote que me permitiram reunir as perguntas e as respostas, mesmo que as respostas fossem impressas em um formato seção separada no final de cada capítulo.

Esse é o código que usei (estava tudo no .clsarquivo então usa @como carta). Vou anotar o anúncio para deixar as coisas mais claras

Primeiro crie uma nova gravação(você precisará de um para cada categoria, mas lembre-se de que existem apenas 16 fluxos de gravação disponíveis e o LaTeX usa alguns deles sozinho).

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

Defina o ambiente de respostaIsso é baseado no verbatimwriteambiente de exemplo do verbatimpacotedocumentação. As linhas que começam com \immediate\writesão usadas para adicionar texto adicional além do que está no arquivo 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 é uma das macros que usei para formatar respostas. Na verdade, estou um pouco envergonhado com o quão feia é a marcação da minha saída gerada intermediáriamente.

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

Defina um comando para realmente imprimir as respostasFechamos a gravação e lemos o arquivo no qual escrevemos novamente.

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

Macros para questão de composiçãoEstes são menos interessantes e só aparecem aqui para serem completos.

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

Com todas essas definições feitas, poderíamos então fazer algo assim no arquivo 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}

O que produzSaída do ambiente de perguntasno ponto onde os questionambientes answere aparecem eSaída do ambiente de respostaonde o \printanswerscomando aparece.

No seu caso, você precisará emular o answersambiente para cada uma de suas categorias e então ter um \printallofitcomando ou algo assim que feche e relê todos os arquivos de entrada gerados.

Responder2

biblatexplus oscolafaz o que você quer, mas a curva de aprendizado é alta. Cada questão seria definida como um item do biblatex, com um campo de palavra-chave para definir a classe de tópico da questão. oscolatem as ferramentas para construir uma tabela separada para cada tópico.

Ou, se for uma tarefa única, provavelmente faria o seguinte: colocaria todas as perguntas em um arquivo de texto simples, uma por linha; prefixe cada pergunta com \item \vphantom{\hphantom{keyword}}onde keywordé substituído por uma palavra-chave para cada tópico; grep o arquivo para enviar todas as questões de um determinado tópico em seu próprio arquivo e, em seguida, incluir esses arquivos de saída no documento mestre do LaTeX.

informação relacionada