我正在尝试排版单词形式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
。如果添加一些小字母间距,大写字母的单词会更易读。这可以通过 package
microtype
的\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
。