撇号位置问题

撇号位置问题

我正在尝试排版单词形式DARPA's,但在空格方面遇到了一些问题撇号相对于相邻字母。特别是,如果我按原样使用文本,LaTeX 会将撇号放置得太靠近A,而如果我使用,这会导致和DARPA~'s之间的距离太大。我希望得到有关修复此问题的建议。DARPA's

答案1

问题显然出在字体的字距调整指令上,因此您要做的就是抑制字距调整。有几种方法可以做到这一点:

  • DARPA{}'s-- 一个空组
  • DARPA\/'s-- 斜体更正
  • DARPA{'}s-- 将撇号隔离在其自己的组中

你的选择——它们都应该有相同的结果。

警告——如果包含此字符串的段落为了连字/对齐而经过额外的处理,前两个可能会丢失,尽管这个特定的字符串可能不是连字的候选。

更新: 评论中建议的其他可能性:

  • DARPA\kern0pt's-- 显式零宽度字距 (Heiko Oberdiek)
  • DARPA\mbox{'}s—— 用方框括起来的,因此在“结构上”是孤立的撇号(Manuel)

正如评论中所述,选择哪种方法取决于受影响的字符对的形状和情况,例如文本是否可以进行连字。分组和框选的实例也会影响与字符串中下一个字符的交互。

答案2

如果你使用xcharter似乎没有问题:

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc} 
\usepackage{XCharter}%
\begin{document}

DARPA’s

\end{document} 

在此处输入图片描述

答案3

如果使用字体包,大写字母 A 和撇号之间会有一个隐式字距调整。charter由于 A 的形状,负字距调整是有意义的。这不是错误,而是字体设计者的选择。

下面的例子比较了三种情况:

  • 未修改的版本,具有字体定义的隐式字距调整。

  • 如果没有隐式字距调整,则通过添加 来删除\kern0pt

  • 如果添加一些小字母间距,大写字母的单词会更易读。这可以通过 packagemicrotype\textls命令完成。

示例文件:

\documentclass{article}
\usepackage{microtype}
\usepackage{charter}
\pagestyle{empty}
\begin{document}

  \noindent
  DARPA's\\ % unmodified
  D\kern0pt ARP\kern0pt A\kern0pt's\\ % without implicit kerning
  \textls[25]{DARPA's}% small letter spacing

\showboxdepth=\maxdimen  
\showboxbreadth=\maxdimen
\tracingonline=1
\nonstopmode
\showlists
\end{document}

结果

未修改版本的日志结果,显示字距调整值:

.\OT1/bch/m/n/10 D
.\kern-0.19
.\OT1/bch/m/n/10 A
.\OT1/bch/m/n/10 R
.\OT1/bch/m/n/10 P
.\kern-0.93001
.\OT1/bch/m/n/10 A
.\kern-1.3
.\OT1/bch/m/n/10 '
.\OT1/bch/m/n/10 s

插入零空格的版本\kern0pt在字母之间没有正空格或负空格:

.\OT1/bch/m/n/10 D
.\kern 0.0
.\OT1/bch/m/n/10 A
.\OT1/bch/m/n/10 R
.\OT1/bch/m/n/10 P
.\kern 0.0
.\OT1/bch/m/n/10 A
.\kern 0.0
.\OT1/bch/m/n/10 '
.\OT1/bch/m/n/10 s

该字体包含包中的字母间距版本,letterspace如字体名称所示:\OT1/bch/m/n/10/25ls

相关内容