(注意:我对这个问题进行了大量编辑,因为事实证明我原来的问题是由两个独立的问题引起的,所以我将它们分成两个问题。另一个问题是改变tikz矩阵的内部sep而不影响其内部的节点)
考虑以下 MWE
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix} % for "matrix of math nodes"
\begin{document}
\begin{equation}
\left[
\begin{tikzpicture}[baseline=(current bounding box.center)]
\matrix[matrix of math nodes] {
a & b & c\\
d & e & f \\
};
\end{tikzpicture}
\right]
\end{equation}
\end{document}
它产生以下输出:
由于矩阵周围的间距不均匀,因此这并不是很令人满意。
将矩阵命令更改为\matrix[matrix of math nodes, draw] { ... };
给出以下结果:
所以我认为问题在于基线没有处于正确对齐括号的位置。但我不知道基线在哪里应该所以我不知道该怎么做才能解决这个问题。
答案1
您现在还不需要使用括号和方程式;只需使用文本即可看到。创建一个普通矩阵作为所需结果;
baseline $\begin{matrix} a & b\\ c & d\end{matrix}$ comparison
我们可以说它使用基线作为每行基线的平均值。与边界框无关。
所以,如果我们有奇数行,我们就可以参考中间行的底部;
baseline
\begin{tikzpicture}[baseline=(inner node.base)]
\matrix (m) [matrix of math nodes] {
a & b & c\\
d & \node(inner node){e}; & f \\
g & h & i \\
};
\end{tikzpicture}
comparison
而且,由于在更普遍的情况下没有找到更好的选择,我提出了:
\usetikzlibrary{calc}
...
baseline
\begin{tikzpicture}[baseline=($(a.base)!0.5!(c.base)$)]
\matrix (m) [matrix of math nodes,draw] {
\node(a){a}; & b\\
\node(c){c}; & d\\
};
\end{tikzpicture}
comparison
生成所需图形
\begin{equation}
\left[
\begin{tikzpicture}[baseline=($(a.base)!0.5!(c.base)$)]
\matrix (m) [matrix of math nodes] {
\node(a){a}; & b & c\\
\node(c){d}; & e & f\\
};
\end{tikzpicture}
\right]
\end{equation}
产量
我觉得看起来还不错。不过如果你决定真的画出边框的话,还是会有一些字距调整问题。