![tikz中矩阵内外不同元素的对齐](https://linux22.com/image/298636/tikz%E4%B8%AD%E7%9F%A9%E9%98%B5%E5%86%85%E5%A4%96%E4%B8%8D%E5%90%8C%E5%85%83%E7%B4%A0%E7%9A%84%E5%AF%B9%E9%BD%90.png)
我在将以下 tikzpicture 的不同元素置于正确位置时遇到问题。我认为问题是由于矩阵内元素的宽度不同而引起的。
\documentclass[10pt]{article}
\usepackage[margin=0.75in]{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix,decorations.pathreplacing,calc,graphs,decorations.markings,intersections,positioning}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{amsthm} %for proof
\begin{document}
\[X=
\begin{tikzpicture}[baseline=-0.5ex]
\matrix [matrix of math nodes,left delimiter=(,right delimiter=),row sep=1cm,column sep=1cm] (m) {
0&\frac{p^{I}_{1S}.F^{-1}_{1S}(y^{f}_{2S}+y^{I}_{2S})}{p^{f}_{2S}.y^{f}_{2S}+p^{I}_{2S}.y^{I}_{2S}}&0&0 \\
\frac{p^{I}_{2S}.F^{-1}_{2S}(y^{f}_{1S}+y^{I}_{1S})}{p^{f}_{1S}.y^{f}_{1S}+p^{I}_{1S}.y^{I}_{1S}}&0&0&0 \\
0&0&0&\frac{p^{I}_{1L}.F^{-1}_{1L}(y^{f}_{2L}+y^{I}_{2L})}{p^{f}_{2L}.y^{f}_{2L}+p^{I}_{2L}.y^{I}_{2L}} \\
0&0&\frac{p^{I}_{1L}.F^{-1}_{1L}(y^{f}_{2L}+y^{I}_{2L})}{p^{f}_{2L}.y^{f}_{2L}+p^{I}_{2L}.y^{I}_{2L}}&0 \\};
\draw[dashed] ($0.5*(m-1-2.north east)+0.5*(m-1-3.north west)$) --
($0.5*(m-4-2.south east)+0.5*(m-4-3.south west)$);
\draw[dashed] ($0.5*(m-2-1.south west)+0.5*(m-3-1.north west)$) --
($0.5*(m-2-4.south east)+0.5*(m-3-4.north east)$);
\node[above=12pt of m-1-1] (top-1) {1};
\node[above=12pt of m-1-2] (top-2) {2};
\node[above=12pt of m-1-3] (top-3) {1};
\node[above=12pt of m-1-4] (top-4) {2};
\node[left=12pt of m-1-1] (left-1) {1};
\node[left=12pt of m-2-1] (left-2) {2};
\node[left=12pt of m-3-1] (left-3) {1};
\node[left=12pt of m-4-1] (left-4) {2};
\node[rectangle,above delimiter=\{] (del-top-1) at ($0.5*(top-1.south) +0.5*(top-2.south)$) {\tikz{\path (top-1.south west) rectangle (top-2.north east);}};
\node[above=10pt] at (del-top-1.north) {$S$};
\node[rectangle,above delimiter=\{] (del-top-2) at ($0.5*(top-3.south) +0.5*(top-4.south)$) {\tikz{\path (top-3.south west) rectangle (top-4.north east);}};
\node[above=10pt] at (del-top-2.north) {$L$};
\node[rectangle,left delimiter=\{] (del-left-1) at ($0.5*(left-1.east) +0.5*(left-2.east)$) {\tikz{\path (left-1.north east) rectangle (left-2.south west);}};
\node[left=10pt] at (del-left-1.west) {$S$};
\node[rectangle,left delimiter=\{] (del-left-2) at ($0.5*(left-3.east) +0.5*(left-4.east)$) {\tikz{\path (left-3.north east) rectangle (left-4.south west);}};
\node[left=10pt] at (del-left-2.west) {$L$};
\end{tikzpicture}
\]
\end{document}
答案1
类似这样。您需要在选项中定义节点的大小。
nodes={anchor=center,minimum width=3cm,minimum height=2cm}
代码
\documentclass[10pt]{article}
\usepackage[margin=0.75in]{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix,decorations.pathreplacing,calc,graphs,decorations.markings,intersections,positioning}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{amsthm} %for proof
\begin{document}
\[X=
\begin{tikzpicture}[baseline=-0.5ex]
\matrix [matrix of math nodes,left delimiter=(,right delimiter=),row sep=1cm,column sep=1cm,
nodes={anchor=center,minimum width=3cm,minimum height=2cm}
] (m) {
0&\frac{p^{I}_{1S}.F^{-1}_{1S}(y^{f}_{2S}+y^{I}_{2S})}{p^{f}_{2S}.y^{f}_{2S}+p^{I}_{2S}.y^{I}_{2S}}&0&0 \\
\frac{p^{I}_{2S}.F^{-1}_{2S}(y^{f}_{1S}+y^{I}_{1S})}{p^{f}_{1S}.y^{f}_{1S}+p^{I}_{1S}.y^{I}_{1S}}&0&0&0 \\
0&0&0&\frac{p^{I}_{1L}.F^{-1}_{1L}(y^{f}_{2L}+y^{I}_{2L})}{p^{f}_{2L}.y^{f}_{2L}+p^{I}_{2L}.y^{I}_{2L}} \\
0&0&\frac{p^{I}_{1L}.F^{-1}_{1L}(y^{f}_{2L}+y^{I}_{2L})}{p^{f}_{2L}.y^{f}_{2L}+p^{I}_{2L}.y^{I}_{2L}}&0 \\};
\draw[dashed] ($0.5*(m-1-2.north east)+0.5*(m-1-3.north west)$) --
($0.5*(m-4-2.south east)+0.5*(m-4-3.south west)$);
\draw[dashed] ($0.5*(m-2-1.south west)+0.5*(m-3-1.north west)$) --
($0.5*(m-2-4.south east)+0.5*(m-3-4.north east)$);
\node[above=12pt of m-1-1] (top-1) {1};
\node[above=12pt of m-1-2] (top-2) {2};
\node[above=12pt of m-1-3] (top-3) {1};
\node[above=12pt of m-1-4] (top-4) {2};
\node[left=12pt of m-1-1] (left-1) {1};
\node[left=12pt of m-2-1] (left-2) {2};
\node[left=12pt of m-3-1] (left-3) {1};
\node[left=12pt of m-4-1] (left-4) {2};
\node[yshift=-2cm,rectangle,above delimiter=\{] (del-top-1) at ($0.5*(top-1.south) +0.5*(top-2.south)$) {\tikz{\path (top-1.south west) rectangle (top-2.north east);}};
\node[above=10pt] at (del-top-1.north) {$S$};
\node[yshift=-2cm,rectangle,above delimiter=\{] (del-top-2) at ($0.5*(top-3.south) +0.5*(top-4.south)$) {\tikz{\path (top-3.south west) rectangle (top-4.north east);}};
\node[above=10pt] at (del-top-2.north) {$L$};
\node[rectangle,left delimiter=\{] (del-left-1) at ($0.5*(left-1.east) +0.5*(left-2.east)$) {\tikz{\path (left-1.north east) rectangle (left-2.south west);}};
\node[left=10pt] at (del-left-1.west) {$S$};
\node[rectangle,left delimiter=\{] (del-left-2) at ($0.5*(left-3.east) +0.5*(left-4.east)$) {\tikz{\path (left-3.north east) rectangle (left-4.south west);}};
\node[left=10pt] at (del-left-2.west) {$L$};
\end{tikzpicture}
\]
\end{document}