cpprefjp / site

cpprefjpサイトのMarkdownソース
https://cpprefjp.github.io/
381 stars 155 forks source link

C++23言語機能「行末スペースを無視するよう規定」の説明文が不正確 #1160

Closed kusunosetoru closed 1 year ago

kusunosetoru commented 1 year ago

C++23のページで言語機能「行末スペースを無視するよう規定」(P2223R2 Trimming whitespaces before line splicing)の説明で「行末が\でおわっていた場合に」とありますが、正しくは「行末が\でおわっていた場合に」と\記号のあとに空白文字がある必要があります。

なお、ソースコードでは「行末が`\ `でおわっていた場合に」と空白文字が入っており、Github上でのプレビューでは正しく表示されています。

site_generatorが使用しているPython-Markdownは開始のバックティックの直後および終了のバックティックの直前の連続する空白文字を除去する(参考:Python-Markdown/markdown#321)のに対し、CommonMarkのCode spansの仕様では「` a`」のように一方にだけ空白文字がある場合には除去しないという仕様の違いがあるようです。

faithandbrave commented 1 year ago

報告ありがとうございます。 これはMarkdownコンバーターの実装の問題ではありますが、今回のところは<code>タグを使用して問題を回避しようと思います。

と思ったのですが、これでも直らないですね…。htmlだけ手元に持ってくるとスペースが表示されるので、CSSの問題かな…

kenichiice commented 1 year ago

https://developer.mozilla.org/ja/docs/Web/CSS/white-space

を見るとデフォルト(white-space: normal;)では要素内の行末の空白は除去されるようなので、code要素に対してCSSで white-space: pre; を指定すれば正しく表示できそうに思いました。

kenichiice commented 1 year ago

シンプルなHTMLで試してみた所、デフォルトでは code要素の行末のスペースは表示されるようでした。 cpprefjpのcode要素には display: inline-block; が指定されていて、これがあると行末のスペースが除去されてしまうようです。

なので、次のどちらかを行うと表示が変わるのではないかと思います。

kusunosetoru commented 1 year ago

すみません。C++23言語機能の実装状況にも同じ表記があるんですが、報告から漏れていました。

faithandbrave commented 1 year ago

ありがとうございます。 手元でHTMLサーバーを動かしてやってみます。

実装状況の方も同様に修正しておきます。

faithandbrave commented 1 year ago

<code>タグにwhite-space: pre;をつけて直りました! @kusunosetoru さん、 @kenichiice さん、ご協力ありがとうございました。