是否有类似 polynom 的包用于排版有限域(例如 GF(2))上的多项式长除法。如果没有,如何手动排版长除法?
谢谢。
附录:
我尝试了以下解决方案!但是,每条线和其下方方程的指数之间的垂直间距非常小,如何增加它?我尝试了 \vspace,但收到错误。谢谢。
\[
\begin{array}{m{3.5em}ccccccccc}
& & & & &+x^4&+x^3& & &+1\\
\cline{2-10}
\multicolumn{2}{l}{x^3+x+1\big)}
&+x^7&+x^6&+x^5& & &+x^2&+x& \\
& &+x^7& &+x^5&+x^4& & & & \\
\cline{3-6}
& & &+x^6& &+x^4& & & & \\
& & &+x^6& &+x^4&+x^3& & & \\
\cline{4-7}
& & & & & &+x^3&+x^2&+x& \\
& & & & & &+x^3& &+x&+1\\
\cline{7-10}
& & & & & & &+x^2& &+1\\
\end{array}
\]
答案1
恐怕没有这样的包可以对有限域进行计算。有限域 GF(p^n) 上的算术对于 TeX 来说可能太复杂了。GF(2) 和 GF(p) 要简单得多,但似乎也没有这样的包。
要手动排版长除法,您只需使用 即可array
。例如:
\documentclass{article}
\usepackage{amssymb}
\begin{document}
\[
x^3 - x + 1 = (x-1)(x^2+x) + 1 \in \mathbb{F}_3[x]
\]
\[
\renewcommand\arraystretch{1.2}
\begin{array}{*2r @{\hskip\arraycolsep}c@{\hskip\arraycolsep} *4r}
& && & 1 & 1 & 0 \\
\cline{3-7}
1 & -1 &\big)& 1 & 0 & -1 & 1 \\
& && 1 & -1 \\
\cline{4-6}
& && & 1 & -1 \\
& && & 1 & -1 \\
\cline{5-7}
& && & & & 1 \\
\end{array}
\]
\end{document}
如果需要大量此类长除法,则值得编写一个程序(不一定是 TeX)来生成代码。对于 GF(p) 上的多项式来说,这并不难。
对于编辑的问题:
要增加阵列线之间的垂直空间,您可以重新定义因子\arraystretch
,如上所示。或者您可以使用makecell
包来添加间隙。
答案2
根据Leo的回答,但我
- 删除了一列。
\big)
用垂直线替换。- 使所有行具有相同的宽度。
\documentclass{article}
\usepackage{amssymb}
\usepackage{array}
\newcommand{\x}[1]{\multicolumn{1}{|r}{#1}}
\begin{document}
\[
x^3 - x + 1 = (x-1)(x^2+x) + 1 \in \mathbb{F}_3[x]
\]
\[
\renewcommand\arraystretch{1.2}% specify the vertical stretch
\begin{array}{*{6}{>{\hfill}m{7mm}}}%specify the column width
&
&
&
1&
1&
0\\\cline{3-6}
1&
-1&
\x{1}&
0&
-1&
1\\
&
&
1&
-1&
&
\\\cline{3-5}
&
&
&
1&
-1&
\\
&
&
&
1&
-1&
\\\cline{4-6}
&
&
&
&
&
1\\
\end{array}
\]
\end{document}