不均一な線を生成するTikzpictureとdraw関数

不均一な線を生成するTikzpictureとdraw関数

ブック ドキュメント クラスでは、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);

うまくいけば、コードは十分に説明不要でしょう。

関連情報