![Есть ли правильный способ поместить `\fillin[]` в окружение `align` в классе `exam` LaTeX?](https://rvso.com/image/476177/%D0%95%D1%81%D1%82%D1%8C%20%D0%BB%D0%B8%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%20%D1%81%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%20%D0%BF%D0%BE%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%60%5Cfillin%5B%5D%60%20%D0%B2%20%D0%BE%D0%BA%D1%80%D1%83%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5%20%60align%60%20%D0%B2%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B5%20%60exam%60%20LaTeX%3F.png)
Я использую \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
опции: