Jak wciąć kilka linii w znacznikach Markdown?

360

Chcę napisać kilka wierszy tekstu. Powinny być sformatowane normalnie, z wyjątkiem tego, że każda linia powinna zaczynać się od szóstej kolumny. Tzn. Nie chcę, aby reguła formatowania bloku kodu sprawiała, że ​​ten fragment tekstu wygląda jak kod, ponieważ użyję innego formatowania, jak pogrubiona twarz itp. Jak to zrobić w Markdown?

Meng Lu
źródło
12
Szkoda, że ​​Markdown tego nie obsługuje. Jest to podstawowa cecha, której brakuje.
Josh Noe,
5
co : ?
Frode Akselsen
4
Użycie: do list definicji nie jest uniwersalne w implementacjach Markdown, ale jeśli twój wariant Markdown to obsługuje, działa to doskonale. Powinieneś zrobić z tego prawdziwą odpowiedź.
Alex Dupuy

Odpowiedzi:

383

Nie można tego zrobić w natywnych funkcjach markdown. Jednak przecena pozwala na wbudowany HTML, więc pisanie

      This will appear with six space characters in front of it

będzie produkować:

      Pojawi się przed nim sześć znaków spacji

Jeśli masz kontrolę nad CSS na stronie, możesz także użyć tagu i nadać mu styl, wbudowany lub z regułami CSS.

Tak czy inaczej, Markdown nie jest narzędziem do układania, ma uprościć proces pisania w Internecie, więc jeśli zauważysz, że rozszerzasz jego zestaw funkcji, aby zrobić to, czego potrzebujesz, możesz sprawdzić, czy „ ponownie używam odpowiedniego narzędzia tutaj. Sprawdź dokumenty Grubera:

http://daringfireball.net/projects/markdown/syntax#html

alegscogs
źródło
12
Możliwe jest wstawienie  (Unicode: \ 2002) do pliku Markdown i nie pojawią się one jak  w źródle - tylko podczas renderowania pliku. Po prostu ćwicz klawisz skrótu w swoim systemie operacyjnym, aby wstawić ten znak.
vaughan
1
Cytaty blokowe to dobry sposób na zrobienie tego (patrz odpowiedź @ ChrisV)
drevicko,
Co jeśli chcę użyć wcięcia do wyrównania tekstu. Na przykład chcę, aby drugie słowo w dwóch wierszach zaczynało się w tym samym miejscu (tak jak koderzy lubią to z operatorem przypisania =).
Royi,
3
 jest po prostu świetny do prostego i prostego wcięcia. Bez zmian stylu / czcionki, tylko wcięcie 👍
Green
5
Linie owinięte długim tekstem nie są wcięte, co może nie być potrzebne w układzie. Zmień rozmiar renderowanego widoku do przetestowania. Ponadto  jest bliżej karty.
dimmech
76

Jednym ze sposobów na to jest użycie punktorów, co pozwala określić wiele poziomów wcięcia. Punktory są wstawiane za pomocą wielokrotności dwóch spacji, gwiazdy, innej spacji Np .:

this is a normal line of text
  * this is the first level of bullet points, made up of <space><space>*<space>
    * this is more indented, composed of <space><space><space><space>*<space>

Ta metoda ma tę wielką zaletę, że ma sens również podczas przeglądania surowego tekstu.

Jeśli zależy ci na tym, aby nie widzieć samych punktów , powinieneś (w zależności od tego, gdzie używasz przecenienia), aby móc dodać li {list-style-type: none;}do css dla całego obszaru oznaczania.

SColvin
źródło
5
Fajna sztuczka, ale chcę wyłączyć widoczne kule tylko dla części Markdown (i wynikowego HTML), ale nie dla całości. Czy jest na to czysty sposób?
Meng Lu
@MengLu Mam takie same wymagania. Czy w ogóle to rozgryzłeś?
lifebalance
1
Znacznie lepsza pod względem strukturalnym niż zaakceptowana odpowiedź
irowe
Pamiętaj, że wyprzedaż może akceptować HTML - jest to część specyfikacji. W przypadku konkretnej listy nic nie stoi na przeszkodzie, abyś używał HTML do rozwiązania tego problemu. Pamiętaj tylko, że możesz mieć HTML w Markdown, ale nie Markdown w swoich fragmentach HTML. <ul> <li style = "list-style-type: none;"> Twoja wcięta treść, która musi być w całości HTML </li> </ul>
Hamish Willee,
2
Wydaje mi się to znacznie lepsze niż zaakceptowana odpowiedź. Daje to bardziej szczegółową kontrolę nad wciętym tekstem, nie wspominając o tym, że jest bardziej czytelny i łatwiejszy w utrzymaniu
Arepo
36

To jest stary wątek , ale pomyślałbym, że cytaty markdown ('>') byłyby do tego najlepsze:

ChrisV
źródło
21
Jest to dobre rozwiązanie, jeśli nie musisz wciskać określonej ilości i nie zależy ci na uzyskaniu innego koloru tła lub innych stylów, które mogą towarzyszyć cytatom blokowym. Ostatecznie, cytaty blokowe mają semantyczny cel i są najlepsze, jeśli w rzeczywistości chcesz wyłożyć coś jako cytat.
alegscogs
20
Źle. Cytaty blokowe (>) służą do tworzenia cytatów, a nie zwykłych wcięć. To jest zupełnie inny styl.
Zielony
25

Sprawdź, czy to „>” pomaga:

Line 1
> line 2 
>> line 3
idnavid
źródło
taki jest słodki bilet w notatnikach jupyter przy użyciu znaczników lateksowych
vwvan
2
Patrz komentarz powyżej: „Źle. Cytaty blokowe (>) służą do tworzenia cudzysłowów, a nie zwykłych wcięć. To jest zupełnie inny styl”
Użytkownik, który nie jest użytkownikiem
22

zrób tab, następnie znak +, następnie spacja, a następnie treść

Więc

* level one + level two tabbed

Pavan Katepalli
źródło
github / bitbucket markdown obsługuje podobną zasadę wcięcia, bez +:[tab][space]your-text-goes-here
roblogic
13

Co z umieszczeniem określonej spacji na początku akapitu przy użyciu środowiska matematycznego, takiego jak:

$\qquad$ My line of text ...

To działa dla mnie i mam nadzieję, że dla ciebie też.

Marcos Lourenço
źródło
10

Jeśli naprawdę musisz używać kart i nie przeszkadza ci szary kolor tła i wypełnienie, <pre>tagi mogą działać (jeśli są obsługiwane):

<pre>
This        That        And             This
That        This        And             That    
</pre>
This That And This
That This And That    
kowal
źródło
7

Proszę używać twardych (niełamliwych) spacji

Po co używać innego języka znaczników? (Zgadzam się z @cz powyżej).
Jednym z celów Markdown jest sprawienie, by dokumenty były czytelne nawet w zwykłym edytorze tekstu.

Ten sam wynik dwóch podejść

Kod

Sample code
&nbsp;&nbsp;&nbsp;&nbsp;5th position in an really ugly code  
    5th position in a clear an readable code  
    Again using non-breaking spaces :)

Wynik

Przykładowy kod
    5. pozycja w naprawdę brzydkim kodzie
    5. pozycja w kodzie czytelnym i czytelnym
    Znowu przy użyciu spacji niełamliwych :)

Wizualna reprezentacja niełamliwej spacji (lub twardej spacji) jest zwykle normalną spacją „”, jednak jej reprezentacja Unicode to U + 00A0.
Reprezentacja Unicode zwykłej przestrzeni to U + 0020 (32 w tabeli ASCII).
Dlatego procesory tekstu mogą zachowywać się inaczej, podczas gdy wizualna reprezentacja pozostaje taka sama.

Wstaw twardą przestrzeń

| OS        | Input method                      |
|===========| ==================================|
| macOS     | OPTION+SPACE (ALT+SPACE)          |
| Linux     | Compose Space Space or AltGr+Space|
| Windows   | Alt+0+1+6+0                       |

Some text editor use Ctrl+Shift+Space.

Kwestia

Niektóre edytory tekstu mogą konwertować twarde spacje na wspólne spacje podczas operacji kopiowania i wklejania, więc bądź ostrożny.

ePi272314
źródło
OPTION + SPACE aktywowane wyszukiwanie reflektorów
wander95 18.01.19
Nie może być, tylko jeśli zmieniłeś domyślne skróty. Pole wyszukiwania Spotlight uruchamia się za pomocą COMMAND-SPACE (klawisz COMMAND jest analogiczny do klawisza Windows).
Nieprzerwana
Na komputerze Mac mam skrót do Option + Space, ale Shift + Option + Space działa dobrze.
Dag Høidahl,
Zawijanie linii z długimi zdaniami wygląda brzydko.
Mike Kormendy,
4

Sprawdź, czy możesz używać HTML ze swoją przeceną. Może to Ci odpowiada:

  • Wpis listy jeden <br/>
    Wcięty wiersz <br/>
    <br/>
    I jeszcze więcej ..
  • Drugi wpis
    • Subentry <br/>
      Witaj!
webwurst
źródło
6
Aby to zrobić, wystarczy zakończyć linię dwoma spacjami.
Pietro
4

W przypadku cytowanych / wciętych akapitów ten hack może działać (w zależności od silnika renderowania):

| | | |
|-|-|-|
|  | _"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."_ | |
|

co jest renderowane jako:

wprowadź opis zdjęcia tutaj

geotheory
źródło
2

Użyj bezpośrednio miejsca bez przerw  (nie takie samo jak !).

(Możesz wstawić HTML lub ezoteryczny kod Markdown, ale mogę wymyślić lepsze powody, by zerwać zgodność ze standardowym markdown).

cz
źródło
2

Aby odpowiedzieć na pytania MengLu i @ lifebalance w odpowiedzi na odpowiedź SColvina (którą zdecydowanie wolę od zaakceptowanej odpowiedzi dla formantu, który zapewnia), wydaje się, że możesz po prostu ustawić element nadrzędny list, ustawiając wyświetlanie na none, dodając element otaczający, jeśli to konieczne. Więc jeśli przypuszczamy, że robimy to dla spisu treści, możemy rozszerzyć odpowiedź SColvina:

HTML

<nav class="table-of-contents">
  this is a normal line of text
  * this is the first level of bullet points, made up of <space><space>*<space>
    * this is more indented, composed of <space><space><space><space>*<space>
</nav>

CSS

.table-of-contents ul {
  list-style-type: none;
}
Arepo
źródło
2

Jak wskazał @AlexDupuy w komentarzach, można do tego użyć list definicji.

Nie jest to obsługiwane przez wszystkie procesory przeceny, ale jest powszechnie dostępne: Przewodnik po przecinkach - listy definicji

Term 1
: definition 1
: definition 2

Term 2
: definition 1
: definition 2

Renderuje jako (html):

<dl>
    <dt>Term 1</dt>
    <dd>definition 1</dd>
    <dd>definition 2</dd>
    <dt>Term 2</dt>
    <dd>definition 1</dd>
    <dd>definition 2</dd>
</dl>

Zazwyczaj DTjest renderowany w formacie nagłówkowym i każdy z nichDD jest renderowany jako wcięty tekst poniżej.

Jeśli nie chcesz nagłówka / terminu, po prostu użyj niełamliwej spacji zamiast terminu definicji:

&nbsp;
: This is the text that I want indented.  All text on the same line as the preceding colon will be included in this definition.
: If you include a second definition you'll get a new line; potentially separated by a space. <br />Some inline HTML may be supported within this too, allowing you to create new lines without spaces.
: Support for other markdown syntax varies; e.g. we can add a bullet list, but each one's wrapped in a separate definition term, so the spacing may be out.
: - item 1
: - item 2
: - item 3

Możesz to zobaczyć w akcji, kopiując i wklejając powyższe przykłady na tę stronę: Stack Edit Markdown Editor

Zrzut ekranu renderowania DL w edytorze stosu

JohnLBevan
źródło
1
& Nbsp; działało idealnie. Dziękuję
Kevin Mason
0

Niektóre implementacje Markdown wydają się wykorzystywać ~postać do wcięcia.

npclaudiu
źródło
0

Inną alternatywą jest użycie edytora przecen, takiego jak StackEdit . Konwertuje HTML (lub tekst) na Markdown w edytorze WYSIWYG. Możesz tworzyć wcięcia, tytuły, listy w edytorze, a zobaczysz odpowiedni tekst w formacie przeceny. Następnie możesz zapisać, opublikować, udostępnić lub pobrać plik. Możesz uzyskać do niego dostęp na swojej stronie internetowej - nie wymaga pobierania!

lizasperling
źródło
0

Ok, z odrobiną HTML w twoim kodzie R, zrobiłem następujący kod, aby wygenerować czysty tekst w R Markdown. Te <h3 style="text-indent: 15em;">wcięcia tekstu 15 spacjami. W przypadku pierwotnego pytania zmień 15 na 6.

## Option: Du Pont Ratio Concept - (ROE Decomposition)
### (Closed Quotes/Total Premium) = (Closed Quotes/Quotes Issued) X <br>
<h3 style="text-indent: 15em;">
 (Quotes Issued/Renewal Premium) X <br></h3>
<h3 style="text-indent: 15em;">
 (Renewal Premium/Total Premium)</h3>

Tak więc wynikowy kod podaje mój pożądany format wyjściowy. Korzystam z zakładek do dokumentu Markdown i chciałem wyrównać tekst (), który działał.

r wyjście

Bryan Butler
źródło
0

Dla kompletności, głębsze wypunktowane listy:

Nested deeper levels: ---- leave here an empty row * first level A item - no space in front the bullet character * second level Aa item - 1 space is enough * third level Aaa item - 5 spaces min * second level Ab item - 4 spaces possible too * first level B item

Zagnieżdżone głębsze poziomy:

  • pierwszy poziom Przedmiot A - bez spacji przed postacią pocisku
    • drugi poziom Przedmiot Aa - wystarczy 1 miejsce
      • przedmiot Aaa trzeciego poziomu - 5 pól min
    • element Ab drugiego poziomu - możliwe są również 4 pola
  • pozycja pierwszego poziomu B.

    Nested deeper levels:
     ...Skip a line and indent eight spaces. (as said in the editor-help, just on this page)
    * first level A item - no space in front the bullet character
     * second level Aa item - 1 space is enough
         * third level Aaa item - 5 spaces min
        * second level Ab item - 4 spaces possible too
    * first level B item
    
            And there
            could be even more
            such octets of spaces.
    
Franta
źródło
0

Jeśli pracujesz z punktorami, spróbuj tego:

<ul>
  <li>Coffee</li>
  <li>Tea
    <ul>
      <li>Black tea</li>
      <li>Green tea</li>
    </ul>
  </li>
  <li>Milk</li>
</ul>

Jest to metoda, której używam podczas stylowania przeceny.


źródło
0

Na gitlab.com pojedyncza spacja (U + 2002), a następnie pojedyncza spacja (U + 2003) działa przyzwoicie.

Przypuszczalnie wystarczające byłyby również inne powtórzenia lub kombinacje niezupełnie rozliczonych znaków spacji.

Jan Kyu Peblik
źródło
0

Jednym z problemów z rozpoczęciem linii z nieprzerwanymi spacjami jest to, że jeśli twoja linia jest wystarczająco długa, aby się zawinąć, to kiedy wyleje się na drugą linię, pierwszy znak linii przelewu z początkiem mocno w lewo zamiast zaczynać pod pierwszym znakiem linii nad nim.

Jeśli twój system pozwala ci łączyć HTML ze swoją przeceną, cheep i wesoły sposób na wcięcie wygląda następująco:

<ul>
My indented text goes here, and it can be long and wrap if you like.
And you can have multiple lines if you want.
</ul>

Semantycznie w twoim HTML jest to nonsens (sekcja UL bez żadnych elementów LI), ale wszystkie przeglądarki, których używałem, z radością wcinają to, co jest między tymi tagami.

Jinlye
źródło