答案1
您的\hbox to 5cm
(应该是\makebox[5cm][s]
)只是加剧了的问题\nonfrenchspacing
,这是 LaTeX 中的默认设置。
考虑更简单的例子
\documentclass[a4paper,12pt]{article}
\begin{document}
This. Looks ugly.
This (what?) looks ugly
\setlength{\xspaceskip}{1cm plus 0.5cm minus 0.2cm}
This. Looks ugly.
This (what?) looks ugly
\end{document}
如果你仔细观察,你会发现第一行中 和 之间的空格.
比和 之间L
的空格更宽。同样,第二行中 和 之间的空格比和 之间的正常单词间空格更宽。s
u
)
l
s
u
以下几行强调了这一点,其中\xspaceskip
通过示例将设置为(确实太)大的值。
在“强标点”之后,TeX 会插入更宽的单词间距,以符合(并非真正标准的)美式排版习惯。我对此的看法是 Knuth 喜欢它。很多人不喜欢(包括我自己)。
就单词间空格的规则而言,括号是“透明的”,因此后面的空格)
将被视为其后面的空格?
。
解决方案:声明\frenchspacing
并忘掉此事。
\documentclass[a4paper,12pt]{article}
\frenchspacing
\begin{document}
This. Looks ugly.
This (what?) looks ugly
\setlength{\xspaceskip}{1cm plus 0.5cm minus 0.2cm}
This. Looks ugly.
This (what?) looks ugly
\end{document}
顺便说一句,\frenchspacing
这是一个错误的说法,因为法语印刷术中的标点符号规则完全不同。
答案2
字符?
的 spacefactor 为 3000。这意味着后续空格(忽略空格因子为 0 的字符,例如)
)的3000 / 1000 = 3
拉伸倍数和1000 / 3000 = 1/3
收缩倍数。如果您想要一个普通的单词空格,则需要将 spacefactor 重置回 1000。LaTeX 具有\@
执行此操作的控制序列。因此,请尝试:
\documentclass[a4paper,12pt]{article}
\begin{document}
\hbox to 5cm{This (what?)\@ looks ugly}
This (what?)\@ looks ugly
\end{document}
以下是经过校正的空间因子后的输出: