Crie tags personalizadas para perguntas na aula de exame

Crie tags personalizadas para perguntas na aula de exame

Estou tentando descobrir como criar um sistema de marcação para as dúvidas que tenho e exibir os resultados em uma tabela de resumo (veja imagem em anexo).

Eu tenho um arquivo .tex de amostra com a seguinte aparência.

\documentclass{exam}

\begin{document}
    
\begin{questions}
\question[1] \tag{Algebra}
This is Question 1. This is tagged against Algebra.

\question[2] \tag{Equations}
This is Question 2.This is tagged against Equations.

\question[2] \tag{Data}
This is Question 3.This is tagged against Data.

\question[1] \tag{Algebra}
This is Question 4. This is tagged against Algebra.

\question[2] \tag{Algebra}
This is Question 5.This is tagged against Algebra.

\question[2] \tag{Data}
This is Question 6.This is tagged against Data.


\end{questions}


\end{document}

Eu gostaria de usar o sistema de tags para produzir uma tabela de resumo como segue. Meus resultados desejados são:

Resultados Qualquer ajuda ou orientação é muito apreciada.

Responder1

Esta solução exige que você forneça uma lista de tagsna ordem de exibição. As questões sem tags ou que não constem da lista serão ignoradas (exceto o total de pontos, que já está computado).

Esta versão só funcionará após as perguntas. Se quiser um resumo antes, você também precisa colocar as tags no arquivo aux.

\documentclass[addpoints]{exam}
\usepackage{tikz}% foreach and pgfmath

\newcommand{\tag}[1]{\expandafter\gdef\csname tagofq@\roman{question}\endcsname{#1}}

\makeatletter
\newcommand{\taglist}[1]{% #1 = comma delimmited list of tags (in order) for summary
\@ifundefined{exam@numquestions}{}{%
\bgroup% use local definitions
  \lineskip=0pt
  \noindent
  \fbox{\parbox[t][1cm][t]{4cm}{\strut Tag}}\hspace{-\fboxrule}%
  \fbox{\parbox[t][1cm][t]{4cm}{\strut Question}}\hspace{-\fboxrule}%
  \fbox{\parbox[t][1cm][t]{4cm}{\strut Points}}\newline
  \foreach \x in {#1} {\count1=0
    \let\qlist=\empty
    \edef\pointsum{0}%
    \loop\ifnum\count1<\exam@numquestions\relax
      \advance\count1 by 1
      \@ifundefined{tagofq@\@roman\count1}{}{%
        \edef\thistag{\csname tagofq@\@roman\count1\endcsname}%
        \ifx\x\thistag\relax
          \ifx\empty\qlist\relax
            \edef\qlist{\the\count1}%
          \else
            \edef\qlist{\qlist, \the\count1}%
          \fi
          \edef\thispoints{\csname pointsofq@\@roman\count1\endcsname}%
          \pgfmathparse{int(\pointsum+\thispoints)}%
          \let\pointsum=\pgfmathresult
        \fi}%
    \repeat
    \vskip-\fboxrule\noindent
    \fbox{\parbox[t][1cm][t]{4cm}{\strut\x}}\hspace{-\fboxrule}%
    \fbox{\parbox[t][1cm][t]{4cm}{\strut\qlist}}\hspace{-\fboxrule}%
    \fbox{\parbox[t][1cm][t]{4cm}{\strut\pointsum}}\newline}%
  \vskip-\fboxrule\noindent
  \fbox{\parbox[t][1cm][t]{4cm}{\strut Total}}\hspace{-\fboxrule}%
  \fbox{\parbox[t][1cm][t]{4cm}{\strut}}\hspace{-\fboxrule}%
  \fbox{\parbox[t][1cm][t]{4cm}{\strut\exam@numpoints}}
\egroup}}
\makeatother

\begin{document}
    
\begin{questions}
\question[1] \tag{Algebra}
This is Question 1. This is tagged against Algebra.

\question[2] \tag{Equations}
This is Question 2.This is tagged against Equations.

\question[2] \tag{Data}
This is Question 3.This is tagged against Data.

\question[1] \tag{Algebra}
This is Question 4. This is tagged against Algebra.

\question[2] \tag{Algebra}
This is Question 5.This is tagged against Algebra.

\question[2] \tag{Data}
This is Question 6.This is tagged against Data.

\end{questions}

\taglist{Algebra,Data,Equations}

\end{document}

demonstração

Responder2

Você provavelmente terá sucesso ao mudar para package xsim, que é a continuação exsheetsdo mesmo autor:https://ctan.org/pkg/xsim. Parece ser o mais adequado dehttps://ctan.org/topic/exam.

Embora odocumentaçãoé opressor, sugiro analisá-lo do início ao fim, ignorando todos os detalhes e obtendo as ideias gerais. Destina-se a fornecerpares exercício-solução(se necessário), incluindo marcação. Também é uma boa ideia baixar o código do github e dar uma olhada no anúncio /doc/examples.

Algumas observações antes de comentar o código abaixo:

  • se você quiser renomear "Exercício" para "Pergunta", consulte o cap. 6 “Novos Tipos de Exercício”; você provavelmente pode pular muitos códigos apresentados lá
  • não tenha medo dos “Templates”, que são apenas uma forma diferente de criar seu próprio layout e conteúdo; como mostrado no manual eles usam muitos comandos básicos do Latex
  • ele fornece alguns comandos de looping, que permitem acessar cada objeto de exercício que você criou e extrair informações conforme necessário (veja meu primeiro exemplo abaixo)

No código abaixo reformulei suas perguntas em xsim-speak, onde a primeira mostra alguns recursos que você pode ou não querer usar. Termino mostrando um par exercício-solução do xsim.

A primeira \gradingtableinstrução é impressa horizontalmente, enquanto a mais fácil é impressa verticalmente. Isso é algo que você pode querer modificar, ou seja, reescrever como um modelo xsim para atender às suas necessidades.

As linhas finais mostram a vocêminhas tentativas até agora fracassadaspara se aproximar da saída desejada. Principalmente as informações do manual eram insuficientes para mim, os exemplos não cobriam realmente e uma pesquisa na Internet não ajudou muito até agora. Mas talvez algum membro mais experiente no uso do xsim possa ajudar.

Então, para mim, parece que o xsim fornece tudo que você precisa para criar seu resultado passo a passo ... só que eu não estava acostumado o suficiente com este pacote ;-)

\documentclass[12pt]{article}
\usepackage{xsim}

\xsimsetup{
    solution/print = true
}

\begin{document}  
  % your examples 
  \begin{exercise}[ subtitle={About algebra}, % showing some features
                    points=1, 
                    bonus-points=1,
                    tags={Algebra}]
    This is Question 1. This is tagged against Algebra. 
     Tag set is: \GetExerciseProperty{tags}
  \end{exercise}
%  
  \begin{exercise}[points=2]%,tags={Equations}]
    This is Question 2. This is tagged against Equations.
  \end{exercise}
%  
  \begin{exercise}[points=2, tags={Data}]
    This is Question 3. This is tagged against Data.
  \end{exercise}
%  
  \begin{exercise}[points=1, tags={Algebra}]
    This is Question 4. This is tagged against Algebra.
  \end{exercise}
%  
  \begin{exercise}[points=2, tags={Algebra}]
    This is Question 5. This is tagged against Algebra.
  \end{exercise}
%  
  \begin{exercise}[points=2, tags={Data}]
    This is Question 6. This is tagged against Data.
  \end{exercise}

% ~~~ an exercise with solution 
  \begin{exercise}
    A first example for an exercise.
 \end{exercise}
% 
 \begin{solution}
    A first example for a solution.
 \end{solution}

% this is standard (hor)
\gradingtable[template=default*]
 
% this is simpler (vert)
\gradingtable
 
  > > > > 
  % here I failed so far
 % \begin{tabular}
    \ForEachExerciseTag{Data}{\ListExerciseTags{Data}{,}}
    
    %\ListExerciseTags{Data}{&}
 % \end{tabular}
 
 
 > > > > 
 
\end{document}

Resultado:

Saída compilada

PS: Aqui acrescentarei novos insights que podem surgir, por exemplo, de comentários adicionais.

Uma sugestão: leia em paralelo o manual em pdf e o código-fonte do xsim; código para encontrar partes relevantes, manual para procurar todos os comandos xsim. No meu sistema, 4 arquivos de origem podem ser encontrados emC:..\AppData\Local\Programas\MiKTeX\tex\latex\xsim. Use um editor como o Notepad ++, abra estes 4 e encontre os termos de pesquisa de seu interesse em todos os arquivos abertos (torna isso rápido e fácil). // Certifique-se de não modificar esses arquivos (!)

B.\tabela de classificação: É definido como um \NewDocumentCommandin xsim.sty. Este lugar é só para dar uma olhada. Para modificar ver cap. 12 "Tabelas de Classificação". A intenção é escrever seu próprio modelo e especificá-lo neste comando, como \gradingtable[type=myTable]. Como criar e inserir seu próprio modelo myTable(a tabela de resumo desejada) consulte o cap. 13 "Estilizando os Modelos de Exercício".

C. Modelo "mecânica": Referindo-se ao Notepad++ ou pesquisa semelhante por DeclareExerciseEnvironmentTemplate. Você pode encontrar todos os modelos mencionados no manual xsim.styem xsim.style.layouts.code.texe xsim-manual.cls. Novamente, é apenas para ver como todos esses comandos xsim são ou podem ser aplicados. Referir-seA.acima. Isso deve lhe dar ideias sobre como projetar o que você pretende myTable, consulteB..

D. xsim como uma caixa de ferramentas: Assim como o Latex, o xsim pretende ser uma caixa de ferramentas. Ou seja, ele fornece a esses objetos Exercício e Solução todas as suas informações internas. Você acessa o conteúdo deles via xsim-commands ... E elabora sua tabela com essas informações, como faria no seu exemplo. E é bastante poderoso.

E. Variando os exemplos: É uma boa ideia copiar e variar exemplos, encontrados em/doc/exemplosdo github (veja acima), como alterar a ordem dos pares exercício-solução, excluir partes, adicionar marcadores de texto bobos, introduzir tags ou comandos xsim. Dessa forma, você tem uma ideia melhor de como as coisas funcionam e quais requisitos devem ser atendidos.

informação relacionada