web-dev-qa-db-fra.com

Liste de numérotation du carnet de notes Jupyter

J'essaie de créer un tutoriel pour les étudiants. Je veux numéroter les questions que je leur pose, mais entre les deux, j'aimerais ajouter des informations pour introduire les questions. Comment puis-je créer une liste numérotée automatiquement qui ne réinitialise pas la numérotation chaque fois que je mets du texte. Par exemple:

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

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

Donne la sortie:

Ceci est quelques informations.

  1. C'est la première question.

Ceci est plus d'informations.

  1. C'est la deuxième question.
14
Chiel

Ce n'est pas directement possible avec Markdown standard, bien que vous puissiez le "simuler" (voir ci-dessous). En fait, l'état règles :

Il est important de noter que les nombres réels que vous utilisez pour marquer la liste n'ont aucun effet sur la sortie HTML produite par Markdown. ... Le fait est que, si vous le souhaitez, vous pouvez utiliser des nombres ordinaux dans vos listes Markdown ordonnées, de sorte que les nombres dans votre source correspondent aux nombres dans votre code HTML publié. Mais si vous voulez être paresseux, vous n’avez pas à le faire.

Si vous utilisez la numérotation de liste paresseuse, cependant, vous devez toujours commencer la liste avec le numéro 1. À un moment donné dans le futur, Markdown peut prendre en charge le démarrage de listes ordonnées à un nombre arbitraire.

Cet avenir n'est jamais arrivé, officiellement. Cependant, quelques implémentations différentes de Markdown peuvent offrir une telle fonctionnalité comme option non par défaut. Malheureusement, c'est rare (et je ne me souviens pas de quelles implémentations il s'agit).

Quoi qu'il en soit, vous aurez un autre problème. Il n'est pas clair pour moi comment votre sortie souhaitée serait du HTML valide. Essentiellement, vous demandez des paragraphes en dehors de vos éléments de liste qui sont imbriqués dans votre liste. Ce serait du HTML non valide:

<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>

Cela dit, il s'affichera (presque) comme vous le souhaitez (les éléments non répertoriés sont également en retrait).

    Ceci est quelques informations.

  1. C'est la première question.

    Ceci est plus d'informations.

  2. C'est la deuxième question.

Je ne le recommanderais pas, mais vous pouvez l'utiliser comme HTML brut. Vous pourriez peut-être trouver une autre méthode ou un autre format pour représenter vos données.

J'ai envisagé de suggérer d'utiliser une liste ordonnée imbriquée dans une liste de définitions si votre implémentation Markdown la prend en charge (bien que non standard, cette fonctionnalité est très courante et cohérente entre les implémentations, bien qu'elle ne soit pas activée par défaut). Cela vous donne une imbrication correcte, mais le même problème si les numéros non consécutifs persistent. Cependant, si vous ajoutez manuellement les nombres et les échappez afin qu'ils ne soient pas interprétés comme des éléments de liste, cela fonctionne comme ceci:

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

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

Cela se traduit par:

<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>

Et s'affiche comme:

Ceci est quelques informations.
1. C'est la première question.
Ceci est plus d'informations.
2. Il s'agit de la deuxième question.

Fait intéressant, comme SO supprime l'indentation (généralement par défaut) sur les listes de définitions, dans mes tentatives pour la simuler dans la démo ci-dessus, j'ai réalisé qu'il existe une solution plus simple qui devrait fonctionner dans toutes les implémentations Markdown. Utilisez simplement des paragraphes, des nombres manuels et des espaces insécables pour forcer l'indentation:

This is some info.

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

This is more info.

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

Notez que les espaces insécables empêchent Markdown de voir ces lignes comme des éléments de liste éliminant la nécessité de les échapper. Ce qui précède se présente comme suit:

<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>

Et s'affiche comme:

Ceci est quelques informations.

1. C'est la première question.

Ceci est plus d'informations.

2. Il s'agit de la deuxième question.

16
Waylan

Pas identique à celui souhaité, mais jupyter a cessé de renuméroter lorsque j'ai écrit 1) 2) 3) etc.

Le ')' semble désactiver la renumérotation effectuée par le démarque de Jupyter. Au bail pour jupyter version 5.0.0 exécutant python 3.5.2.

3
Jeff Winchell