の中にムウェ 以下に定義する
\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}