我使用该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^4
。polynom
尝试打印被除数时也会发生同样的事情。这就是为什么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}