删除基线和符号之间的空白

删除基线和符号之间的空白

尽管我的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}超出其边界框。

相关内容