我有一个无法解释的问题。以下是代码:
\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}