Я использую \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
опции: