2016-03-04 10 views
8

Próbuję utworzyć samouczek dla studentów. Chcę numerować pytania, które im zadałem, ale w międzyczasie chciałbym dodać informacje do wprowadzenia pytań. Jak mogę utworzyć listę automatycznie numerowaną, która nie resetuje numeracji za każdym razem, gdy wstawiam tekst. Na przykład:Numeracja na liście Markdown notebooka Jupyter

This is some info. 
1. This is question one. 

This is more info. 
2. This is question two. 

Daje wyjście:

to jakiś informacji.

  1. To jest pytanie pierwsze.

To więcej informacji.

  1. To jest pytanie drugie.

Odpowiedz

5

Nie jest to możliwe bezpośrednio przy użyciu standardowego oznaczenia, chociaż można je "sfałszować" (patrz poniżej). W rzeczywistości stan rules stan:

Ważne jest, aby pamiętać, że rzeczywiste numery używane do oznaczania listy nie mają wpływu na wyjście HTML Markdown produkuje. ... Chodzi o to, że jeśli chcesz, możesz użyć liczb porządkowych na uporządkowanych listach Markdown, aby liczby w twoim źródle odpowiadały liczbom w opublikowanym kodzie HTML. Ale jeśli chcesz być leniwy, nie musisz.

Jeśli jednak używasz leniwej numeracji list, powinieneś nadal otwierać listę z numerem 1. W pewnym momencie w przyszłości Markdown może wspierać uruchamianie uporządkowanych list pod dowolnym numerem.

Ta przyszłość nigdy nie dotarła, oficjalnie. Jednak kilka różnych implementacji Markdown może oferować taką funkcję jako opcję inną niż domyślna. Niestety, jest to rzadkie (i nie pamiętam, które to są implementacje).

Bez względu na to, będziesz mieć inny problem. Nie jest dla mnie jasne, w jaki sposób pożądany wynik byłby prawidłowy HTML. Zasadniczo pytasz o akapity spoza listy przedmiotów, które są zagnieżdżone na twojej liście. To byłoby nieważne HTML:

<ol> 
    <p>This is some info.</p> 
    <li>This is question one.</li> 
    <p>This is more info.</p> 
    <li>This is question two.</li> 
</ol> 

To powiedziawszy, będzie (prawie) wyświetlane zgodnie z Twoimi oczekiwaniami (pozycje nie będące listami są również wcięte).

    To jest trochę informacji.

  1. To jest pytanie pierwsze.
  2. To więcej informacji.

  3. To jest pytanie drugie.

Nie polecam go, ale można go użyć jako surowego HTML. Być może mógłbyś znaleźć inną metodę lub format do reprezentowania twoich danych.

Rozważałem sugerowanie użycia uporządkowanej listy zagnieżdżonej na liście definicji, jeśli obsługuje ją implementacja Markdown (w przeciwieństwie do niestandardowej funkcji ta jest bardzo powszechna i spójna we wszystkich implementacjach, chociaż domyślnie może nie być włączona).Zapewnia to właściwe zagnieżdżanie, ale ten sam problem występuje, jeśli nieujemne liczby nie ustępują. Jednakże, jeśli ręcznie dodawać numery i ucieczka je tak, że nie są one interpretowane jako elementów listy, to działa tak:

This is some info. 
: 1\. This is question one. 

This is more info. 
: 2\. This is question two. 

To świadczy jak:

<dl> 
<dt>This is some info.</dt> 
<dd>1. This is question one.</dd> 
<dt>This is more info.</dt> 
<dd>2. This is question two.</dd> 
</dl> 

i wyświetla jak:

To jest trochę informacji.
    1. To jest pytanie pierwsze.
To więcej informacji.
    2. To jest pytanie drugie.

Co ciekawe, jak to zwykle usuwa (domyślnie) wcięcia na listach definicji, w moich próbach udawać w demo powyżej, zdałem sobie sprawę, że jest to prostsze rozwiązanie, które powinny działać we wszystkich implementacjach Markdown. Wystarczy użyć akapitów, numerów ręcznego i non-breaking spacji aby zmusić wcięcia:

This is some info. 

&nbsp; &nbsp; 1. This is question one. 

This is more info. 

&nbsp; &nbsp; 2. This is question two. 

uwaga, że ​​non-breaking przestrzenie powodują Markdown aby nie widzieć, jak te linie elementów listy negując potrzebę ich ucieczkę. Powyższe świadczy jak:

<p>This is some info.</p> 
<p>&nbsp; &nbsp; 1. This is question one.</p> 
<p>This is more info.</p> 
<p>&nbsp; &nbsp; 2. This is question two.</p> 

i wyświetla jako:

Jest kilka informacji.

    1. To jest pytanie pierwsze.

To więcej informacji.

    2. To jest pytanie drugie.

1

Nie identyczny życzenia, ale jupyter zatrzymał numeracji kiedy pisałem 1) 2) 3) itp

')' wydaje się wyłączenie numeracji wykonaną przez obniżki Jupyter użytkownika. W dzierżawie dla jupytera w wersji 5.0.0 z pytonem 3.5.2.

+0

To również działa dla mnie, jednak między poszczególnymi elementami listy musi być pusta linia, w przeciwnym razie wszystkie ponumerowane punkty są wyświetlane w tym samym wierszu. Ta sama metoda używająca kropki '.' nadal nie działa, nawet jeśli używa się pustych linii między elementami listy. –