나는 학교의 필요에 맞게 시험 수업을 조정하는 수업을 만들고 이름과 추가 정보가 인쇄된 각 학생의 개별 시험을 만들 수 있도록 스크립트를 통해 외부에서 수업을 제어하는 몇 가지 요소를 추가했습니다. 이 모든 것은 외부 bash 스크립트에 의해 제어됩니다. pdflatex "\newcommand\examstudentname{somestudent} \newcommand\externalwithanswers{no}" the_exam.tex
시험 PDF를 생성하기 위해 bash 스크립트 내부와 같은 것을 사용합니다 . 파일 에서처럼 the_exam.tex
옵션이 [answers]
실수로 설정되는 일이 발생할 수도 있고, 정답이 포함된 시험이 생성될 수도 있습니다(실제로 우리 학교에서도 그런 일이 있었습니다). 완전한 제어를 위해서는 [answers]
( )에서 상속받은 클래스 와 같은 옵션을 설정 및 설정 해제하는 스크립트가 필요합니다 exam.cls
.
사례 1: 내 the_exam.tex
가능성은 다음과 같습니다.
\documentclass{HTWChurExam}
HTWChurExam.cls
다음과 같은 것이 있습니다:
\PassOptionsToClass{answers}{exam}
이것은 의도적으로 [answers]
에 대해 켜집니다 exam.cls
. 문제 없습니다. 해결되었습니다. 스크립트를 통해 외부에서 쉽게 제어할 수 있습니다.
사례 2: 내 the_exam.tex
가능성은 다음과 같습니다.
\documentclass[answers]{HTWChurExam}
HTWChurExam.cls
다음과 같은 것이 있습니다:
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{exam}}
그러면 모든 옵션이 Exam.cls로 전달됩니다. 이제 의도적으로 방향을 바꿀 수 있는 가능성을 갖고 싶습니다.끄다 [answers]
, bash 스크립트로 제어됩니다.
나는 이것을 달성할 방법을 찾지 못했습니다.
답변1
내 솔루션은 다음과 같습니다
\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
} %
{}%
핵심은 결합된 모든 조건에서 답변이 실제로 표시되어야 한다는 것이 확실한 경우에만 옵션을 answer
클래스에 전달하는 것입니다. exam
어쨌든 내 솔루션이 촉발되었기 때문에 도와주셔서 감사합니다.