Re: [问题] 请问有关矩阵的分割/直和

楼主: ChenMeng0518 (LSiYue)   2014-01-09 08:48:52
先进不敢当﹐一点经验。
最笨的办法﹐可以是在 array 中套用 matrix, 然后用 \cline 和 \vline 结合来画线。
不过应该注意﹐array 中﹐相邻两列之间的间隔﹐是 2 * \arraycolsep, 所以使用
\vline 画竖线的时候﹐应该在 \vline 的左右处理这个距离﹐使得上下竖线能够对齐。
另外的问题是﹐由于 matrix 不具有列格式选项﹐无法为之设定宽度。而矩阵中间的部分
(13 & 14 \\ 18 & 19 这部分)相较上下要更宽﹐这会导致最下面一行的竖线无法和上
面对齐﹐需要处理一下中间一列矩阵中的宽度。
由于这第二个原因﹐代码变得没有通用性。如果还有其他类似结构的矩阵﹐必须手工调
整 \usecolwidth 的定义。在纯 TeX 下难以编程﹐暂时没有特别好的方法来解决这个
问题﹐只能依靠你自己理解代码﹐继而才能顺利地使用代码。
测试代码如下﹕
\documentclass{article}
\usepackage{amsmath}
\newlength{\ColWidth}
\newcommand{\getcolwidth}{\settowidth{\ColWidth}{13}}
\newcommand{\usecolwidth}[1]{\getcolwidth\makebox[\ColWidth][c]{#1}}
\newcommand{\arrayvline}{\hspace*{\arraycolsep}\vline\hspace*{-\arraycolsep}}
\begin{document}
\[
\begin{array}{@{}ccc@{}}
\begin{matrix}
1 & 2\\
5 & 7
\end{matrix} \arrayvline & \begin{matrix}
\usecolwidth{0} & \usecolwidth{0} \\
\usecolwidth{0} & \usecolwidth{0}
\end{matrix} & \begin{matrix}
0 \\
0
\end{matrix}\\
\cline{1-2}
\begin{matrix}
0 & 0 \\
0 & 0
\end{matrix} \arrayvline & \begin{matrix}
13 & 14\\
18 & 19
\end{matrix} \arrayvline & \begin{matrix}
0 \\
0
\end{matrix}\\
\cline{2-3}
\begin{matrix}
0 & 0
\end{matrix} & \begin{matrix}
\usecolwidth{0} & \usecolwidth{0}
\end{matrix} \arrayvline & 25
\end{array}
\]
\end{document}
注意我这里使用了 \arrayvline 和 \usecolwidth 封装了一些细节﹐方便使用。你应该
仔细查看 preamble 中的相关代码﹐理解它们的作用﹐然后再上手使用。
作者: fancap (汉子)   2014-01-11 08:54:00
非常感谢您的建议!我再试试看

Links booklink

Contact Us: admin [ a t ] ucptt.com