矩阵环境中的单独行和列间距

矩阵环境中的单独行和列间距

我知道可以用 ,分别更改\matrix命令中的行和列分隔。但是如何仅更改特定行或列的分隔?row sepcolumn sep

也就是说,不同行之间的间距不同?另外,如何对列间距做同样的处理?

在此处输入图片描述

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \matrix[column sep=5mm, row sep=5mm]
    {
        % Row 1
        \node {1:1};&\node {1:2};&\node {1:3};&\node {1:4};;\\
        % Row 2
        \node {2:1};&\node {2:2};&\node {2:3};&\node {2:4};\\
        % Row 3
        \node {3:1};&\node {3:2};&\node {3:3};&\node {3:4};\\
    };
\end{tikzpicture}
\end{document}

答案1

您可以将分隔设置为零;然后&[<width>]在第一行中使用来进行列分隔和\\[<width>]行分隔。

\documentclass{standalone}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \matrix[column sep=0mm, row sep=0mm]{
    % Row 1
    \node {1:1}; &[5mm] \node {1:2}; &[10mm] \node {1:3}; &[10mm] \node {1:4}; \\[5mm]
    % Row 2
    \node {2:1}; &      \node {2:2}; &       \node {2:3}; &       \node {2:4}; \\[10mm]
    % Row 3
    \node {3:1}; &      \node {3:2}; &       \node {3:3}; &       \node {3:4}; \\
  };
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

行分隔

对于行间距,不需要指定矩阵宽的行间距,而是使用可选参数来\\完成特定行的跳过。

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \matrix[column sep=5mm]
    {
        % Row 1
        \node {1:1};&\node {1:2};&\node {1:3};&\node {1:4};;\\[5mm]
        % Row 2
        \node {2:1};&\node {2:2};&\node {2:3};&\node {2:4};\\[10mm]
        % Row 3
        \node {3:1};&\node {3:2};&\node {3:3};&\node {3:4};\\
    };
\end{tikzpicture}
\end{document}

在此处输入图片描述

或者,您可以保留默认值row sep并指定与默认值的偏差:

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \matrix[column sep=5mm, row sep=5mm]
    {
        % Row 1
        \node {1:1};&\node {1:2};&\node {1:3};&\node {1:4};;\\
        % Row 2
        \node {2:1};&\node {2:2};&\node {2:3};&\node {2:4};\\[5mm]
        % Row 3
        \node {3:1};&\node {3:2};&\node {3:3};&\node {3:4};\\
    };
\end{tikzpicture}
\end{document}

柱分离

至于列分隔问题,我不知道有什么简单的方法可以做到这一点。在特别的楼主提供的例子,列间隙都是整数倍数彼此。如果总是这样,只需添加空白列即可:

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    \matrix[column sep=5mm, row sep=5mm]
    {
        % Row 1
        \node {1:1};&\node {1:2};&&\node {1:3};&\node {1:4};;\\
        % Row 2
        \node {2:1};&\node {2:2};&&\node {2:3};&\node {2:4};\\[5mm]
        % Row 3
        \node {3:1};&\node {3:2};&&\node {3:3};&\node {3:4};\\
    };
\end{tikzpicture}
\end{document}

但我认为这是奢望。对于一般情况,我能做的最好的事情就是提供\knode内置了可选字距的宏。

\documentclass{standalone}
\usepackage{tikz}
\newcommand\knode[2][0]{\node{#2\kern#1mm}}
\begin{document}
\begin{tikzpicture}
    \matrix[column sep=5mm, row sep=5mm]
    {
        % Row 1
        \node {1:1};&\knode[5]{1:2};&\node {1:3};&\node {1:4};;\\
        % Row 2
        \node {2:1};&\knode[5]{2:2};&\node {2:3};&\node {2:4};\\[5mm]
        % Row 3
        \node {3:1};&\knode[5]{3:2};&\node {3:3};&\node {3:4};\\
    };
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容