我通常可以\polylongdiv{<dividend>}{<divisor>}
使用polynom
包裹:
但我想知道,
如何以编程方式排版带有连接括号和线的多项式长除法?(可能使用 TikZ)
与此类似TeX.SX 答案实施于longdivision
用于算术长除法的包。
还可以通过编程排版整个除法过程,例如 \polylongdiv
最好使括号曲线相对于除数看起来居中(?) 并将商结果左对齐于顶部/与被除数的首位系数对齐。
我如何才能实现并定义这个,比如说,\mypolylongdiv{<dividend>}{<divisor>}
宏?谢谢。
答案1
简短回答:
\documentclass{article}
\usepackage{polynom}
\usepackage{tikz}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\pld@ArrangeResult}{\bigr)}{
\,\tikz[overlay]{
\coordinate (A) at (0,-3pt);
\coordinate (B) at (0,\normalbaselineskip-0.8pt);
\draw (A) to[in=-40, out=40, looseness=1] (B);
}
}{}{}
\makeatother
\begin{document}
\polylongdiv{6x^3+5x^2-7}{3x^2-2x-1}
\end{document}
详细解答:
为了弄清楚如何解决这个问题,您可能首先需要查找源代码来了解它是如何实现的。
显然,默认情况下它只打印一个括号,所以我决定使用查询)
进行简单搜索)
C:\texlive\2022\texmf-dist\tex\latex\polynom
但是你安装的 latex 包的路径可能会有所不同
显然,源代码中没有那么多括号,所以我很快就找到了它
所以现在只需更改该位即可。由于它位于整个\pld@ArrangeResult
命令的定义中,因此您必须将整个代码块以及该命令的完整定义粘贴到您的序言中,并添加所需的更改,将其替换为
\bigr)
或者,有一种方法可以避免复制粘贴,方法是使用\patchcmd
来自的命令etoolbox
包裹
\patchcmd{command}{search}{replace}{success}{failure}
它允许查找和替换搜索的部分并自动重新定义整个命令。
现在让我们谈谈视觉变化的实现。正如您所建议的,我为此使用了 tikz,因为您可以更好地控制线条绘制和行为本身。
您可以调整路径中的in
、out
、参数来实现所需的曲线。以下是一些示例looseness
\draw (A) to[in=-20, out=20, looseness=1.5] (B);
\draw (A) to[in=-50, out=20, looseness=1] (B);
\draw (A) to[in=-15, out=45, looseness=1] (B);
您还可以调整(A)
坐标,使曲线按您的意愿居中
\coordinate (A) at (0,-5pt);
\coordinate (A) at (0,0);