Markdown: continua l'elenco numerato


475

Nel seguente codice di markdown voglio item 3iniziare con l'elenco numero 3. Ma a causa del blocco di codice tra markdown inizia questa voce di elenco come un nuovo elenco. C'è un modo per prevenire quel comportamento?

Uscita desiderata:

1. item 1
2. item 2

```
Code block
```

3. item 3

Produzione prodotta:

  1. articolo 1
  2. articolo 2

Code block

  1. punto 3

4
Ecco la soluzione corretta . I tripli backtick nella risposta di Macmade in realtà producono solo un <code>elemento HTML con newline al suo interno, che non è evidenziatore di sintassi e ha una riga vuota aggiuntiva sopra evidenziata visibilmente come codice.
Dan Dascalescu

1
Se sei davvero disperato, puoi cercare i codici dei caratteri HTML per i numeri che desideri utilizzare (e per ogni elemento successivo) ... come in &#50;&#57;. this is list item number 29. Tuttavia, potrebbe non funzionare in tutti i parser di markdown.
Roy Tinker,

Risposte:


622

Usa quattro spazi per rientrare il contenuto tra i punti elenco

1. item 1
2. item 2

    ```
    Code block
    ```
3. item 3

produce:

  1. articolo 1
  2. articolo 2

    Code block

  3. punto 3

5
Sì, il rientro chiarisce al parser che il blocco di codice appartiene alla voce di elenco 2. In caso contrario, è solo un paragrafo normale e terminerà l'elenco.
Macmade

42
Ma ... e se non volessi un rientro lì? Markdown non ha soluzione, per quanto ne so. Spesso è naturale avviare un elenco, quindi interrompere e fornire un testo che è un meta commento sull'elenco - cosa abbiamo appena fatto e cosa verrà dopo - senza che il testo sia, logicamente, parte dell'elenco - e quindi continua l'elenco. Markdown non vuole che lo facciamo. È una forma di pensiero che Markdown non vuole che le persone esprimano - che Markdown non sa come esprimere, che Markdown pensa che sia troppo ... gratuito. Gli strumenti dovrebbero seguire il pensiero. Sospiro. Potrei scrivere in HTML o creare PDF.
Marte

2
Non sembra funzionare affatto per me. Ho un semplice elenco numerato, rientrato e nuovo come mostrato sopra. Si riavvia ancora alle 1.
Ray,

10
Nei pochi editor Markdown che ho provato (Bitbucket, Tumblr), questo non funziona: esegue il rendering del codice inline anziché di un blocco di codice correttamente indentato.
thdoan

2
In IntelliJ fa la differenza quante righe vuote si trovano in fondo a ciascun blocco numerato. Se si lasciano 2 righe vuote, si riavvia la numerazione; lasciare solo uno e continua.
Rabarbaro,

36

Nota come nella soluzione di Macmade puoi vedere una riga di codice aggiuntiva sopra il "Blocco di codice".

Ecco due soluzioni migliori:

  1. Rientra il blocco di codice di altri 4 spazi (quindi di solito 8, in questo esempio di elenco nidificato, 12). Ciò inserirà il codice in un <pre>elemento. Su SO, puoi anche specificare l' evidenziazione della sintassi con un
    <!-- language: lang-js -->rientro di 4 spazi (+1 qui a causa dell'elenco nidificato).

    1. articolo 1
    2. articolo 2

      Code.block('JavaScript', maybe)?
    3. punto 3

  2. Oppure, basta inserire il blocco di codice all'interno di backtick e rientrare di 4 spazi (qui, 1 in più a causa dell'elenco nidificato). Otterrai un paragrafo di testo rientrato regolare, con un <code>elemento al suo interno. Questo non è possibile evidenziare la sintassi:

    1. articolo 1
    2. articolo 2

      Code block

    3. punto 3

Nota: è possibile fare clic su "modifica" su questa risposta per visualizzare il codice Markdown sottostante. Non è necessario salvare;)


27
Questa è una soluzione per questo particolare problema, ma non è una soluzione generale al problema di riavviare un elenco Markdown al numero successivo dopo un testo intermedio. Sembra che non ci sia modo di farlo, il che mi fa impazzire. Tutto il resto di Markdown è fantastico.
Marte

@Mars come puoi vedere dalla risposta di DavidT , la soluzione generale è di indentare il testo con un numero qualsiasi di spazi. Ad esempio, l'aggiunta di uno spazio anziché quattro ti consentirà di inserire qualsiasi testo intermedio senza dover creare un blocco di codice.
ClydeTheGhost il

36

Come estensione alle risposte esistenti. Per coloro che cercano di continuare un elenco numerato dopo qualcosa di diverso da un blocco di codice. Ad esempio un secondo paragrafo. Rientra il secondo paragrafo di almeno 1 spazio.

Markdown:

1. one
2. two

 three
3. four

Produzione:

  1. uno
  2. Due

    tre

  3. quattro

1
Dolce! Ho avuto una serie di blocchi di pseudo codice e equazioni di MathJax. Questo era esattamente ciò di cui avevo bisogno.
xtian il

Non funziona su GitHub Wiki. L'aggiunta di più spazi renderà almeno la numerazione dello stesso tipo dei numeri sopra. : rofl:
Chaim Eliyah,

1
@ChaimEliyah Ecco perché sono sicuro al 99% che il wiki non usa il markdown al gusto di GitHub (sono sicuro di aver incontrato questa curiosità in precedenza)
DavidT

Ciò si occuperà anche delle situazioni in cui è presente una voce di elenco contenente del testo, del codice e infine più testo prima della fine della voce di elenco.
Frotz,

14

Se usi tab per indentare il blocco di codice, questo modellerà l'intero blocco in una riga. Per evitare ciò, è necessario utilizzare l'elenco ordinato HTML.

  1. articolo 1
  2. articolo 2

Blocco di codice

<ol start="3">
  <li>item 3</li>
  <li>item 4</li>
</ol>

13

La soluzione di Macmade non funziona più per me sulla mia istanza Jekyll su Github Pages ma ho trovato questa soluzione su un problema per il repository github di kramdown. Per l'esempio di OP sarebbe simile al seguente:

1. item 1
2. item 2

```
Code block
```

{:start="3"}
3. item 3

Risolti i miei problemi comodamente.


3
Sfortunatamente, questo non funziona con i file Leggimi di GitHub. :(
Nostalg.io

7

Fonte;

<span>1.</span> item 1<br/>
<span>2.</span> item 2
```
Code block
```
<span>3.</span> item 3


Risultato;

1. elemento 1
2. elemento 2 Code block 3. elemento 3


4

Se non vuoi che le righe tra le voci dell'elenco vengano rientrate, come l'utente Mars menzionato nel suo commento, puoi usare pandocla example_listsfunzione. Dai loro documenti :

(@)  My first example will be numbered (1).
(@)  My second example will be numbered (2).

Explanation of examples.

(@)  My third example will be numbered (3).

SÌ! Questo ha funzionato alla grande. Molto bene.
javadba,

Questa è la soluzione più universale a questo problema. Non è necessario rientrare e funziona anche se ci sono titoli tra gli elementi dell'elenco.
Lillemets,

I (@)corrisponde a un elenco continua globale (quindi non ci può essere un solo utilizzo. pandoc'S startnumestensione è possibile avviare una lista ordinata con il numero che si desidera e funziona solo.
Abid H. Mujtaba

2

Metti i numeri dell'elenco tra parentesi anziché seguiti da un punto.

(1) articolo 1
(2) articolo 2 code block (3) articolo 3


5
Questo distrugge <ol>e <li>elems e invece li avvolge semplicemente nei <p>tag. Inoltre, ottieni letteralmente (1).
jmargolisvt,

2
Penso che fosse l'intento.
Gal

1

Ho risolto questo problema su Github che separa il blocco secondario rientrato con una nuova riga, ad esempio, scrivi l'elemento 1, quindi premi due volte Invio (come se fosse un nuovo paragrafo), rientri il blocco e scrivi quello che vuoi (un blocco di codice, testo, ecc.). Ulteriori informazioni sugli elenchi Markdown e le interruzioni di riga Markdown .

Esempio:

  1. articolo uno
  2. punto due

    this block acts as a new paragraph, above there is a blank line

  3. punto tre

    some other code

  4. punto quattro

0

Si noti che sono disponibili anche diverse estensioni che risolveranno questo comportamento per contesti specifici dell'uso di Markdown.

Ad esempio, l' estensione sane_lists di python-markdown (utilizzata ad esempio in mkdocs), riconoscerà i numeri utilizzati negli elenchi Markdown. Devi solo abilitare questa estensionearkdown.markdown(some_text, extensions=['sane_lists'])


0

Se si desidera che il testo sia allineato all'elemento dell'elenco precedente, ma evitare l'interruzione di riga "grande", utilizzare due spazi alla fine di un elemento dell'elenco e rientrare il testo con alcuni spazi.

Fonte: (i punti sono spazi ;-) ovviamente)

1.·item1··
····This is some text
2.item2

Risultato:

  1. item1
    Questo è un po 'di testo
  2. item2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.