Можно ли заменить несколько абзацев в ячейки таблицы reStructuredText? - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть таблица в формате reST, в которой некоторые ячейки содержат длинные блоки текста (например, несколько абзацев или маркированные списки), и они периодически обновляются, например:

+-------+-----------------------+
|Cat    | Chunk that is updated |
|       | periodically.         |
|       |                       |
|       | Line #2, #3, etc      |
+-------+-----------------------+
|Dog    | Substitution means    |
|       | table boilplat static |
|       |                       |
|       | Line #2, #3, etc      |
+-------+-----------------------+

Чтобы избежать обслуживания шаблонной таблицыпри каждом обновлении я сначала пробовал подстановку , но это работает только для встроенных директив (например, изображения) и однострочного текста ... не для нескольких абзацев:

.. |cellb1| replace:: Chunk that is updated periodically via copy-and-paste

.. |cellb3| replace:: Substitution means table boilerplate can remain static 

+-------+-----------------------+
|Cat    | |cellb1|              |
+-------+-----------------------+
|Dog    | |cellb3|              |
+-------+-----------------------+

Второй подходявляется директивой .. include :: .Это хорошо работает для нескольких абзацев, но ценой сложности (контент теперь перемещается по нескольким внешним текстовым файлам).

+-------+-----------------------+
|Cat    | .. include:: xr1.txt  |
+-------+-----------------------+
|Dog    | .. include:: xr3.txt  |
+-------+-----------------------+

list-table не помогает и не помогает csv-table (поскольку содержимое включает запятую и кавычки).

.. csv-table:: Test csv-table with multi-paragraph
   :header: "a", "b", "c"

    Cat,"Chunk that is updated periodically via copy-and-paste.

    Line #2, #3, etc", "Kitten"
    Dog,"Substitution means table boilerplate can remain static.

    Line #2, #3, etc", "Puppy"

Примечание: побочная проблема возникает с csv-table, отступ и количество столбцов влияютсинтаксический анализатор Sphinx, поэтому содержимое форматируется в виде цитаты или списка определений. [ EDIT : см. ответ ниже - из-за несовместимого отступа строки :header:]

Есть лилучше?

1 Ответ

0 голосов
/ 19 февраля 2019

Следующий пример работает для меня.Обратите внимание, что пробел супер хитрый.Я всегда использую 4 пробела для отступа, включая такие параметры, как :header:, потому что это облегчает обнаружение проблем и гарантирует, что пробел правильно интерпретируется Sphinx.В вашем примере все, что вам нужно было сделать, это добавить еще один пробел перед :header:, чтобы в общей сложности 4 пробела выровняли все.Я также добавил пример перечисляемого списка.

.. csv-table:: Test csv-table with multi-paragraph
    :header: "a", "b", "c"

    Cat,"Chunk that is updated periodically via copy-and-paste.

    Line #2, #3, etc", "Kitten"
    Dog,"Substitution means table boilerplate can remain static.

    Line #2, #3, etc", "Puppy"
    Walrus,"#.  List Item 1
    #.  List Item 2
    #.  List Item 3", "Pup"
...