如何在 LaTeX 中排版使用多个变量的多项式长除法?我希望能够使用 2 个或更多除数进行多项式长除法。目前,我使用的软件包是:
\usepackage[psamsfonts]{amsfonts}
\usepackage{sudoku}
\usepackage{natbib}
\usepackage{amsmath, amsthm, amssymb}
\usepackage{epsfig}
\usepackage{makeidx}
\usepackage{array}
\usepackage{enumerate}
\usepackage[usenames]{color}
\usepackage{setspace}
\usepackage{latexsym}
\usepackage[dvips]{graphicx}
\usepackage{eucal}
\usepackage{polynom}
我知道我正在使用很多与我的问题无关的包,但我不想使用有冲突的包。
我以为这个polynom
软件包是我的解决方案,但软件包中的免责声明之一是“目前不支持多元多项式”。
任何帮助将不胜感激。
答案1
基本示例:
以下是重现第 4 页中的除法算法的一个例子格罗布纳碱及其应用由凯特琳·莫兰 (Kaitlyn Moran) 使用array
。
笔记:
multirow
用于将\sqrt{xy^2 + 1}
术语置于两行中间。\multicolumn{1}{c}{<text>}
用于将内容置于单元格内
扩展示例
对于更复杂的情况(来自上述参考论文的第 5 页),其中有多个对齐点,我建议使用 来\hphantom{}
保留适当的水平间距。最简单的方法是从底部开始,使用每个点的最宽项输入多项式。如下所示以红色显示:
从这个最宽的多项式开始,向上工作并将您不想打印的项放在 中以\hphantom{}
获得适当的间距。在下面的代码中,我仔细对齐了代码,以便\hpantom{}
更容易可视化。
另一个复杂之处在于水平线不会延伸到整个列的宽度,因此\cline{2-2}
在这种情况下简单的方法不起作用。幸运的是,您可以使用包\cmidrule
中的booktabs
,它接受一个可选参数,允许在 的左侧和右侧进行修剪\cmidrule
。由于这个语法不太标准,我将其包装在 中,\CMidRule{<left trim>}{<right trim>}{<columns>}
您可以在其中指定每侧要进行多少修剪。所以\CMidRule{0.0ex}{0.0ex}{<columns>}
相当于cmidrule{<columns>}
。
笔记
- 红色部分仅用于说明对齐点,应将其删除。
- 有关
\phantom
宏的更多详细信息,请参阅缩进与单词宽度相同举一个基本的例子,或者如何对齐普通文本;例如拆分矩阵、方程组、表格以实现更精细的用法。 - 需要注意的一点是,如果尾随二元运算符(
+
、 或-
)是 的一部分\hphantom{}
,则{}
需要插入一个附加部分以确保它被视为二元运算符。请参阅二元运算符的幻像宽度。 - 中指定的修剪长度
\CMidRule
可以根据使用该包的代码各部分的长度来计算calc
。但是,在这种情况下,使用实际数字来调整修剪更加灵活,并且代码更易于阅读。 - 事实证明,包装
cmidrule
宏并不简单。在此特定情况下,此处介绍的先前解决方案似乎只有效,因为每行只使用一次此宏。当尝试每行多次使用此宏时,会出现问题,并在以下位置进行了讨论:将 \cmidrule 包装在宏中。
代码:基本示例
\documentclass{article}
\usepackage{multirow}
\newcommand{\PhantC}{\phantom{\colon}}%
\newcommand{\CenterInCol}[1]{\multicolumn{1}{c}{#1}}%
\begin{document}
\[
\begin{array}{rr}
a_1\colon & \CenterInCol{y}\\
a_2\colon & \CenterInCol{-1}\\
xy + 1\PhantC & \multirow{2}*{$\sqrt{xy^2 + 1}$}\\
y + 1\PhantC &\\
& xy^2 + y\\\cline{2-2}
& -y + 1 \\
& -y - 1 \\\cline{2-2}
& 2
\end{array}
\]
\end{document}
代码:扩展示例
\documentclass{article}
\usepackage{xcolor}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{xparse}
\usepackage{calc}
\newcommand{\PhantC}{\phantom{\colon}}%
\newcommand{\PhantSQ}{\phantom{\sqrt{\hspace{0.3ex}}}}%
% https://tex.stackexchange.com/questions/63355/wrapping-cmidrule-in-a-macro
\ExplSyntaxOn
\makeatletter
\newcommand{\CMidRule}{\noalign\bgroup\@CMidRule{}}
\NewDocumentCommand{\@CMidRule}{
m % Material to reinsert before cmidrule.
O{0.0ex} % #1 = left adjust
O{0.0ex} % #1 = right adjust
m % #3 = columns to span
}{
\peek_meaning_remove_ignore_spaces:NTF \CMidRule
{ \@CMidRule { #1 \cmidrule[\cmidrulewidth](l{#2}r{#3}){#4} } }
{ \egroup #1 \cmidrule[\cmidrulewidth](l{#2}r{#3}){#4} }
}
\makeatother
\ExplSyntaxOff
\begin{document}
\[
\begin{array}{rll}
a_1\colon & \multicolumn{1}{l}{x+y}\\
a_2\colon & \multicolumn{1}{l}{1} & r\\
xy + 1\PhantC & \multirow{2}*{$\sqrt{x^2y + xy^2+y^2}$} \\\cline{3-3}
y^2 + 1\PhantC &\\
%
&\PhantSQ x^2y - x \\\CMidRule[3.0ex][9.0ex]{2-2}
&\PhantSQ \hphantom{x^2y +{}} xy^2 + x + y^2 \\
&\PhantSQ \hphantom{x^2y +{}} xy^2 - y \\\CMidRule[9.0ex][5.0ex]{2-2}
&\PhantSQ \hphantom{x^2y + xy^2 +{}} x + y^2 + y \\\CMidRule[16.0ex][5.0ex]{2-2}
&\PhantSQ \hphantom{x^2y + xy^2 + x +{}} y^2 + y \\
&\PhantSQ \hphantom{x^2y + xy^2 + x +{}} y^2 - 1 \\\CMidRule[20.0ex][5.0ex]{2-2}
&\PhantSQ \hphantom{x^2y + xy^2 + x + y^2 +{}} y + 1 \\\CMidRule[25.0ex][1.0ex]{2-2}
&\PhantSQ \hphantom{x^2y + xy^2 + x + y^2 + y +{}} 1 &\to x+y \\\CMidRule[25.0ex][1.0ex]{2-2}
&\PhantSQ \hphantom{x^2y + xy^2 + x + y^2 + y +{}} 0 &\to x+y+1
\\&\PhantSQ\color{red}x^2y + xy^2 + x + y^2 + y + 1
% Last line above should be removed -- used for alignment purposes only.
\end{array}
\]
\end{document}