
ブック ドキュメント クラスでは、tikz
次のライブラリを含むパッケージを使用します。matrix,shapes,arrows,positioning,chains,calc
ノードのマトリックスで、描画関数が直線ではない線を生成しているのがわかります。コードは次のとおりです。
\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,positioning,chains,calc}
\begin{document}
\begin{tikzpicture}
\matrix [matrix of math nodes,column sep=1cm,row sep=1cm]
{
|(A1)| & |(A2)| t & |(A3)| t \omega & |(A4)| t \omega^2\\
|(B1)| s & |(B2)| s + t & |(B3)| s + t \omega & |(B4)| s + t \omega^2\\
|(C1)| s \omega & |(C2)| s \omega + t & |(C3)| s \omega + t \omega & |(C4)| s \omega + t \omega^2\\
|(D1)| s \omega^2 & |(D2)| s \omega^2 + t & |(D3)| s \omega^2 + t \omega & |(D4)| s \omega^2 + t \omega^2\\
};
\begin{scope}[every node/.style={midway,auto,font=\scriptsize}]
\draw[shorten <=-0.25cm,shorten >=-0.25cm] ($(A1)!0.5!(A2)$)--($(D1)!0.5!(D2)$);
\draw[shorten <=-0.5cm,shorten >=-0.5cm] ($(A1)!0.5!(B1)$)--($(A4)!0.5!(B4)$);
\draw [red, dashed] (B2) -- node {} (C4);
\draw [red, dashed] (C4) -- node {} (D3);
\draw [red, dashed] (B2) -- node {} (D3);
\draw [blue, dashed] (B3) -- node {} (D4);
\draw [blue, dashed] (D4) -- node {} (C2);
\draw [blue, dashed] (C2) -- node {} (B3);
\draw [green, dashed] (B4) -- node {} (C3);
\draw [green, dashed] (C3) -- node {} (D2);
\end{scope}
\end{tikzpicture}
\end{document}
A1 ノードは空です (設計による)。ただし、文字「x」などのテキストをそこに配置すれば、線がまっすぐになります。そのノードに空白/ダミーのプレースホルダーを配置する方法はありますか? または、このマトリックス全体を生成するより良い方法はありますか? 描画関数を正しく理解していないようです。
答え1
MWE は次のように記述します。
\documentclass{book}
\usepackage{tikz}
\usetikzlibrary{calc, matrix, quotes}
\begin{document}
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, % added matrix name "m"
nodes in empty cells, % added
column sep=1cm, row sep=1cm]
{
& t & t\omega & t \omega^2 \\[-0.5cm]
s & s + t & s + t\omega & s + t \omega^2 \\
s\omega & s\omega + t & s\omega + t\omega & s\omega + t\omega^2 \\
s\omega^2 & s\omega^2 + t & s\omega^2 + t\omega & s\omega^2 + t\omega^2 \\
};
% at all lines is used matrix cells naming system
\draw ($(m-1-1.north)!0.5!(m-1-2.north)$)--($(m-4-1.south)!0.5!(m-4-2.south)$);
\draw ($(m-1-1.west)!0.5!(m-2-1.west)$)--($(m-1-4.east)!0.5!(m-2-4.east)$);
\draw [red, dashed]
(m-2-2) -- (m-3-4)
(m-3-4) -- (m-4-3)
(m-2-2) -- (m-4-3);
\draw [blue, dashed]
(m-2-3) -- (m-4-4)
(m-4-4) -- (m-3-2)
(m-3-2) -- (m-2-3);
\draw [green, dashed]
(m-2-4) -- (m-3-3)
(m-3-3) -- (m-4-2);
\end{tikzpicture}
\end{document}
これにより、次のようになります。
たとえば、なぜ線を のように描くのかは明らかではありません\draw [green, dashed] (C3) -- node {} (D2);
。空のノードを追加しても害はありませんが、後でテキストを追加しない場合は余分になります。この場合、ライブラリがquotes
便利です。\draw [green, dashed] (C3) to["<text>"] (D2);
うまくいけば、コードは十分に説明不要でしょう。