代码
\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}