attr_list
とのtables
拡張機能の間に互換性がないことがわかりました。<td>
はブロック レベルの要素であるため、既定でattr_list
は、インラインではなく次の行で属性リストを検索します。tables
拡張機能を使用して複数行のセルを作成する方法がないため、(現在ヘッダー要素にあるように) セル要素の例外には適切なケースがあると思います。
どのソリューションを実装するかを決定するには、新しいテーブル形式に切り替える手間と、開発版の python-markdown に切り替える手間を比較検討する必要があります。
ブロック レベルの解決策: ではなく使用grid_tables
(tables
推奨)
複数行のセルをサポートするサードパーティの Grid Tables 拡張機能を入手し、次のように属性リストを独自の行に配置します。
+-------+----------+-------------------------------+
| Title | blabla |
+=======+==========+===============================+
| foo | bar |
| | {: class="foo bar" title="Some title!" } |
+-------+------------------------------------------+
出力:
<table>
<thead>
<tr>
<th colspan="2" rowspan="1">
<p>Title</p>
</th>
<th colspan="1" rowspan="1">
<p>blabla</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="1" rowspan="1">
<p>foo
</p>
</td>
<td colspan="2" rowspan="1">
<p class="foo bar" title="Some title!">bar</p>
</td>
</tr>
</tbody>
</table>
インライン ソリューション:attr_list
と互換性があるように変更しますtables
attr_list
次の行を attr_list.py に追加することで、セル要素のインライン属性リストをサポートできます。
if not m and elem.tag == 'td':
m = re.search(self.BASE_RE, elem.text)
残念ながら、これらの拡張機能は両方とも、extra
python-markdown に組み込まれている の一部です。それらは内部モジュールに依存しているため、独自の拡張機能 (現在の pip パッケージと互換性があるもの) を作成することは現実的ではありません。このソリューションを今すぐ実装したい場合は、 my forkをインストールできます。
注:セルの内容と属性リストの間にスペースを残すことはできません(質問で行ったように)。