当在大写字母 T 旁边直接使用连字符时,间距(字距)看起来很奇怪:
输入:Abc-Tuv
输出:
似乎连字符和 T 之间有太多空格。我可以使用默认字体在 PdfLaTeX 和 XeLaTeX(甚至 Word)中重现这种行为。
这在印刷上正确吗?如果不正确,那正确的是什么?如何才能在整个文档中实现一致的正确字距调整,而无需\kern
在每次出现时手动指定?
谢谢您的回答。
编辑:鉴于这个问题被标记为重复,我意识到我对这个问题的表述有些误导。也许强调一下这个问题的排版方面会更好:通常自动字距调整效果很好(这意味着我以前从来不用为此操心)。为什么在这个特殊情况下间距看起来“不对”?我是不是搞错了,这实际上是(排版)正确的?如果不是,我应该提供哪个值\kern
?猜测一个值并更改它直到“感觉”良好?有没有更好的方法,可以自动选择最佳值?
我希望这可以澄清一切,抱歉一开始就不够准确。
答案1
使用 XeTeX,您可以使用\XeTeXinterchartoks
:
\XeTeXinterchartokenstate=1
\newXeTeXintercharclass\exhyph
\newXeTeXintercharclass\negbear
\XeTeXcharclass`-\exhyph
\XeTeXcharclass`T\negbear
\XeTeXinterchartoks\exhyph\negbear={\kern-.2em}
Abc-Tuv Abc-Tuv
\bye
无论是“印刷正确”,还是“要想违反规则,首先必须了解规则”,但话又说回来,“唯一的规则就是没有规则”。
答案2
我同意 Werner 的观点,这是一个非常主观的问题。减小字距后,连字符会被 T 字符遮住,因此使用小字体时,很难看出“Abc-Tuv”是复合词,而不是维基词中间有一个小点。
也就是说,另一个不可调的解决方案可以$\!$
在连字符后输入:
\documentclass{article}
\begin{document}
Abc-$\!$Tuv
\end{document}
结果大致相同,\kern-.1em
但打字更容易(4 次击键 vs 10 次),而且更不容易分散注意力。
编辑:egreg 的评论展示了如何\!
在文本中使用,将输入减少到 2 个字符(加上连字符。为了促进写作的懒惰,这是一个零输入的替代方法,使用自己的 egreg 武器: \newunicodechar
。在这里你可以简单地输入¬
而不是连字符:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}
\newunicodechar{¬}{-\ensuremath\!}
\begin{document}
Abc¬Tuv
\end{document}
我之所以选择它,¬
是因为它类似于连字符,我从来不需要这个符号,而且它在我的键盘上显示,但可以随意¬
用另一个未使用的字符替换。当然,您也可以将定义形式更改-\ensuremath\!
为-kern.1em
或您想要的任何形式。