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 verbatim
pacote 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 .cls
arquivo 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 verbatimwrite
ambiente de exemplo do verbatim
pacotedocumentação. As linhas que começam com \immediate\write
sã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 produzno ponto onde os question
ambientes answer
e aparecem eonde o \printanswers
comando aparece.
No seu caso, você precisará emular o answers
ambiente para cada uma de suas categorias e então ter um \printallofit
comando ou algo assim que feche e relê todos os arquivos de entrada gerados.
Responder2
biblatex
plus oscola
faz 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. oscola
tem 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.