我如何自动检查 \baselineskip 是否足够大?

我如何自动检查 \baselineskip 是否足够大?

当我设置字体大小和基线跳跃时,我必须注意,基线跳跃对于我的字体来说足够大。有没有一种自动方法可以在 LaTeX 中检查这一点?

给出以下示例:

\documentclass[tikz]{standalone}

\newcommand{\mine}{\sffamily\fontsize{14.7}{15.2}\selectfont}

\begin{document}
    \begin{tikzpicture}
        \node[anchor=north west,text=green,font=\mine](first) at (0,0){\strut Test/};
        \node[anchor=north west,font=\mine](first) at (0,0){\strut Test};
    \end{tikzpicture}
\end{document}

生产

在此处输入图片描述

如您所见,文本并没有完美地叠放在一起,可能是因为斜线的高度较大。

现在如果我们采用另一种字体:

\documentclass[tikz]{standalone}

\usepackage{libertine}

\newcommand{\mine}{\sffamily\fontsize{14.7}{15.2}\selectfont}

\begin{document}
    \begin{tikzpicture}
        \node[anchor=north west,text=green,font=\mine](first) at (0,0){\strut Test/};
        \node[anchor=north west,font=\mine](first) at (0,0){\strut Test};
    \end{tikzpicture}
\end{document}

再次运行,没有出血:

在此处输入图片描述

如果我在第一个示例中增加\baselineskip,文本也会适合。那么有没有一种自动的方法来检查 baselineskip 是否足够大?

该问题与 TikZ 中的位置无关,我知道我可以通过使用锚点.* base进行正确对齐来完全避免该问题,它更多的是关于正确的定义\baselineskip

答案1

正如注释中指出的那样,图像中的错位实际上并不是由于基线造成的。(除非您指定宽度,否则 tikz 节点\mbox不会使用基线计算,只有当您指定宽度时,它们才会使用minipage,因此在换行时会使用文本指定的基线。

但是对于主要问题,TFM 字体没有任何给出字体边界的全局参数,因此您需要计算它。

基本上

\sbox0{ABC..xyz}

\dimexpr\ht0+\dp0 垂直范围。

在框中放入要测量的内容时,您可以灵活地进行选择。您可以使用\char0...\char255等所有字符,但您可能还需要考虑构造重音符号,例如\'{E}字体中可能没有的重音符号,以及脚注标记,例如X\textsuperscript{\dagger} 或其他任何您合理地期望适合段落而不会干扰行距的符号。

相关内容