假设我想自定义和自动化 em-dash 周围的间距。比如说,我想在前后留有微距。是否有一个包或其他东西可以让我实现这一点?该程序应能够在所有可能的情况下工作 - 例如,如果周围没有空格,则留有微距,如果一侧或两侧都有单词间空格,则将其删除并用微距替换,等等?
答案1
该类ltugboat.cls
包含一组巧妙的破折号宏
\DeclareRobustCommand{\thinskip}{\hskip 0.16667em\relax}
\def\endash{--}
\def\emdash{\endash-}
\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
\def\dash{\d@sh\nobreak\endash}
\def\Dash{\d@sh\nobreak\emdash}
\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}}
\def\rdash{\d@sh\nobreak\endash}
\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}}
\def\Rdash{\d@sh\nobreak\emdash}
这里\unskip
删除了前面的空格并\ignorespaces
删除了后面的空格,然后宏在破折号周围设置了毛发空格。
您可以采用这些宏并使用\Dash
,---
或者根据这些想法编写自己的宏。
如果您使用这些宏,请不要忘记将它们括在\makeatletter
/\makeatother
对中。