0
0

reStructuredTextでネストされた箇条書きを書く

Last updated at Posted at 2024-07-23

環境

  • Python 3.12.1
    • sphinx 7.4.7
    • pydata-sphinx-theme 0.15.4

はじめに

MarkDownでは、ネストされた箇条書きは以下のように書けます。

* A
* B
* C
    * X
    * Y
* D

下図は、Visual Studio CodeのMarkdown拡張で表示した結果です。

image.png

reStructuredTextの場合

MarkDownと同じ内容の場合

上記のテキストをreStructuredTextとしてsphinxでビルドしたら、以下のHTMLが出力されました。

image.png

ネストされていますが、HTMLのdtタグによってCだけ太字になっていました。

<ul class="simple">
<li><p>A</p></li>
<li><p>B</p></li>
<li><dl class="simple">
<dt>C</dt><dd><ul>
<li><p>X</p></li>
<li><p>Y</p></li>
</ul>
</dd>
</dl>
</li>
<li><p>D</p></li>
</ul>

reStructuredTextのDefinition listとしてみなされているようです。

ネストされている部分に空行を入れる

公式ドキュメントには、

ネストされたリストも使用できますが、親のリストとは空白行で区切る必要があります:

とあるので、空行を入れてみました。

* A
* B
* C

    * X
    * Y

* D

X,Yはネストされずに、引用された形式になりました。

image.png

<ul>
<li><p>A</p></li>
<li><p>B</p></li>
<li><p>C</p>
<blockquote>
<div><ul class="simple">
<li><p>X</p></li>
<li><p>Y</p></li>
</ul>
</div></blockquote>
</li>
<li><p>D</p></li>
</ul>

Sphinxのドキュメントには、

前の段落より1段インデントが深い段落は引用になります。:

と書いてあったので、インデントが「引用」とみなされたようです。

インデントを空白4文字から空白2文字にする

空白を入れずに、インデントを空白4文字から空白2文字にしました。

* A
* B
* C
  * X
  * Y
* D

XYは箇条書きとみなされませんでした。

image.png

<ul class="simple">
<li><p>A</p></li>
<li><p>B</p></li>
<li><p>C
* X
* Y</p></li>
<li><p>D</p></li>
</ul>

空行を入れて、インデントを空白4文字から空白2文字にする

* A
* B
* C

  * X
  * Y

* D

期待通り、XYはネストされました。

image.png

<ul class="simple">
<li><p>A</p></li>
<li><p>B</p></li>
<li><p>C</p>
<ul>
<li><p>X</p></li>
<li><p>Y</p></li>
</ul>
</li>
<li><p>D</p></li>
</ul>

まとめ

reStructuredTextでネストされた箇条書きを書く場合は、ネストされている箇条書きの上下に空行を入れて、インデントは空白2文字にします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0