使用多项式时如何对齐商

使用多项式时如何对齐商

我使用该polynom包来说明多项式长除法。通常,当我手工解决这些问题时,我会将商的第一项与被除数的第一项对齐。但是,正如下面的代码所示,对齐基本上就是我所需要的。

在此处输入图片描述

\documentclass{article}
\usepackage{polynom}

\begin{document}
\polylongdiv{2x^4+7x^3+8x^2+5x+4}{x^3+x^2+x+1}
\end{document}

有没有办法使商的 2 与被除数的 2 对齐?

答案1

简短答案

\documentclass{article}
    \usepackage{polynom}
\begin{document}
    \makeatletter
    \let\oldpld@SplitQuotient\pld@SplitQuotient
    \def\pld@SplitQuotient{\oldpld@SplitQuotient\def\pld@pattern{}}
    \polylongdiv{X^9-X^8-X^5+X^4+X+1}{X-1}
\end{document}

长答案

经过一些实验后,人们可能会注意到polynom在打印非连续单项式时会留下一些漏洞。

该机制是polynom利用\pld@pattern占位符。由于被除数为 9 次,\pld@pattern所以是X^9+X^8+...+1(有点)。

然后它开始匹配\pld@quotient\pld@pattern。在这种情况下,X^8转到X^8-X^4转到X^4polynom尝试打印被除数时也会发生同样的事情。这就是为什么X^8中的商 与 中的被除数对齐的原因-X^8

为了解决这个问题,我们需要用一个更短的占位符来替换它。

但那样的话不太聪明如果我们必须手动分配占位符。好消息是,用空值替换占位符会强制polynom(重新)生成一个更短的占位符。现在它应该是你想要的了。

剩下的问题是把它替换到哪里?这里我\def\pld@pattern{}在后面附加了一个\pld@SplitQuotient,因为polynom即将打印商。

\documentclass{article}
    \usepackage{polynom}
    \usepackage[active,floats,tightpage]{preview}
\begin{document}
    \makeatletter
    \let\oldpld@SplitQuotient\pld@SplitQuotient
    \begin{figure}
        \polylongdiv{X^9-X^8-X^5+X^4+X+1}{X-1}
    \end{figure}
    \begin{figure}
        \def\pld@SplitQuotient{\oldpld@SplitQuotient\def\pld@pattern{}}
        \polylongdiv{X^9-X^8-X^5+X^4+X+1}{X-1}
    \end{figure}
    \begin{figure}
        \def\pld@SplitQuotient{\oldpld@SplitQuotient
            \def\pld@quotient{\pld@V{X}{9}+\pld@V{X}{8}+\pld@V{X}{7}+\pld@V{X}{6}+\pld@V{X}{5}+\pld@V{X}{4}+\pld@V{X}{3}+\pld@V{X}{2}+\pld@V{X}{1}+\pld@R 11}}
        \polylongdiv{X^9-X^8-X^5+X^4+X+1}{X-1}
    \end{figure}
    \begin{figure}
        \def\pld@SplitQuotient{\oldpld@SplitQuotient\def\pld@pattern{}
            \def\pld@quotient{\pld@V{X}{8}+\pld@V{X}{7}+\pld@V{X}{6}+\pld@V{X}{5}+\pld@V{X}{4}+\pld@V{X}{3}+\pld@V{X}{2}+\pld@V{X}{1}+\pld@R 11}}
        \polylongdiv{X^9-X^8-X^5+X^4+X+1}{X-1}
    \end{figure}
\end{document}

相关内容