字母的字距间距有这么大差别吗?

字母的字距间距有这么大差别吗?

我想知道这里发生了什么:

表格单元格的屏幕截图

为什么第三行被挤到左边这么多?字母 Z 的字距真的比 Y 和 X 小这么多吗?

这发生在longtable具有直接列宽控制的环境中:

\documentclass{article}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{hyperref}
\usepackage[margin=1in]{geometry}

\begin{document}
\begin{longtable}{p{0.27\linewidth}p{0.15\linewidth}p{0.52\linewidth}}
\toprule
\textbf{Column name} & \textbf{Example value} & \textbf{Description} \\
\midrule
BodyFixedCoordinateX  & -67.2071 & Center X coord.\@ [km] in Mars-fixed ref.\@ frame \\
BodyFixedCoordinateY  & 257.05 & Center Y coord.\@ [km] in Mars-fixed ref.\@ frame \\
BodyFixedCoordinateZ  & -3370.63 & Center Z coord.\@ [km] in Mars-fixed ref.\@ frame \\
\bottomrule
\end{longtable}
\end{document}

答案1

如果你运行该文件

\setbox0\hbox{X}\showthe\wd0
\setbox0\hbox{Y}\showthe\wd0
\setbox0\hbox{Z}\showthe\wd0
\bye

通过命令行上的 (Plain-)TeX,TeX 显示字符的宽度XYZ采用标准字体。

宽度分别为7.5pt7.5pt6.11pt,因此差异不在于字距,而在于字母的宽度。如果要避免字母宽度不同,可以使用 等宽字体\mathtt{...}

答案2

正如其他两个答案已经确定的那样,问题不是字距调整的问题。相反,问题在于字母 X、Y 和 Z 的宽度不一样。具体来说,对于当前的情况,即使用 Computer Modern Roman 直立字体,字母 Z 的宽度小于其他两个字母。

怎样才能得到一个看起来整洁的表格?我们假设“整洁”意味着第三列中的其余材料应该完全对齐。我建议创建一个宏(\spbox在下面的代码中调用),它接受两个参数。第一个参数包含表示框预期宽度的材料(例如,单个字母“X”),第二个参数包含要排版的字母(例如,单个字母“Z”)。显然,第二个参数的宽度应该小于第一个参数的宽度。

另外四点观察:(i)对中间的数字列使用S列类型(由包提供)。(ii) in不会实现更简单的方法无法实现的功能。(iii)养成使用宏编写科学单位的习惯,宏也是由包提供的。(iv)加载包通常是一种非常好的做法siunitx\@Mars-fixed ref.\@ frameMars-fixed ref.\ frame\sisiunitxhyperref最后的。(此规则只有极少数例外;其中之一就是cleveref必须在之后加载hyperref。)

Marcel Krüger 的回答,我们知道如果使用 Computer Modern Roman 直立字体,字母 X 和 Y 的宽度相等。更一般地,假设我们所知道的只是 X 是至少同样宽同时为 Y 或 Z。以下代码使用两个\spbox指令来考虑到这一点。

在此处输入图片描述

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{longtable,booktabs,siunitx,array,calc}
\usepackage{hyperref} % load this package *last*

%% The new user macro: \spbox
\newcommand{\spbox}[2]{\makebox[\widthof{#1}]{#2}}

\begin{document}

\begin{longtable}{@{} p{0.27\linewidth}
              S[table-format=-4.4] % was: "p{0.15\linewidth}"
              p{0.52\linewidth} @{}}

%% Headers and footers
\toprule
\textbf{Column name} & 
\multicolumn{1}{>{\centering}p{0.15\linewidth}}{\textbf{Example value}} & 
\textbf{Description} \\
\midrule
\endhead

\bottomrule
\endlastfoot

%% Body of longtable
BodyFixedCoordinateX  & -67.2071
  & Center X coord.\ [\si{\kilo\meter}] in Mars-fixed ref.\ frame \\
BodyFixedCoordinateY  &  257.05  
  & Center \spbox{X}{Y} coord.\ [\si{\kilo\meter}] in Mars-fixed ref.\ frame \\
BodyFixedCoordinateZ  &  -3370.63  
  & Center \spbox{X}{Z}\ coord.\ [\si{\kilo\meter}] in Mars-fixed ref.\ frame \\
\end{longtable}

\end{document}

答案3

这取决于使用的字体。你的情况是 Computer Modern,字体较小Z

例如,如果您使用 Libertine 字体,差异就消失了:

\documentclass{article}

%\usepackage{graphicx}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage[margin=1in]{geometry}

\usepackage{Libertine} % <==============================================

\usepackage{hyperref}


\begin{document}
\begin{longtable}{p{0.27\linewidth}p{0.15\linewidth}p{0.52\linewidth}}
\toprule
\textbf{Column name} & \textbf{Example value} & \textbf{Description} \\
\midrule
BodyFixedCoordinateX  & -67.2071 & Center X coord.\@ [km] in Mars-fixed ref.\@ frame \\
BodyFixedCoordinateY  & 257.05   & Center Y coord.\@ [km] in Mars-fixed ref.\@ frame \\
BodyFixedCoordinateZ  & -3370.63 & Center Z coord.\@ [km] in Mars-fixed ref.\@ frame \\
\bottomrule
\end{longtable}
\end{document}

结果如下:

在此处输入图片描述

相关内容