我正在排版一些排列,并试图突出它们的循环结构如何相互作用,因为它们是重叠的。因此,我希望它们能很好地融入网格中。我已经大致了解了我想要的,但括号存在问题。
(当排列有一个固定点时,为了清晰起见,我删除了一些括号。)我希望数字正好位于列中,括号填补了空白。(这样所有的 7 都会对齐,而第二个 7 的括号会稍微偏向一侧。这是我当前的代码:
\[\setlength{\arraycolsep}{2pt}
\begin{matrix}
(1 & 2 & 3 & 4 & 5)&(6 & 7 & 8 & 9 & 10) \\
1 & 2 & (3 & 4 & 5&6 & 7) & 8 & 9 & 10\\
1 & 2 & 3 & (4 & 5&6 & 7 & 8) & 9 & 10
\end{matrix}
\]
我也尝试过在每对数字之间插入列作为插入括号的位置,但这样一来整个数组在水平方向上的间隔就会太大。
任何建议,将不胜感激!
答案1
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[\setlength{\arraycolsep}{4pt}
\begin{matrix}
\llap{(}1 & 2 & 3 & 4 & 5\rlap{)}&\llap{(}6 & 7 & 8 & 9 & 10\rlap{)} \\
1 & 2 & \llap{(}3 & 4 & 5&6 & 7\rlap{)} & 8 & 9 & 10\\
1 & 2 & 3 & \llap{(}4 & 5&6 & 7 & 8\rlap{)} & 9 & 10
\end{matrix}
\]
\end{document}
答案2
进一步阐述 David 的出色回答...如果矩阵很大,输入所有\llap
s 和\rlap
s 会很累。因此,可以自动制作(
和)
激活并处理圈数。初始设置后,输入会变得简单。
\documentclass{article}
\usepackage{amsmath}
\let\svlp(
\let\svrp)
\begin{document}
\[\setlength{\arraycolsep}{4pt}
\catcode`(=\active
\def({\llap{\svlp}}
\catcode`)=\active
\def){\rlap{\svrp}}
\begin{matrix}(1 & 2 & 3 & 4 & 5)&(6 & 7 & 8 & 9 & 10) \\
1 & 2 & (3 & 4 & 5&6 & 7) & 8 & 9 & 10\\
1 & 2 & 3 & (4 & 5&6 & 7 & 8) & 9 & 10
\end{matrix}
\]
\end{document}
答案3
解决方案如下blkarray
:
\documentclass{article}
\usepackage{mathtools}
\usepackage{blkarray}%
\begin{document}
\[
\makeatletter
\BA@colsep=3pt
\makeatother
\begin{blockarray}{*{10}{c}}
\begin{block}{(*{5}{c})(*{5}{c})}
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\
\end{block}
\begin{block}{cc(*{5}{c})ccc}
1 & 2 & 3 & 4 & 5&6 & 7 & 8 & 9 & 10\\
\end{block}
\begin{block}{ccc(*{5}{c})cc}
1 & 2 & 3 & 4 & 5 &6 & 7 & 8 & 9 & 10_\\
\end{block}
\end{blockarray}
\]
\end{document}