答案1
通常的 TeX 约定是,连续两个连字符会生成一个短破折号,而三个连字符会生成一个长破折号。
连续的 em 或 en-dash 看起来形成一条实线,尽管它是由不同的字符组成的。但是连字符不会组合,因此如果连字符的数量是三的倍数或比三的倍数少一,则会得到一条实线。如果除以三的余数是一,则会在末尾得到一个连字符。
然而,线条的坚固性取决于字体。
普通 TeX 示例
--------- % nine hyphens
-------- % eight hyphens
------- % seven hyphens
\bye
你可以利用这一点,通过叠加短划线来制作一条长线(至少 0.5em):
\def\solidline#1{%
\leavevmode
\hbox to #1{--\leaders\hbox{\kern-.125em--\kern-.125em}\hss--}%
}
\solidline{1cm}
\solidline{2em}
\solidline{1em}
\solidline{0.5em}
\bye
然而,\vrule
(或 LaTeX 的)规则更有效。同样的效果可以通过
\def\solidline#1{%
\vrule width #1 height 0.64ex depth\dimexpr0.2pt-0.64ex\relax
}
\solidline{1cm}
\solidline{2em}
\solidline{1em}
\solidline{0.5em}
\bye
(需要pdftex
;当然,它也可以与 Knuth TeX 一起工作)。
答案2
千万不要这么做。
两个--
连字对应一个 n 破折号,三个---
连字对应一个 em 破折号,因此,如果有三个的倍数,-
则会有一排 em 破折号,根据字体的不同,它们之间可能有也可能没有空格。使用\rule
或\hrulefill
来画一条线。