sphinx ، show refrecturedtext show/hide code snippets
-
20-09-2019 - |
سؤال
لقد تم توثيق حزمة برامج باستخدام أبو الهول و إعادة هيكلة النص.
ضمن مستنداتي ، هناك بعض قصاصات التعليمات البرمجية الطويلة. أريد أن أكون قادرًا على إخفاءهم كإعداد افتراضي ، مع زر "عرض/إخفاء" صغير من شأنه أن يوسعها (مثال).
هل هناك طريقة قياسية للقيام بذلك؟
المحلول
أعتقد أن أسهل طريقة للقيام بذلك هي إنشاء سمة مخصصة لـ sphinx حيث تخبر عناصر HTML معينة أن يكون لها هذه الوظيفة. القليل من jQuery سوف يقطع شوطا طويلا هنا.
إذا كنت تريد ، مع ذلك ، أن تكون قادرًا على تحديد ذلك في ترميز النص الخاص بك ، ستحتاج إلى أي منهما
- احصل على مثل هذا الشيء المدرج في أبو الهول نفسه أو
- قم بتنفيذها في امتداد sphinx/docutils ... ثم قم بإنشاء سمة sphinx التي كانت على علم بهذه الوظيفة.
سيكون هذا عمل أكثر قليلاً ، ولكنه سيمنحك المزيد من المرونة.
نصائح أخرى
لا تحتاج إلى موضوع مخصص. استخدم التوجيه المدمج container
يتيح لك ذلك إضافة فئات CSS مخصصة لحجبات وتجاوز موضوع الوجود لإضافة بعض JavaScript لإضافة العرض/الاختباء.
هذا هو _templates/page.html
:
{% extends "!page.html" %}
{% block footer %}
<script type="text/javascript">
$(document).ready(function() {
$(".toggle > *").hide();
$(".toggle .header").show();
$(".toggle .header").click(function() {
$(this).parent().children().not(".header").toggle(400);
$(this).parent().children(".header").toggleClass("open");
})
});
</script>
{% endblock %}
هذا هو _static/custom.css
:
.toggle .header {
display: block;
clear: both;
}
.toggle .header:after {
content: " ▶";
}
.toggle .header.open:after {
content: " ▼";
}
يضاف هذا إلى conf.py
:
def setup(app):
app.add_stylesheet('custom.css')
الآن يمكنك إظهار/إخفاء كتلة من التعليمات البرمجية.
.. container:: toggle
.. container:: header
**Show/Hide Code**
.. code-block:: xml
:linenos:
from plone import api
...
أستخدم شيئًا مشابهًا جدًا للتمارين هنا: https://training.plone.org/5/mastering_plone/about_mastering.html#exercises
هناك امتداد مبسط للغاية يوفر تلك الميزة بالضبط: https://github.com/scopatz/hiddencode
إنه يعمل بشكل جيد بالنسبة لي.