tikz 矩阵中单元格位置奇怪

tikz 矩阵中单元格位置奇怪

代码

\documentclass{minimal}

\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

\begin{tikzpicture}
\matrix[matrix of math nodes, column sep = {1.5cm,between origins}, row sep = 1cm]
{
&|(1)|1\\
|(nnjtoj)|\neg\neg jo\to jo&&|(nnjtojtojnj)|(\neg\neg jo\to jo)\to j\neg jo\\
&|(jnj)|j\neg jo&&|(nnj)|\neg\neg jo\\
|(nj)|\neg jo&&|(j)|jo\\
&|(o)|o\\
};
\draw (1) -- (nnjtoj) -- (jnj) -- (nj) -- (o) -- (j) -- (nnj) -- (nnjtojtojnj) -- (1);
\draw (j) -- (jnj) -- (nnjtojtojnj);
\end{tikzpicture}

\end{document}

结果是 在此处输入图片描述

为什么最右边的单元格被放置得那么远?我已经能够通过[-10ex]在适当的位置插入来纠正它,但仍然想知道——可能是什么原因?

答案1

这不是一个错误,事实上该行为已(间接)记录在手册中:

between origins选项只能用于第一行中提到的列,也就是说,您不能为仅在后面的行中引入的列指定此选项。

(第 20.3.2 节设置和调整列间距和行间距

在您的矩阵中,第一行只有一列,因此仅between origins适用于第一列。不过解决方法很简单:在第一行添加空列:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of math nodes, column sep = {1.5cm,between origins}, row sep = 1cm]
{
 & |(1)|1 & & \\ % <-- Added two & here
|(nnjtoj)|\neg\neg jo\to jo & & |(nnjtojtojnj)|(\neg\neg jo\to jo)\to j\neg jo\\
 & |(jnj)|j\neg jo & & |(nnj)|\neg\neg jo\\
|(nj)|\neg jo & & |(j)|jo\\
 &|(o)|o\\
};
\draw (1) -- (nnjtoj) -- (jnj) -- (nj) -- (o) -- (j) -- (nnj) -- (nnjtojtojnj) -- (1);
\draw (j) -- (jnj) -- (nnjtojtojnj);
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容