![如何用短除法表示公约数](https://linux22.com/image/386336/%E5%A6%82%E4%BD%95%E7%94%A8%E7%9F%AD%E9%99%A4%E6%B3%95%E8%A1%A8%E7%A4%BA%E5%85%AC%E7%BA%A6%E6%95%B0.png)
我想使用短除法来表示公约数。以下是我的MWE:
\documentclass{article}
\usepackage{array}
\usepackage{multirow}
\usepackage{dcolumn}
\newcolumntype{2}{D{.}{}{2.0}}
\begin{document}
\begin{center}
\renewcommand\arraystretch{1.5}
\setlength\doublerulesep{0pt}
\begin{tabular}{>{$}r<{$}|>{$}r<{$}>{$}r<{$}}
2 & {84} & {96} \\\cline{2-3}
\multicolumn{1}{l|}{2} & \multicolumn{1}{r}{42} & \multicolumn{1}{r}{$48$} \\\cline{2-3}
\multicolumn{1}{l|}{3} & \multicolumn{1}{r}{21} & \multicolumn{1}{r}{$24$} \\\cline{2-3}
\multicolumn{1}{r}{} & \multicolumn{1}{r}{7} & \multicolumn{1}{r}{$8$}
\end{tabular}
\end{center}
\end{document}
看起来有点不尽人意,我想实现这样的效果:
有人可以更优雅地实现这一点吗?
答案1
一些诡计:
\documentclass{article}
\usepackage{array}
\begin{document}
\[
\renewcommand\arraystretch{1.5}
\setlength{\arraycolsep}{3pt}
\newcommand{\?}{\phantom{0}}
\begin{array}{rrrr@{\hspace{1em}}r}
\multicolumn{1}{r|}{2} &\?&\?& 84 & 96 \\
\cline{2-5}
\multicolumn{2}{r|}{2} &\?& 42 & 48 \\
\cline{3-5}
\multicolumn{3}{r|}{3} & 21 & 24 \\
\cline{4-5}
&&& 7 & 8 \\
\end{array}
\]
\end{document}
将\?
from的定义更改\phantom{0}
为\mbox{}
可以通过以下方式改善线条的交叉\hhline
:
\documentclass{article}
\usepackage{array,hhline}
\begin{document}
\[
\renewcommand\arraystretch{1.5}
\setlength{\arraycolsep}{3pt}
\newcommand{\?}{\mbox{}}
\begin{array}{rrrr@{\hspace{1em}}r}
\multicolumn{1}{r|}{2} &\?&\?& 84 & 96 \\
\hhline{~|----}
\multicolumn{2}{r|}{2} &\?& 42 & 48 \\
\hhline{~~|---}
\multicolumn{3}{r|}{3} & 21 & 24 \\
\hhline{~~~|--}
&&& 7 & 8 \\
\end{array}
\]
\end{document}