私はSphinxで拡張機能を実行しようとしています.拡張機能がセクションのタイトルを検出し、それらを折り畳みセクションに変換するという考えです.セクション。
test_fold
=============
.. fold::
* First Section
Hae duae provinciae bello quondam piratico catervis mixtae praedonum
a Servilio pro consule missae sub iugum factae sunt vectigales.
et hae quidem regiones velut in prominenti terrarum lingua positae
ob orbe eoo monte Amano disparantur.
* Second Section
Itaque tum Scaevola cum in eam ipsam mentionem incidisset, exposuit
nobis sermonem Laeli de amicitia habitum ab illo secum et cum altero
genero, C. Fannio Marci filio, paucis diebus post mortem Africani.
Eius disputationis sententias memoriae mandavi, quas hoc libro
exposui arbitratu meo; quasi enim ipsos induxi loquentes, ne
'inquam' et 'inquit' saepius interponeretur, atque ut tamquam
a praesentibus coram haberi sermo videretur.
* Third Section
Et interdum acciderat, ut siquid in penetrali secreto nullo citerioris
vitae ministro praesente paterfamilias uxori susurrasset in aurem,
velut Amphiarao referente aut Marcio, quondam vatibus inclitis,
postridie disceret imperator. ideoque etiam parietes arcanorum
soli conscii timebantur.
私はこのような拡張機能を書き始めました:
from docutils.nodes import raw
from docutils.parsers.rst import Directive
FOLD = "*"
foldSize = len(FOLD)
def removeSpace(_str):
if _str[0]==" ":
return removeSpace(_str[1:])
else:
return _str
class FoldDirective(Directive):
# this enables content in the directive
has_content = True
def run(self):
titles = []
mains = []
newMain = ""
#loop
for indexInt in xrange(len(self.content)):
#get
string = self.content[indexInt]
if indexInt>0:
previousString = self.content[indexInt-1]
else:
previousString = ""
#Check
if len(string)>0:
if string[0] == FOLD:
titles.append(string[foldSize:])
if indexInt>0:
mains.append(newMain)
newMain = ""
elif previousString[0] == FOLD:
newMain = string
else:
newMain += string
#append the last
mains.append(newMain)
#return
return [raw('',"<table><tr>",format='html')]+map(
lambda title,main:
raw('',"<td><button/></td><td><div>"+str(title)+"</div><td> <tr><td></td><td><div>"+str(main)+"</div></td></tr>",format='html'),
titles,mains
)+[raw('',"</tr></table>",format='html')]
def setup(app):
app.add_directive('fold', FoldDirective)
しかし、ここでの問題: - クリックするとメインが消える onClick 関数でボタンをバインドする方法がわかりません。- メインは未加工の html にドロップされるだけですが、これは最適ではありません。サブ ディレクティブも含まれている場合、それらは処理されないためです。- sphinx のドキュメントは、選択しなければならない場合、理解するのが非常に難しいため、その場合はノードのいくつかの呼び出し.General インスタンスですが、正確にはわかりません。
ありがとう