为什么此代码中的数字 7(Computer Modern 斜体)会跳出基线?

为什么此代码中的数字 7(Computer Modern 斜体)会跳出基线?

我有一个无法解释的问题。以下是代码:

\documentclass{scrartcl}

\usepackage{tikz}

\begin{document}
\newcommand{\tikzmark}[4][]{\begin{tikzpicture}\node[inner sep=1pt,outer sep=0pt,font=#4] (#2) {#3#1}; \end{tikzpicture}}
\newcommand{\oct}[2][]{\tikzmark[#1]{oct_#2}{'#2}{\itshape}}

\begin{tabular}{c|c|c|c|c|c|c|c|c|c}
    &\oct{0}    &\oct{1}    &\oct{2}    &\oct{3}    &\oct{4}    &\oct{5}    &\oct{6}    &\oct{7}    & \\ \hline
\end{tabular}

\end{document}

结果表如下: 在此处输入图片描述

7号球为什么跳出了底线?

答案1

回答为什么拉丁现代斜体 7 虽然没有降部却要向上移动的问题:它实际上不可见的下降部,即其边界框具有与斜体 4 相同的深度。其他斜体数字没有此功能(或者它是一个错误?)。

\documentclass{article}
\usepackage[margin=15mm]{geometry}
\usepackage{showcharinbox, anyfontsize}

\begin{document}
\begin{center}

\ShowCharInBox{\fontsize{200}{210}\selectfont 6}
\vskip 1cm
\ShowCharInBox{\fontsize{200}{210}\selectfont 4}
\vskip 1cm
\ShowCharInBox{\fontsize{200}{210}\selectfont 7}

\newpage

\ShowCharInBox{\fontsize{200}{210}\selectfont\textit{6}}
\vskip 1cm
\ShowCharInBox{\fontsize{200}{210}\selectfont\textit{4}}
\vskip 1cm
\ShowCharInBox{\fontsize{200}{210}\selectfont\textit{7}}

\end{center}
\end{document}

在此处输入图片描述

在此处输入图片描述


感谢@Robert添加了以下Knuth的引言(在错误):

我绝对保证 TFM 文件永远不会再改变。(否则我会考虑将斜体 7 的深度归零,我承认这很奇怪......我们可以忍受它。)

TeX 基础不变(除了错误修复)很重要,因为它是更复杂框架的基础。因此,即使 TeX 基础的微小变化也很容易导致更高级别的代码出现错误。显然,这个下降符不算是一个错误,至少不是一个严重的错误。

在此,我引用一段话TeX 常见问题解答

Knuth 已宣布他将不再进一步开发 TeX;他将继续修复任何报告给他的错误(尽管错误很少见)。这一决定是在 TeX 3.0 版发布后不久做出的;

答案2

这将使节点的基线对齐。

\documentclass{scrartcl}

\usepackage{tikz}

\begin{document}
\newcommand{\tikzmark}[4][]{\begin{tikzpicture}[baseline=(#2.base)]
  \node[inner sep=1pt,outer sep=0pt,font=#4] (#2) {#3#1}; 
\end{tikzpicture}}
\newcommand{\oct}[2][]{\tikzmark[#1]{oct_#2}{'#2}{\itshape}}

\begin{tabular}{c|c|c|c|c|c|c|c|c|c}
    &\oct{0}    &\oct{1}    &\oct{2}    &\oct{3}    &\oct{4}    &\oct{5}    &\oct{6}    &\oct{7}    & \\ \hline
\end{tabular}

\end{document}

演示

答案3

值得注意的是,该Latin Modern字体——Computer Modern 字体的(非常接近!)克隆——确实修复了字形中不幸的“非错误 bug” Computer Modern Italic 7

在此处输入图片描述

\documentclass{scrartcl}
\usepackage{lmodern} % <-- new
\usepackage{tikz}
    
\newcommand{\tikzmark}[4][]{\begin{tikzpicture}\node[inner sep=1pt,outer sep=0pt,font=#4] (#2) {#3#1}; \end{tikzpicture}}
\newcommand{\oct}[2][]{\tikzmark[#1]{oct_#2}{'#2}{\itshape}}

\begin{document}

\begin{tabular}{c|c|c|c|c|c|c|c|c|c}
&\oct{0}    &\oct{1}    &\oct{2}    &\oct{3}    
&\oct{4}    &\oct{5}    &\oct{6}    &\oct{7}    & \\ \hline
\end{tabular}

\end{document}

相关内容