更正多段引号的HTML

时间:2016-09-12 03:52:52

标签: html html5 semantic-markup

我的文字写得如此:

  “有些东西,”他说。 “Lorem ipsum dolor坐着,自然   elitr his,usu ex dictas everti,utamur reformidans ad vis。 EAM   dissentiet deterruisset an,vis cuulul lobortis。 Doming inimicus欧盟   nec,laudem audire ceteros cu vis,et perligendi splendide。 NE   legere tacimates instructior qui。 Te vis dicat iudico integre,ex est   prima constituam consequuntur。 Vix sanctus voluptaria ei,usu ornatus   iracundia ne,nam nulla iudico no。 Duo ei labores nusquam。

     

“在harum docendi fuisset vis.Meis constituam ea quo.Ei vim prima   liber officiis。 Ad modo tota augue est,fugit soleat blandit eos ex。“

该文本遵循多段引号的烦人印刷规则:跨越段落的引用在每个内部段落的末尾没有结束引用,但在每个内部段落的开头有一个额外的引用。 HTML5不允许set.seed(24) b <- matrix(sample(0:9, 8000*5000, replace=TRUE), ncol=5000) a <- sample(0:3, 5000, replace=TRUE) system.time(b + a[col(b)]) # user system elapsed # 1.08 0.06 1.14 system.time(b + rep(a, each = nrow(b))) # user system elapsed # 0.83 0.03 0.86 system.time(t(a+t(b))) # user system elapsed # 1.14 0.03 1.17 system.time(sweep(b, 2, a, "+")) # user system elapsed # 0.62 0.06 0.69 元素中的<p>个元素,但这种情况更糟糕:第二个引用甚至不包括所有段落,所以即使它确实如此(或者如果我使用的话,说, ,<q>)我没有办法在没有错位元素的情况下对其进行标记。

(当然我可以嵌入引号而不是使用<div class=quote>,但我正在寻找最佳方法的想法。)

2 个答案:

答案 0 :(得分:2)

最干净的方法确实是引号;它们在语义上与使用<q>元素一样合适。来自spec

  

使用q元素标记引用完全是可选的;使用没有q元素的显式引号标点符合正确。

  

代码示例:

     

在以下示例中,使用引号而不是q元素:

<p>His best argument was ❝I disagree❞, which
I thought was laughable.</p>

话虽如此,你可以仍然使用<div class=quote>来标记多段引文的开头和结尾,如你所建议的那样,再加上以下的CSS: / p>

q {
  quotes: '\201c' '\201d' '\2018' '\2019';
}

.quote > p:not(:last-of-type) > q:last-child {
  quotes: '\201c' '' '\2018' '';
}
<div class=quote>
  <p><q>Something something,</q> he said. <q>Lorem ipsum dolor sit amet,
     ne natum elitr his, usu ex dictas everti, utamur reformidans ad vis.
     Eam dissentiet deterruisset an, vis cu nullam lobortis. Doming
     inimicus eu nec, laudem audire ceteros cu vis, et per eligendi
     splendide. Ne legere tacimates instructior qui. Te vis dicat iudico
     integre, ex est prima constituam consequuntur. Vix sanctus voluptaria
     ei, usu ornatus iracundia ne, nam nulla iudico no. Duo ei labores
     nusquam.</q></p>

  <p><q>In harum docendi fuisset vis. Meis constituam ea quo. Ei vim prima
     liber officiis. Ad modo tota augue est, fugit soleat blandit eos ex.</q></p>
</div>

但这需要首先在必要时使用<div class=quote>。当然,因为它只是一个div,它不会将包含引文的文本与散文的其余部分区分开来(相反,块引用完全不适合这个原因),或以其他方式改变文本的含义,但是它仍然没有你想要的那么干净。然而,无论第二段是否已完整表示,或者在引号后面是否有更多文本,它确实有效 - 或者实际上,即使第二段包含一个引文的结尾和另一个引文的开头(只是将您的</div>结束标记移动到第二个引用结束的位置。

您会在上面的代码段中注意到<q>元素本身是按段划分的;这是perfectly normal,因为<q>是一个措辞元素,因此,正如您所说,不能跨越多个流元素。但是,如果您真的担心将<q>元素拆分(特别是AT)作为两个单独的引用,您可以使用类或自定义数据属性关联它们,或者只使用引号更简单,并且将有效地传达文本的含义。

答案 1 :(得分:2)

上一个答案(重新定义 quotes: '\201c' '\201d' '\2018' '\2019';)有效,但它会覆盖用户的区域设置并强制使用美式引号。

相反,这个:

<style>
    q.continued::after { font-size: 0; }
</style>
…
<p>
    I replied, <q class="continued">Blah blah blah.</q>
</p>
<p>
    <q class="continued">And not only that!</q>
</p>
<p>
    <q>So there!</q>, and left the room.
</p>

产生:

I replied, ”Blah blah blah.

”And not only that

”So there!”, and left the room.

哪个应该与任何语言环境的引号字符一起正确工作。


请注意,display:none 会更好,但它不起作用。 浏览器(至少是 Chrome)注意到缺少结束引号并切换到以下段落的备用引号。