破折号 — — 用于分隔括号中的从句 — — 通常不带任何空格,但我更喜欢在两边留出一点(或者可能是很细的)空格。
实现此目的的“明显”方法可能是写成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
(使用
\thinskip
with\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
。
微字体字距调整的一个已知限制(在我看来非常小)是破折号后面的单词不会自动连字符 — 但您仍然可以插入手动断点。我还没有测试过这一点。
我不相信这会改变破折号之前或之后的断字符行为;我已经确认它仍然会在之后立即断字符,并且它仍然会优先于用连字符连接单词。