
Я пишу правило вывода и хочу разбить длинную формулу на несколько строк. Я использую inferrule
макрос из mathpartir
пакета, чтобы написать правило вывода. И моя формула выглядит так
\documentclass{article}
\usepackage{mathpartir}
\begin{document}
$$
\inferrule*{
\psi(aaa)
}{
\psi(xxx\land yyy\land zzz)
}
$$
\end{document}
Но настоящая формула длиннее, поэтому я хочу разбить ее на несколько строк и использую aligned
environment.
\documentclass{article}
\usepackage{mathpartir}
\begin{document}
$$
\inferrule*{
\psi(aaa)
}{
\psi(\begin{aligned}xxx\\\land yyy\\\land zzz\end{aligned})
}
$$
\end{document}
Тогда компиляция не удалась. Думаю, проблема в том, что inferrule
переопределено, \\
так что aligned
работает. Как заставить это работать?
решение1
Я никогда не слышал mathpartir
раньше, поэтому не могу сказать точно, что здесь происходит. Единственное, в чем я уверен, это то, что это не имеет никакого отношения к amsmath
(что было моей первой догадкой), потому что также фрагмент
% FAILS TOO
\newenvironment{foo}{}{}
\[
\inferrule*{
\psi(aaa)
}{
\psi(\begin{foo}xxx\\\land yyy\\\land zzz\end{foo})
}
\]
не срабатывает. Я думаю, это связано с тем, как \inferrule
ищет и обрабатывает свои аргументы. Сейчас у меня нет времени разбираться в его коде, но во многих подобных случаях он помогает «защитить» внутреннюю среду, заключив ее в фигурные скобки. В вашем случае код
\documentclass{article}
\usepackage{amsmath,mathpartir}
\begin{document}
\[
\inferrule*{
\psi(aaa)
}{
\psi({\begin{aligned}xxx\\\land yyy\\\land zzz\end{aligned}})
}
\]
\end{document}
работает без проблем. Обратите внимание, что этого $$
следует избегать в LaTeX, см.Почему \[ … \]
предпочтительнее $$ … $$
?.