Sfinks, reStructuredText Pokaż / Ukryj fragmenty kodu

Dokumentowałem pakiet oprogramowania używając Sphinx i reStructuredText.

W moich dokumentach są długie fragmenty kodu. Chcę mieć możliwość ich ukrycia jako domyślnego, z małym przyciskiem "Pokaż/Ukryj", który je rozszerzy ( przykład).

Czy jest na to standardowy sposób?

Author: Tshepang, 2010-03-16

4 answers

Myślę, że najprostszym sposobem na to byłoby stworzenie niestandardowego motywu Sphinx, w którym mówisz niektórym elementom html, aby miały tę funkcjonalność. Trochę JQuery by się przydało.

Jeśli jednak chcesz mieć możliwość określenia tego w znacznikach reStructuredText, musisz albo

  • dostać takie coś zawarte w samym Sfinksie lub
  • zaimplementuj go w rozszerzeniu Sphinx / docutils...a następnie stworzyć motyw Sfinksa, który wiedział o tym funkcjonalność.

To byłoby trochę więcej pracy, ale dałoby większą elastyczność.

 5
Author: Kevin Horn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-16 12:37:18

Nie potrzebujesz niestandardowego motywu. Użyj wbudowanej dyrektywy container, która pozwala na dodanie niestandardowych klas css do bloków i nadpisanie motywu existing, aby dodać trochę javascript, aby dodać funkcję Pokaż/Ukryj.

To jest _templates/page.html:

{% extends "!page.html" %}

{% set css_files = css_files + ["_static/custom.css"] %}

{% 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 %}

To jest _static/custom.css:

.toggle .header {
    display: block;
    clear: both;
}

.toggle .header:after {
    content: " ▼";
}

.toggle .header.open:after {
    content: " ▲";
}

Teraz możesz pokazać / ukryć blok kodu.

.. container:: toggle

    .. container:: header

        **Show/Hide Code**

    .. code-block:: xml
       :linenos:

       from plone import api
       ...

Używam tutaj czegoś bardzo podobnego do ćwiczeń: https://training.plone.org/5/mastering_plone/about_mastering.html#exercises

 29
Author: pbauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-22 14:52:54

Motyw cloud sphinx ma własną dyrektywę html-toggle, która zapewnia przełączalne sekcje. Cytuję z ich strony :

Możesz oznaczyć sekcje za pomocą .. rst-class:: html-toggle, co spowoduje, że sekcja będzie domyślnie zwinięta pod html, z łączem przełączającym "Pokaż sekcję"po prawej stronie tytułu.

Tutaj {[4] } znajduje się link do ich testowej strony demonstracyjnej.

 5
Author: Phil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-12 16:49:18

Istnieje bardzo uproszczone rozszerzenie zapewniające dokładnie tę funkcję: https://github.com/scopatz/hiddencode

To działa raczej dobrze dla mnie.

 0
Author: Martin Quinson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-11 23:25:37