Estou tentando fazer uma divisão e às vezes funciona e outras vezes recebo um valor inesperado.
\documentclass[fleqn]{article}
\usepackage{amsmath}
\usepackage{enumerate}
\usepackage{cancel}
\begin{document}
\newcommand\coeff{5}
\newcommand\addend{13}
\newcommand\result{45}
\newcommand\exaddend{\the\numexpr\addend*\coeff}
\newcommand\resultrest{\the\numexpr\result-\exaddend}
\begin{align*}
\coeff x+\exaddend&=\result \\
-\exaddend&=-\exaddend\\
\coeff x&=\resultrest\\
\frac{\cancel{\coeff}x}{\cancel{\coeff}}&=\frac{\resultrest}{\coeff}\\
x&=\boxed{\the\numexpr\resultrest/\coeff\relax}
\end{align*}\vspace{1em}
\end{document}
Funciona se eu usar valores fixos:
parece que a última linha \the\numexpr\resultrest/\coeff\relax
parece produzir o problema. Por favor ajude!
Responder1
Você definiu \extatend
e \resultrest
com unterminated \numexpr
(no \relax
), então quando você usa eles em outro \numexpr
, a expressão é efetivamente inserida de forma literal, assim você pode avaliar 5-1/2
quando pretendia (5-1)/2
. Eu sugiro que você coloque \relax
no final de ambos \extatend
e \resultrest
.
Outras alternativas são defini-los incluindo parênteses, ou se desejar apenas um único valor fixo, defini-los usando \edef
.
Você não diz qual valor inesperado obtém para qual entrada; portanto, permanece a possibilidade de você simplesmente não esperar a divisão inteira.