Criei uma turma que adapta a turma do exame às necessidades da minha escola e acrescentei algumas coisas para controlar a turma de fora por meio de um roteiro para poder criar uma prova individual para cada aluno com o nome e informações adicionais impressas. Tudo isso é controlado por um script bash externo. Eu uso algo parecido pdflatex "\newcommand\examstudentname{somestudent} \newcommand\externalwithanswers{no}" the_exam.tex
com o script bash para gerar o pdf do exame. Como no the_exam.tex
arquivo pode acontecer que a opção [answers]
tenha sido definida acidentalmente, pode ser criado um exame com respostas incluídas (na verdade, algo assim aconteceu uma vez na nossa escola). Para ter controle total, preciso que o script configure e desative opções como [answers]
as da classe que herdei ( exam.cls
).
Caso 1: Meu the_exam.tex
pode ter:
\documentclass{HTWChurExam}
HTWChurExam.cls
tem algo como:
\PassOptionsToClass{answers}{exam}
Isso é ativado deliberadamente [answers]
para exam.cls
. Sem problemas, resolvido. Fácil de controlar externamente por meio de um script.
Caso 2: Meu the_exam.tex
pode ter:
\documentclass[answers]{HTWChurExam}
HTWChurExam.cls
tem algo como:
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{exam}}
que passará todas as opções para exam.cls. Quero agora ter a possibilidade de virar deliberadamentedesligado [answers]
, controlado por um script bash.
Não encontrei nenhuma maneira de conseguir isso.
Responder1
Minha solução é:
\providecommand{\externalwithanswers}{}% fallback definition
\newcommand{\withname}{yes}
\newcommand{\withscoretable}{yes}
\newcommand{\withpagescore}{yes}
\newcommand{\withanswers}{}
\newcommand{\withanswersnewpage}{}
\newcommand{\noanswersnewpage}{\newpage}
\newcommand{\withanswerslinebreak}{}
\newcommand{\useanswers}%
{%use answers
\typeout{HTWChurExam class: using answers}
\renewcommand{\withanswers}{(mit Anworten)}%
\renewcommand{\withanswersnewpage}{\newpage} %
\renewcommand{\noanswersnewpage}{} %
\renewcommand{\withanswerslinebreak}{\linebreak} %
}
\newcommand{\usenoanswers}%
{%do not use answers
\typeout{HTWChurExam class: not using answers}
\renewcommand{\withanswers}{}
\renewcommand{\withanswersnewpage}{}
\renewcommand{\noanswersnewpage}{\newpage}
\renewcommand{\withanswerslinebreak}{}
}
\typeout{HTWChurExam class: default answer display}
\usenoanswers
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{exam}}
\DeclareOption{answers}%
{%
\typeout{\currfilebase: using answers requested}
%test if external script call supersedes using answers with 'no' option
\ifthenelse{\equal{no}{\externalwithanswers}} %
{%if external answerdefinition is 'no'
\typeout{HTWChurExam class: external scipt call -> using no answers}
}%
{%if external answerdefinition is not 'no'
\PassOptionsToClass{answers}{exam}
\useanswers
}%
}
%test for external withanswer 'yes' option
\ifthenelse{\equal{yes}{\externalwithanswers}} %
{ %if external answerdefinition is 'yes'
\typeout{HTWChurExam class: external scipt call -> using answers}
\PassOptionsToClass{answers}{exam}
\useanswers
} %
{}%
O segredo é passar a opção answer
para a turma exam
somente quando tiver certeza, a partir de todas as condições combinadas, de que as respostas são realmente necessárias para serem exibidas. De qualquer forma, obrigado por me ajudar, pois isso desencadeou minha solução.