尽管我的anchor=center
说明很天真,但这四个符号并没有按中心对齐:
\documentclass{standalone}
\usepackage{tikz}
\tikzset{x=1pt, y=1pt, z=1pt}
\begin{document}
\begin{tikzpicture}[inner sep=0, outer sep=0]
\node[anchor=center] at (0, 0) {*};
\node[anchor=center] at (10, 0) {+};
\node[anchor=center] at (20, 0) {-};
\node[anchor=center] at (30, 0) {$\cdot$};
\end{tikzpicture}
\end{document}
我的猜测是,它们带有不可见的、实心的空白,因为它们与不可见的基线有距离,如果我们添加draw
到每个节点就可以看到这一点:
我该如何删除这个多余的空间,以便center
我的符号实际上位于我看到的黑色物质的中心?
(删除右侧的多余空间-
也不错)
答案1
字形周围的空白称为侧向承载,并从该字形的边界框中提取(对于 TeX 来说,这略有不同)。有时边界框比字形大,但有时比字形小。这些由字体设计师决定(还有很多事情需要注意,例如字距对、重音符号的位置等)。
如果你使用 pdfLaTeX,边界框信息可以在.tfm
文件。TeX 对实际的字形一无所知,它只看到边界框。因此,正如其他人已经在评论中指出的那样,不可能“删除”空白,因为 TeX 根本不知道字形在边界框内的实际位置。
然而,一个精心设计的数学字体始终将二进制/关系符号和大运算符居中对齐。因此,正如其他人所建议的那样,您可以使用数学+
、-
等等,无需指定anchor=center
。
\documentclass{standalone}
\usepackage{tikz}
\tikzset{x=1pt, y=1pt, z=1pt}
\begin{document}
\begin{tikzpicture}[inner sep=0, outer sep=0]
\node[draw,very thin] at (-10, 0) {\textit{f}};
\node at (-15, 0) {\rlap{\color{red}\rule{70pt}{.1pt}}};
\node at (0, 0) {$*$};
\node at (10, 0) {$+$};
\node at (20, 0) {$-$};
\node at (30, 0) {$\cdot$};
\node at (40, 0) {$\sum$};
\end{tikzpicture}
\end{document}
注意如何\textit{f}
超出其边界框。