在裡面微量元素 下面,我定義了
\def\MaxRow{3}
\def\MaxColumn{4}
\MaxRow
這意味著如果我碰巧向矩陣添加一行或一列而不調整常數和\MaxColumn
,則此程式碼將不起作用。有沒有簡單的方法可以確定
- 最大行數和
- 最大列數
的一個matrix of math nodes
?
在下面的程式碼中,我在西南入口和東北入口之間畫了一條線。
代碼:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\def\MaxRow{3}
\def\MaxColumn{4}
\begin{document}
\begin{tikzpicture}
\matrix (m) [
matrix of math nodes,
]{
1 & 2 & 3 & a\\
4 & 5 & 6 & b\\
7 & 8 & 9 & c\\
};
%% How to determine \MaxRow and \MaxColumn here?
\draw [red, thick, -latex](m-\MaxRow-1.south west) -- (m-1-\MaxColumn.north east);
\end{tikzpicture}
\end{document}
答案1
令我驚訝的是,這就像使用內部計數一樣簡單\pgfmatrixcurrentrow
,並且\pgfmatrixcurrentcolumn
在構建矩陣後它們不會重置。
當然,這些值僅在構造下一個矩陣之前才有效。
作為替代方案,我添加了一個matrix with last
用於設定矩陣的鍵,以便在矩陣之後
<matrix name>-<row>-Z
引用 row 中的最後一個節點<row>
,<matrix name>-Z-<column>
引用列中的最後一個節點<column>
並且<matrix name>-Z-Z
引用矩陣中的最後一個節點。
(這適用於單元內的每個節點,因此對於更複雜的矩陣來說並不那麼簡單。)
程式碼
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\newcommand*\MaxRow{\the\pgfmatrixcurrentrow}
\newcommand*\MaxColumn{\the\pgfmatrixcurrentcolumn}
\tikzset{
matrix with last/.default=Z,
matrix with last/.style={
every matrix/.append style={
nodes={
alias=\tikzmatrixname-\the\pgfmatrixcurrentrow-#1,
alias=\tikzmatrixname-#1-\the\pgfmatrixcurrentcolumn,
alias=\tikzmatrixname-#1-#1}}}}
\begin{document}
\begin{tikzpicture}
\matrix (m) [
matrix of math nodes,
matrix with last
]{
1 & 2 & 3 & a\\
4 & 5 & 6 & b\\
7 & 8 & 9 & c\\
};
\draw[red, thick, -latex](m-\MaxRow-1.south west) -- (m-1-\MaxColumn.north east);
\draw[blue, bend left] (m-Z-1.south west) to (m-1-Z.north east) to (m-Z-Z.center);
\end{tikzpicture}
\end{document}