xspace
与以下项一起使用时,该包会失败---
:
\documentclass{minimal}
\usepackage{xspace}
\begin{document}
\newcommand{\twosslvbf}{2 SS l (VBF)\xspace}
\twosslvbf is OK.
\twosslvbf --- not OK? % space between ")" and "-" missing
\end{document}
有没有简单的方法可以解决这个问题?(或者我使用的是旧版本?)
答案1
连字符是“例外”之一(如句号、逗号......)\xspace
,不是设置一个空格。您可以通过以下方式将其从预定的例外列表中删除
\usepackage{xspace}
\xspaceremoveexception{-}
在序言中。
当然,这可能会产生其他不良影响,因为你大多会不是希望在连字符前有一个空格。为了纠正此行为,我从文档中复制粘贴了xspace
以下技巧,该技巧可确保 en- 和 em-dash 后面有一个空格,而连字符没有:
\documentclass{article}
\usepackage{xspace}
\xspaceremoveexception{-}
\makeatletter
\renewcommand*\@xspace@hook{%
\ifx\@let@token-%
\expandafter\@xspace@dash@i
\fi
}
\def\@xspace@dash@i-{\futurelet\@let@token\@xspace@dash@ii}
\def\@xspace@dash@ii{%
\ifx\@let@token-%
\else
\unskip
\fi
-%
}
\makeatother
\newcommand{\gm}{Grassmann\xspace}
\begin{document}
\gm is OK. % normal space
\gm-valued spinor works too. % no space, as it should.
\gm -- followed by en-sash % space
\gm --- Who was this guy? % space
\end{document}