自动间距

自动间距

假设我想自定义和自动化 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对中。

相关内容