Есть ли правильный способ поместить `\fillin[]` в окружение `align` в классе `exam` LaTeX?

Есть ли правильный способ поместить `\fillin[]` в окружение `align` в классе `exam` LaTeX?

Я использую \fillin[]команду в классе latex examдля получения следующего вывода:

введите описание изображения здесь

Convert the following angles from degrees to radians:
\begin{questions}
    \begin{multicols}{4}
        \question
        \begin{align*}
            180 \degree 
            &= \fillin[$1$] \pi \\
            &= \fillin[$\frac{1}{2}$] \tau \\
            &\approx \fillin[$3.14159$]
        \end{align*}

        \columnbreak

        \question
        \begin{align*}
            90 \degree
            &= \fillin[$\frac{1}{2}$] \pi \\
            &= \fillin[$\frac{1}{4}$] \tau \\
            &\approx \fillin[$1.57079$]
        \end{align*}

        \columnbreak

        \question
        \begin{align*}
            270 \degree
            &= \fillin[$\frac{3}{2}$] \pi \\
            &= \fillin[$\frac{3}{4}$] \tau \\
            &\approx \fillin[$4.71238$]
        \end{align*}

        \columnbreak

        \question
        \begin{align*}
            360 \degree
            &= \fillin[$2$] \pi \\
            &= \fillin[$1$] \tau \\
            &\approx \fillin[$6.28318$]
        \end{align*}
    \end{multicols}
    \vspace*{\stretch{1}}
\end{questions}

Вывод на самом деле именно такой, как я и ожидал. Однако я получаю несколько ошибок от Overleaf:

введите описание изображения здесь

Я подозреваю, что это некорректно помещать \fillin[]внутрь alignокружения. Я также пробовал убрать знаки доллара, которые обычно не допускаются внутри окружения align, но это не помогло и привело к тому, что дроби перестали отображаться правильно.

Есть ли правильный способ решения проблемы \fillin[]внутри alignсреды?

Кроме того, это, возможно, лучше сохранить для отдельного вопроса, но есть ли способ создать \fillin[]команду, которая будет работать вне класса exam, например, в kaobookклассе?

решение1

Это ни в коем случае не ошибки. Редактор Overleaf должен отмечать случаи, когда $знаки находятся внутри известной математической среды отображения.

Текст, который вы даете в скобках, является правильным ответом и \fillinне «знает», находится ли он в математическом режиме или нет: он в любом случае использует свой аргумент в текстовом режиме.

Вы можете избежать получения сигнала об «ошибке», используя

\fillin[\ensuremath{\frac{1}{2}}]

или определение псевдонима для аргумента, который будет использоваться в математическом режиме.

\documentclass[answers]{exam}
\usepackage{multicol,amsmath}

\NewDocumentCommand{\mathfillin}{oo}{%
  \IfNoValueTF{#1}{\fillin}{%
    \IfNoValueTF{#2}{\fillin[$#1$]}{%
      \fillin[$#1$][#2]%
    }%
  }%
}

% guesses to make the code to compile
\newcommand{\degree}{\ensuremath{^\circ}}
\setlength{\fillinlinelength}{3em}
%%%

\begin{document}

Convert the following angles from degrees to radians:

\begin{questions}
  \begin{multicols}{4}
        \question
        $\begin{aligned}[t]
            180 \degree 
            &= \mathfillin[1] \pi \\
            &= \mathfillin[\frac{1}{2}] \tau \\
            &\approx \mathfillin[3.14159]
        \end{aligned}$

        \question
        $\begin{aligned}[t]
            90 \degree
            &= \mathfillin[\frac{1}{2}] \pi \\
            &= \mathfillin[\frac{1}{4}] \tau \\
            &\approx \mathfillin[1.57079]
        \end{aligned}$

        \question
        $\begin{aligned}[t]
            270 \degree
            &= \mathfillin[\frac{3}{2}] \pi \\
            &= \mathfillin[\frac{3}{4}] \tau \\
            &\approx \mathfillin[4.71238]
        \end{aligned}$

        \question
        $\begin{aligned}[t]
            360 \degree
            &= \mathfillin[2] \pi \\
            &= \mathfillin[1] \tau \\
            &\approx \mathfillin[6.28318]
        \end{aligned}$
    \end{multicols}
    \vspace*{\stretch{1}}
\end{questions}

\end{document}

Обратите внимание, что align*это неподходящий инструмент для данной работы: `$\begin{aligned}[t]...\end{aligned}$ гораздо лучше.

введите описание изображения здесь

Без answersопции:

введите описание изображения здесь

Связанный контент