不间断的破折号,而不是连字符
Posted
技术标签:
【中文标题】不间断的破折号,而不是连字符【英文标题】:Non-breaking en dash, not a hyphen 【发布时间】:2020-04-10 07:53:43 【问题描述】:我知道在 html 中有一个不间断的连字符 (#8209
),但我需要一个不间断的破折号 (#8211
)。它们的使用方式不同。除了在我的整个文档中使用不间断代码包装文本和破折号之外,还有其他正确的方法吗,例如:
<nobr> TEXT #8211 TEXT </nobr>
【问题讨论】:
您可以尝试使用word joiner character,即&#8288;
,位于短划线的任一侧。
(关于输入<nobr>
等而不转换成HTML:How do I insert inline code snippets on Stack Overflow?)
你说它们的用法不同。我非常好奇:不间断的连字符和不间断的破折号有什么区别?也许我用错了破折号?
@SherylHohman 连字符 (-) 是用于连接单词或部分单词的标点符号。它不能与其他类型的破折号互换。破折号比连字符长,通常用于表示范围或暂停。最常见的破折号类型是短破折号 (-) 和长破折号 (-)。
酷。破折号和破折号有什么用? em/en 代表什么吗?我学到了一些东西——当我应该使用 en 或 em 更长的破折号时,我一直在使用连字符(“常规破折号”)来表示范围。我有一个网站要相应地更新:-)
【参考方案1】:
尝试用 Word-Joiner 字符包围短破折号 (#8288)。
TEXT⁠–⁠TEXT
【讨论】:
【参考方案2】:在最近的一个项目中,这个问题让我发疯了。我发现很难相信破折号默认是中断字符。如果您可以在 html 中插入额外的字符,那么 &#8288;
效果很好。请注意,在破折号之后只需要一个单词连接符,因为我相信它们之前不会中断。
出于多种原因,在我的源 HTML 中手动添加额外字符对我来说不起作用,我想出了一个 javascript 解决方案,它自动将.nobreak
CSS 类应用于任何破折号和字符紧随其后。
<style>
.nobreak
white-space: nowrap;
</style>
<body>
<p>This is a paragraph with a number range, 1–34, and it will never break after the en dash.</p>
<script>
$("body").html(function(_, html)
return html.replace(/(–.)/g, '<span class="nobreak">$1</span>')
);
</script>
</body>
一个更简单的解决方案可能是使用相同的脚本在破折号后自动插入&#8288;
。只需将js更改为:
$("body").html(function(_, html)
return html.replace(/–/g, '–⁠')
);
【讨论】:
【参考方案3】:根据这个documentation,以及关于单词joiner &#8211;
的其他答案,以下HTML 应该产生一个不可破坏的破折号:
如果字符没有 HTML 实体,可以使用小数 (dec) 或十六进制 (hex) 引用。
<p>
Will break :
<br />
TEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXT–TEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXT
<p>
<p>
Won't break (word joiner):
<br />
TEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXT⁠–⁠TEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXT
<p>
【讨论】:
以上是关于不间断的破折号,而不是连字符的主要内容,如果未能解决你的问题,请参考以下文章