Problem
Tekst:
`Lorem ` ipsum
jest renderowany jako (zrzut ekranu):
Efekt:
Lorem
ipsum
Jak widać, brakuje jednej spacji.
Carbon Copy @TomRiddle
Tekst:
`Lorem ` ipsum
jest renderowany jako (zrzut ekranu):
Efekt:
Lorem
ipsum
Jak widać, brakuje jednej spacji.
Carbon Copy @TomRiddle
Na 99% problem ze stylami CSS, a nie parserem ani renderem Markdown.
Dokładnie. W taki sposób renderuje tekst przeglądarka. Przykład:
a b
Efekt:
a b
Dodanie deklaracji CSS white-space: pre-wrap
do elementu-rodzica tego tekstu wydaje się rozwiązywać problem. Nie wiem jednak, czy czegoś innego to nie zepsuje.
To nie jest błąd, ale zachowanie oczekiwane. Tak działa HTML. Spacje są zachowywane za to wewnątrz znacznika <code>
. W HTML spację można wymusić poprzez
Adam Boduch napisał(a):
To nie jest błąd, ale zachowanie oczekiwane. Tak działa HTML. Spacje są zachowywane za to wewnątrz znacznika
<code>
. W HTML spację można wymusić poprzez
Kurcze, jest brak zgody.
`Lorem `
, odstęp (taki jak
) i tekstMoim skromnym zdaniem, tak jak jest w WebStorm/PhpStorm i tak jak mówi @Silv jest najbardziej naturalnie.
Adam Boduch napisał(a):
To nie jest błąd, ale zachowanie oczekiwane. Tak działa HTML. Spacje są zachowywane za to wewnątrz znacznika
<code>
. W HTML spację można wymusić poprzez
Adam, ja Cię rozumiem jako programista. Niemniej również dla mnie jako użytkownika jest to zachowanie nieintuicyjne. Żebyśmy się zrozumieli: czy uważasz, że dla użytkownika to jest zachowanie oczekiwane, że nie widać tej drugiej spacji?
UPDATE Dodam, żeby było jasne: jeśli zdecydujesz się to zmienić, niekoniecznie musi być rozwiązanie w CSS. Podałem przykładowe rozwiązanie. Zamiast CSS może być encja
.
UPDATE2 Chociaż jak się teraz zastanawiam, to może niekoniecznie ta encja jest równoważna CSS dla użytkownika. W końcu jak ktoś będzie kopiować wyrenderowany tekst, to skopiuje sobie non-breaking space, czyli co innego niż zwykłą spację.
Już narzekałem na te spacje kiedyś: Kod źródłowy in-line (pojedyncze grave’y) pomija wielokrotną spację
I teraz po prostu sobie to Stylishem wymuszam.
Jest zachowanie oczekiwane gdyż specyfikacja markdown nie mówi nic o wielokrotnych spacjach. Parser przekształca jedynie tekst na HTML a w HTML to jest poprawne zachowanie. Tak działa nie tylko nasz edytor, ale również ale również edytor na github, stackoverflow czy bitbucket.
Wielokrotne spacje działają poprawnie wewnątrz znacznika <code>
czy <pre>
co również jest poprawnym zachowanie z perspektywy specyfikacji HTML.
@Silent81: Ale w sumie po co chcesz dodawać spację na końcu `inline`
code?
Bo kiedy ja chcę napisać coś takiego, to robię "Witaj "
, i wtedy widać spację na końcu.
@Adam Boduch: Czyli rozumiem, że gdyby ktoś chciał osiągnąć opisywany efekt to musiałby zrobić takie coś jak poniżej?
`Lorem ` ipsum
Lorem
ipsum
Możemy zastosować rozwiązanie zaproponowane przez @Silv
Silv napisał(a):
Dodanie deklaracji CSS
white-space: pre-wrap
do elementu-rodzica tego tekstu wydaje się rozwiązywać problem. Nie wiem jednak, czy czegoś innego to nie zepsuje.
Również nie wiem czy nie ma jakichś "skutków" ubocznych ;)
MDN tak pisze o wartości pre-wrap
:
pre-wrap
Sequences of white space are preserved. Lines are broken at newline characters, at
<br>
, and as necessary to fill line boxes.~ https://developer.mozilla.org/en-US/docs/Web/CSS/white-space
Można porównać to z opisem wartości normal
(wartość początkowa):
normal
Sequences of white space are collapsed. Newline characters in the source are handled the same as other white space. Lines are broken as necessary to fill line boxes.
~ https://developer.mozilla.org/en-US/docs/Web/CSS/white-space
Widzę wyraźnie jedną różnicę, dotyczącą ciągów biały znaków: w przypadku normal
są one zwijane, a w przypadku pre-wrap
są one zachowywane. Nie wiem, czy jest jakaś różnica w przypadku znaków nowych linii, nie umiem porównać tych dwóch opisów.
Co do tej wyraźnej różnicy: nie sądzę, by ciągi białych znaków występowały często w tekstach na 4p. A nawet jeśli jakieś występowały, to użytkownicy pewnie zazwyczaj albo nie zwracali na nie uwagi, albo od razu poprawiali je (bo trudno powiedzieć, czy komuś może się przydać ciąg białych znaków w "zwykłym paragrafie").