Exam
Origem: Tex-Br, a enciclopédia livre.
Usando a classe exam
Este pacote é muito útil para a elaboração de provas, testes, exames, vestibulares, etc. Abaixo veremos algumas de suas mais importantes opções, com comentários explicativos. O pacote completo pode ser baixado de: CTAN classe EXAM
O autor é Philip S. Hirschhorn, e sua página tem maiores detalhes.
O que se segue é um arquivo .TeX completo, que pode ser compilado sem erros.
\documentclass[12pt]{exam} %versao 2.2
Também se pode utilizar a opção [answers]. Se preferir, como abaixo fizemos, deixe omitida essa opção e utilize o comando printanswers (que será explicado a seguir).
\usepackage{amsmath} % habilita funções matemáticas do AMS-LaTeX
\usepackage[brazil]{babel} % dicionário para o ".tex", traduções na compilação
\usepackage[utf8]{inputenc} % acentuação usando UTF8 (ou senao, use latin1)
Você pode também querer utilizar o \usepackage[T1]{fontenc} para hifenização. Aqui termina o preâmbulo e começa o documento:
\begin{document}
%imprimir solução ----------------------------------------
%comente o comando \printanswers a seguir para gerar a prova
%descomente o comando \printanswers a seguir para gerar o gabarito com soluções
\printanswers
O comando \printanswers imprime a prova junto com as soluções das questões. Infelizmente ele não sabe responder as questões para você, portanto elas devem estar devidamente escritas dentro de ambientes \begin{solution} ... \end{solution}.
% traduções ----------------------------------------
\pointpoints{ponto}{pontos}
\renewcommand{\solutiontitle}{\noindent\textbf{Solução:}\enspace}
\qformat{\textbf{Questão \thequestion:}\hfill[\pointsofquestion{\arabic{question}} \points]}
%\totalformat{Total da questão \thequestion: \totalpoints\ \points} %ou use como na próx. linha
\totalformat{Total: \totalpoints\ \points}
\marginpointname{ \points}
\hqword{Questões} %substitutes text for “Question:”
\hpgword{Páginas} %substitutes text for “Page:”
\hpword{Total de pontos} %substitutes text for “Points:”
\hsword{Pontos conseguidas} %substitutes text for “Score:”
\htword{Total} %substitutes text for “Total”
Estes comando acima servem, respectivamente, para traduzir as expressões:
- point e points por ponto e pontos.
- Solution por Solução (no ambiente de soluções)
- qformat é um comando importante. Além de traduzir Question 1: por Questão 1: (no cabeçalho de cada nova questão), pode alterar como os pontos são mostrados no começo de cada questão.
- Total: (pode-se alterar como será mostrado o total de pontos de cada questão)
- \marginpointname traduz como ficará o termo de pontuação quando escrito na margem.
- itens iniciados por h se referem à tabela de pontuação criada no final deste exemplo, para facilitar a correção e a soma dos pontos obtidos.
% ajustes ----------------------------------------
%\pointsinrightmargin
%\pointsinmargin
\addpoints
\bracketedpoints
%\pointsdroppedatright
\setlength\linefillheight{.6cm} %distância entre linhas
Os ajustes mostrados acima se referem respectivamente à:
- Habilita mostrar os pontos de cada questão na margem direita.
- Habilita mostrar os pontos de cada questão na margem esquerda (por default - por omissão -, os pontos são mostrados no texto (não na margem), logo após o número da questão).
- addpoints é um comando que habilita a soma automática de pontos, permitindo utilizar muitos outros comandos (como por exemplo o totalpoints). Sem addpoints, os outros comandos dependentes dele ficam desabilitados.
- bracketedpoints troca os parênteses por colchetes para abraçar os pontos.
- pointsdroppedatright indica que quando se utilizar o comando droppoints, os pontos devem ser colocados à diretia.
- linefillheight define a distância entre as linhas que serão desenhadas no espaço dado à solução de questões dissertativas. Mais detalhes adiante.
% Cabeçalho e Roda-pé ----------------------------------------
\pagestyle{headandfoot}
\headrule
\footrule
%\firstpageheader{ICC}{$2^o$ exame}{31-05-05}
%\runningheader{ICC}{$2^o$ exame \emph{(Continuação)}}{31-05-05}
\lhead[\bf\large Teoria da Computação\\ \normalsize Prof. Ruben Carlo Benante\\
Nome e Turma:\rule{10cm}{0.2mm}]{Teoria da Computação\\ Nome e turma:\rule{9cm}{0.2mm}}
\chead[]{}
\rhead[\bf\large $2^o$ exame\\ 31-05-05]{$2^o$ exame \emph{(Continuação)}\\ 31-05-05}
\lfoot{\iflastpage{Pág. \thepage\ de \numpages}{}}
\cfoot{\iflastpage{Fim do Exame}{Pág. \thepage\ de \numpages}}
\rfoot{\iflastpage{Boa Sorte!}{}}
Para definir o cabeçalho e o rodapé, utilize o comando \pagestyle{headandfoot} (outras opções são head ou foot). O comando \headrule e \footrule traçam uma linha divisória entre o cabeçalho, o texto principal e o roda-pé.
Existem duas formas de se definir o cabeçalho (análogo ao roda-pé, por isso explicaremos apenas o cabeçalho). Usando o comando \firstpageheader você define o cabeçalho da primeira página, e usando seu companheiro \runningheader você define o cabeçalho das páginas seguintes. As três opções que se seguem são relacionadas ao posicionamento do texto, na ordem: esquerda, centralizado e direita da página.
A outra forma utilizada acima (sem os comentários), são os comandos '\lread' (para o texto à esquerda no cabeçalho - Left), '\chead' (para o texto Centralizado no cabeçalho) e \rhead (para o texto alinhado à direita). O mesmo vale para o roda-pé, com as iniciais l de left, c de center e r de right, no comando foot.
Nestes comandos, a opção alternativa (entre [colchetes]) se refere ao que será mostrado na primeira página, e a opção entre {chaves} se refere às outras páginas (ou à todas, caso a opção entre colchetes não seja definida).
Um detalhe interessante que podemos ver é o comando \iflastpage{ultima}{outra}, que retorna o texto ultima se a página for a última, senão retorna o texto outra. Por exemplo, no comando \rfoot{\iflastpage{Boa Sorte!}{}}, o roda-pé, canto direito (right) mostrará as palavras de incentivo Boa Sorte! apenas na última página, e nas outras não mostrará nada ({}).
Neste momento, com tudo já definido, é hora de colocar as questões propriamente ditas. O comando addpoints só funciona quando na prova toda existe apenas um ambiente \begin{questions}... \end{questions}, e então faremos assim.
\begin{questions}
\question
Quem é você?
\begin{parts}
\part[10]
Nome?
\begin{solution}
Jorge Borhaisen
\end{solution}
%\droppoints
\part[10]
Dogmas?
\begin{solution}
A economia é o fundamento da vida.
\end{solution}
%\droppoints
\end{parts}
%\droptotalpoints
O ambiente questions (plural) é seguido por vários comandos question (singular), numa estrutura parecida com o itemize seguido por item. Cada comando question inicia uma nova questão, numerada (no formato do qformat explicado acima). Depois de um comando question você pode subdividir a questão em partes, que as partes serão automaticamente numeradas (por exemplo, questão (1) (a), (1) (b), etc.). E você também pode incluir partes dentro de partes, que a numeração será mantida. O uso de label e a referência a uma questão utilizando ref também é permitida.
Vemos ainda neste trecho que o comando part leva um opcional entre colchetes. Esse valor é a quantidade de pontos que é atribuído à questão. Ele é o valor que será tratado pelo comando addpoints quando for necessário fazer totais.
Também aparece um exemplo do ambiente solution que é simplesmente um espaço onde se deve escrever a solução da questão, para o caso de se imprimir os gabaritos. Para evitar usar o comando fillwithlines (abaixo), também se pode utilizar o solutionorlines no lugar de solution.
Os comandos droppoints e droptotalpoints são utilizados para ir mostrando os valores de cada questão e de cada parte, e no final o valor total da questão. Esta é uma forma alternativa de fazer o mesmo serviço, mas tem-se que ficar escrevendo esses comandos a cada questão, o que torna a tarefe tediosa. Como nós redefinimos o cabeçalho da questão, e estamos usando as opções de pontuação entre colchetes, não precisamos deles.
Seguimos com mais algumas questões:
\question[20]
Para onde vai?
\fillwithlines{2.5cm}
\question[20]
De onde veio?
\begin{solution}
Da lua de marte.
\end{solution}
\fillwithlines{2.5cm}
Aqui mais duas questões, dessa vez dissertativas. Note que o comando question também aceita o opcional entre colchetes para o valor da questão. O comando fillwithlines{2.5cm} deixa um espaço de 2.5cm para respostas, e preenche esse espaço com linhas. A distância de cada linha é calculada pelo \setlength\linefillheight{.6cm}, como dito acima.
\question[25]
Escolha a alternativa correta. Dom Pedro I gritou:
\begin{solution}
Independência ou morte!
\end{solution}
\begin{choices}
\choice
Independência ou morte!
\choice
Hortência, volte!
\choice
Nunca tive sorte!
\choice
Sou burro mas sou forte!
\end{choices}
\end{questions}
Por fim, um exemplo de como utilizar questões de múltipla-escolha. Após iniciar a questão (question), colocar a solução (opcional, claro, usando o ambiente solution), inicie o ambiente \begin{choices}..\end{choices} (note o plural).
Neste ambiente, cada subdivisão é dada pelo comando choice (singular), e serão automaticamente numeradas (com A., B., C., ...).
Ao final das questões, feche o ambiente \end{questions}. Mas ainda não acabou!
\vspace{0.5cm}
\gradetable[h]
\end{document}
Após um pequeno espaço vertical (vspace), você tem a opção de utilizar o comando gradetable, que com a opção [h] (de horizontal), gera uma tabela com a pontuação de cada questão, e ainda com um espaço em branco para você preencher (à caneta, quando for corrigir a prova) a pontuação alcançada pelo aluno.
Por fim, \end{document}
Veja o Exam1.DVI para apreciar a arte final deste exemplo.
--Behco 11:16, 1 Jun 2005 (BRT)
