使用细空格设置破折号

使用细空格设置破折号

破折号 — — 用于分隔括号中的从句 — — 通常不带任何空格,但我更喜欢在两边留出一点(或者可能是很细的)空格。

实现此目的的“明显”方法可能是写成A\,---\,B而不是A---B(无空格) 或A --- B(不幸的是大空格)。但是,这不允许在破折号周围换行,如果需要的话。

我能想到的最佳解决方案是:

\newcommand{\mdash}
           {\discretionary{}{}{\kern 0.1em}---\discretionary{}{}{\kern 0.1em}}

看起来可行,但是:

  • 这看上去是个好做法吗?
  • 有没有标准的方法来做到这一点?
  • 有什么方法可以调用此命令----而不是\mdash{}

答案1

tugboat 多年来一直使用细空格设置破折号。(编辑们 不是喜欢仪表板几乎撞上两侧的物体的感觉。)

这是拖船定义的简化版本。请注意,它消除了前后空格,因此结果是一致的。

\DeclareRobustCommand{\thinskip}{\hskip 0.16667em\relax}
\def\emdash{---}
\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
\def\Dash{\d@sh\nobreak\emdash}
\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}}
\def\Rdash{\d@sh\nobreak\emdash}

基本 . 的两边都允许换行\Dash(使用 \thinskipwith\hskip而不是 than\thinspace可以实现这一点。)

如果只允许在破折号的右侧或左侧换行, \Rdash\Ldash提供相应的设置来适应这种情况。

答案2

首先我需要说明的是,这种方法是有效的仅有的使用 pdfTeX (≥1.40)。

我使用了 microtype 包:

\usepackage[activate=false,kerning]{microtype}
\SetExtraKerning[unit=character]{encoding=*}{\textemdash={100,100}}

据我所知,这几乎就是微字体字距调整的目的所在,如果没有其他优势,您仍然可以输入---

这增加了空间(但没有Aunit;的unit=1em单位是 0.001em。

如果您省略的话,这个包会添加一些非常好的自动功能activate=false

微字体字距调整的一个已知限制(在我看来非常小)是破折号后面的单词不会自动连字符 — 但您仍然可以插入手动断点。我还没有测试过这一点。

我不相信这会改变破折号之前或之后的断字符行为;我已经确认它仍然会在之后立即断字符,并且它仍然会优先于用连字符连接单词。

相关内容