在里面平均能量损失 下面,我已经定义
\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>
,<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}