我想编写自己的 Lua(LaTeX) 代码来获得如下所示的周期性十进制除法。我知道该xlop
软件包,但我想要另一种格式。
我的问题只是关于格式和我的 MWE 中缺少的装饰。
\documentclass{article}
\begin{document}
% -------------- %
% -- 10 by 11 -- %
% -------------- %
\begin{tabular}{*{7}{c}}
1 & 0 & & & 1 & 1
\\
1 & 0 & 0 & & \kern2pt0, & 9 & 0
\\
&& 1
\\
&& 1 & 0
\end{tabular}
\end{document}
获得输出。
答案1
这是一个想法。
TikZ 矩阵的第一列是图表的左侧,第二列是图表的右侧。
width(" ")
我正在使用可以在 PGFmath 中的多个位置访问的空间的宽度:
- 作为
column sep
, - 作为
inner xsep
和 - 最重要的是风格
s
。
这样,我们可以说s=2
,它会将节点向右移动大约两位数。使用默认值1
,您也可以简单地说s, s
将其向右移动大约两位数。
与第二列类似,您也可以插入假货\0
来填充节点的左侧。
所有节点左anchor=base west
对齐。
在第二列中,我用来\hphantom{0}
填充节点的右侧,以便线append after command
足够长。
你也可以这样做node family={text width=\tikzmatrixname, text width align=left}
和我的ext.node-families
图书馆。
或者在构建矩阵之后绘制这些线,并使用矩阵的右边框(与第二列最右边的节点紧密贴合,即
(m-2-x.north west) |- (m-2-x.south-|m.east)
根据这些图表的动态,采用tikz-cd
和使用可能会很有趣\arrow[uuuu, <half arc>]
。
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{
matrix,
calc,
}
\begin{document}
\begin{tikzpicture}[
s/.style={xshift=#1*width("0 ")},
s/.default=1, % shifts one digit to the right
m/.style={fill=orange!10, draw=orange!50},
]
\matrix[
matrix of nodes,
column sep=2*width(" "),
every outer matrix/.append style={inner sep=+0pt},
/utils/exec=\def\,{\rlap{,}}% % overwriting \, doesn't seem like a good idea
\def\0{\hphantom{0}},% but it is local to the \matrix
nodes={
anchor=base west, % left-aligned
inner xsep=.5*width(" ")
},
column 2/.append style={
nodes={
text depth=+0pt,% comma doesn't contribute to the node size,
% alternatively: \def\,{\smash{\rlap{,}}}
outer sep=+0pt, % anchors on the actual border, just to be safe
append after command={% draw west and south border of node
% overlay so that it doesn't contribute
% to the cell's size
(\tikzlastnode.north west) edge[
overlay, to path={|-(\tikzlastnode.south east)}]()}
}
},
] (m) {
|[m]| 1 0 & 1 1 \0 \\
1 0 0 & 0\, 9 0 \\
|[s, s ]| 1 \\
|[m,s=2]| 1 0 \\
};
\draw[m, fill=none]
let \p{angle}=($(m-4-1.south)-(m-1-1.west)$) in
(m-4-1.south) arc[% half arc between m-4-1.south and m-1-1.west
start angle={atan2(\y{angle},\x{angle})},
delta angle=-180,
radius=.5*veclen(\p{angle})];
\end{tikzpicture}
\end{document}