Markdig是.net流行的mardown处理程序。在设置用于markdig的管道时,其中一个选项是“将软线作为硬线”,可以使用类似的方式进行配置
var pipeline = new MarkdownPipelineBuilder()
.UseSoftlineBreakAsHardlineBreak()
.Build();
根据documentation“使用此扩展名时,段落块中的新行将导致强行中断”
This is a paragraph
with a break inside
.
<p>This is a paragraph<br />
with a break inside</p>
但是,当我尝试使用此扩展程序时,观察到的行为与示例中引用的行为不同。我观察到的输出与不带扩展名的输出相同,即:
<p>This is a paragraph</p>
<p>with a break inside</p>
以某种方式,我认为我无法正确理解此UseSoftlineBreakAsHardlineBreak
扩展名。有人可以解释我所引用的文档中的示例吗?
答案 0 :(得分:1)
关键在于理解HTML中无关紧要的空格和有效空白之间的区别。 normal行为是这样描述的:
空白序列被折叠。源代码中的换行符与其他空格相同。线会根据需要折断以填充线框。
因此,本段:
<p>This is a paragraph
with a break inside</p>
表示为:
这是一个段落 内在休息
如果使用浏览器的“查看源代码”或“检查”工具,则可以看到换行符保留在HTML中,但被浏览器视为空格。 UseSoftlineBreakAsHardlineBreak
扩展名插入一个<br />
元素,以便浏览器保留换行符。
换句话说,使用UseSoftlineBreakAsHardlineBreak
,HTML输出变为:
<p>This is a paragraph<br />
with a break inside</p>
显示为:
这是一个段落
内在休息
请注意,像这样保留换行符是一种非标准的Markdown行为,但是对于不熟悉浏览器如何处理空白的用户来说,这通常不足为奇。
最后,我注意到在这个问题中您将正常输出显示为(没有UseSoftlineBreakAsHardlineBreak
):
<p>This is a paragraph</p>
<p>with a break inside</p>
而不是预期的输出:
<p>This is a paragraph
with a break inside</p>
我认为这是您提出问题时的错误/疏忽。如果您确实要得到两个单独的段落(每行一个),那么这完全是一个单独的问题,应该应该是它自己的问题。