힌트 환경을 만드세요(`\ifhints`와 같이 나타납니다).

힌트 환경을 만드세요(`\ifhints`와 같이 나타납니다).

저는 exam-class를 많이 사용하는데, 특히 솔루션 환경이 마음에 듭니다. 내 문서에는 질문과 솔루션이 포함되어 있지만 \printanswers서문을 변경하면 솔루션 표시 여부를 쉽게 전환할 수 있습니다.

나도 같은 일을 하고 싶다힌트. 나는 다음과 같은 것을 원합니다:

\documentclass[11pt]{exam}
%\ifprintanswers
\ifprinthints

\begin{document}
  \begin{questions}
    \question Prove $e^{i\pi} +1 = 0$.

    \begin{hints}
      Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
    \end{hints}

    \begin{solution}
      duh.
    \end{solution}
  \end{questions}
\end{document}

클래스를 기반으로 하지만 일부 패키지와 사용자 정의 명령을 로드하는 사용자 정의 클래스를 만들었습니다. exam이 기능을 구현하려면 어떤 명령을 추가해야 합니까? 누군가 도와줄 수 있나요?

답변1

이를 수행하는 매우 쉬운 방법 중 하나는 다음을 사용하는 것입니다.버전패키지. 행을 추가하는 경우:

\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}

그러면 힌트가 나타나지 않습니다. 주석을 달거나 \excludeversion{hints}사용하면 \includeversion{hints}마술처럼 다시 나타납니다. 전체 MWE는 다음과 같습니다.

\documentclass[11pt]{exam}
\usepackage{version}

\newenvironment{hints}{\textbf{Hint}}{}
\excludeversion{hints}% turn hints off

\begin{document}
  \begin{questions}
    \question Prove $e^{i\pi} +1 = 0$.

    \begin{hints}
      Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
    \end{hints}

    \begin{solution}
      duh.
    \end{solution}
  \end{questions}
\end{document}

귀하의 질문에 더 가까운 두 번째 방법은 다음을 사용하는 것입니다.환경힌트 환경을 정의하는 패키지입니다. 이 접근 방식을 사용하면 먼저 새로운 if 문인 say 를 정의한 \ifhinting다음 \hintingtrue및 를 사용하여 \hintingfalse힌트를 켜고 끕니다.

\documentclass[11pt]{exam}
\usepackage{environ}

\newif\ifhinting\hintingtrue % hints are on by defautl
\NewEnviron{hints}{\ifhinting\textbf{Hint} \BODY\fi}

\begin{document}
  \begin{questions}
    \question Prove $e^{i\pi} +1 = 0$.

    \begin{hints}
      Consider $e^{i\theta} = \cos \theta + i\sin \theta$.
    \end{hints}

    \begin{solution}
      duh.
    \end{solution}
  \end{questions}
\end{document}

\NewEnviron명령은 새로운 환경을 정의하지만 환경의 내용을 매크로에 넣기 때문에 true \BODY인 경우 무시하는 등의 작업을 수행할 수 있습니다 .\hintingfalse

이 접근 방식의 한 가지 장점은 문서의 여러 부분에서 힌트를 켜고 끌 수 있다는 것입니다(모든 곳을 확인해야 하기 때문에 단점으로 보일 수도 있습니다!).

관련 정보