如何让 microtype 的“外部间距”与 xspace 包一起工作?

如何让 microtype 的“外部间距”与 xspace 包一起工作?

Microtype在字母间距文本的开头和结尾添加额外的空格,通过\SetTracking命令的“外部间距”选项进行配置。不幸的是,xspace这破坏了这一点。例如,我为首字母缩略词定义了一些宏:

\newcommand{\foo}[0]{\textsc{foo}\xspace}

现在,排版文本“bar \foo bar”的结果变得不平衡:“FOO”之前的空间比之后的空间大。有人知道解决这个问题的好办法吗?

以下文档添加了大量外部空格以更清楚地说明问题:

\documentclass{report}
\usepackage[tracking]{microtype}
\SetTracking
  [outer spacing={2000*,,}]
  {encoding=*, shape={sc,scit}}
  {100}
\usepackage{xspace}
\newcommand{\foo}[0]{\textsc{foo}\xspace}
\begin{document}

bar \foo bar

bar \textsc{foo} bar

\end{document}

这将打印

"bar      foo bar"

在第一段中,

"bar      foo      bar"

在第二。

答案1

除了使用,您还可以使用在定义中\xspace终止的技巧:slash

\documentclass{report}
\usepackage[tracking]{microtype}
\SetTracking
  [outer spacing={2000*,,}]
  {encoding=*, shape={sc,scit}}
  {100}

\newcommand{\newfoo}{}% In case `\newfoo` is defined 
\def\newfoo/{\textsc{newfoo}}

\begin{document}

bar \textsc{foo} bar

bar \newfoo/ bar

\end{document}

也可以看看https://tex.stackexchange.com/a/25825/9632

答案2

此问题已修复微型v2.5a(仅仅十一个月后...)。

相关内容