そこで、パスカル三角形の tikzpicture を生成してみます。これが私のコードとこれまでの結果です:
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \n in {0,...,7}{
\foreach \k in {0,...,\n}{
\pgfmathsetmacro\nten{\n * 8}
\node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (a\k\n) at (\k-\n/2,7-\n) {$\binom{\n}{\k}$};
\pgfmathsetmacro\currbinom{\xinttheiiexpr binomial(\n,\k)\relax}
\node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (b\k\n) at (\k-\n/2+10,7-\n) {$\currbinom$};
};
};
%verbindungen
\foreach \n in {0,...,6}{
\foreach \k in {0,...,\n}{
\pgfmathsetmacro\kp{\k+1}
\pgfmathsetmacro\np{\n+1}
\draw[->] (a\k\n.center) -- (a\k\np);
};
};
\node[rectangle] (eqsign) at (5,4) {$=$};
\end{tikzpicture}
\caption{Caption}
\label{fig:pascal-tri}
\end{figure}
ただし、中心間を接続したいので、中心のアンカーに線を描くために「.center」を追加しました。
\begin{figure}
\centering
\begin{tikzpicture}
\foreach \n in {0,...,7}{
\foreach \k in {0,...,\n}{
\pgfmathsetmacro\nten{\n * 8}
\node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (a\k\n) at (\k-\n/2,7-\n) {$\binom{\n}{\k}$};
\pgfmathsetmacro\currbinom{\xinttheiiexpr binomial(\n,\k)\relax}
\node[rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten] (b\k\n) at (\k-\n/2+10,7-\n) {$\currbinom$};
};
};
%verbindungen
\foreach \n in {0,...,6}{
\foreach \k in {0,...,\n}{
\pgfmathsetmacro\kp{\k+1}
\pgfmathsetmacro\np{\n+1}
\draw[->] (a\k\n.center) -- (a\k\np.center);
};
};
\node[rectangle] (eqsign) at (5,4) {$=$};
\end{tikzpicture}
\caption{Caption}
\label{fig:pascal-tri}
\end{figure}
修正方法 / 何が問題ですか?a\k\n.center
正しく動作しているのに、なぜa\k\np.center
動作しないのですか?
答え1
ではなく\pgfmathsetmacro
、\pgfmathtruncatemacro
整数表現を取得したいのです。同様に、二項係数の値のマクロは次のように定義できます。\edef
。
ちなみに、長いオプション リストを繰り返すよりも、スタイルを定義する方がはるかに管理しやすくなります。また、サイクルは PGF ステートメントではないため、その後にセミコロンを付けるべきではありません (に存在しない\foreach
という警告が大量に表示されます)。;
\nullfont
\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{amsmath}
\usepackage[dvipsnames]{xcolor}
\usepackage{xintexpr}
\usepackage{tikz}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}[
rect/.style={rectangle,minimum height=1cm,minimum width=1cm,draw,fill=Red!\nten}
]
\foreach \n in {0,...,7}{
\foreach \k in {0,...,\n}{
\pgfmathsetmacro\nten{\n * 8}
\node[rect] (a\k\n) at (\k-\n/2,7-\n) {$\binom{\n}{\k}$};
\edef\currbinom{\xinttheiiexpr binomial(\n,\k)\relax}
\node[rect] (b\k\n) at (\k-\n/2+10,7-\n) {$\currbinom$};
}
}
%verbindungen
\foreach \n in {0,...,6}{
\foreach \k in {0,...,\n}{
% \pgfmathtruncatemacro\kp{\k+1}
\pgfmathtruncatemacro\np{\n+1}
\draw[->] ({a\k\n}.center) -- ({a\k\np}.center);
}
}
\node[rectangle] (eqsign) at (5,4) {$=$};
\end{tikzpicture}
\caption{Caption}
\label{fig:pascal-tri}
\end{figure}
\end{document}