• Resolved fabricedarr

    (@fabricedarr)


    I’m making quizzes with Learndash plugin for wordpress. Katex does a fine job but there are a few issues.
    When quizzes are set to randomize question order and when I want to display feedback for the questions, the shortcode does not render Latex.

    I’ve reached out to Learndash developers and below is what they had to say about it.

    Here is the link to a page where katex renders.
    https://orientationbatistonparcours.srv11.createurdimage.fr/quizzes/derivees-niveau-3/
    And another one where Katex does not render
    https://orientationbatistonparcours.srv11.createurdimage.fr/quizzes/derivees-piste-verte/

    ____________copy paste from learndash support_______
    Our developers dug into this deeper and the issue is coming from the Katex plugin and how they render the shortcode.

    Since our quizzes are being generated via Ajax for the most part, the shortcode is not rendering correctly. More specifically, this conditional is blocking the shortcode from generating: https://monosnap.com/file/qEqxCaZJi77ulw6VPbD6bVpRfOMn0I

    So this is why when the questions are being loaded via AJAX the [katex] shortcode is not registered with WP and thus not setup to handle the parsing of the content.

    It does seem like the Katex plugin author is aware of this to some extent, so it would be more appropriate for them to resolve it via their plugin.

    The page I need help with: [log in to see the link]

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Author Thomas Churchman

    (@beskhue)

    Hi,

    Thank you for the report.

    If you’re able to, could you try changing those lines in ./katex.php, by removing the if-condition, to:

    require_once(KATEX__PLUGIN_DIR . 'scripts/block.php');
    require_once(KATEX__PLUGIN_DIR . 'scripts/shortcode.php');
    require_once(KATEX__PLUGIN_DIR . 'scripts/resource.php');
    

    to see whether without this conditional KaTeX renders correctly?

    Thread Starter fabricedarr

    (@fabricedarr)

    Is this what you mean ?

    if (is_admin() && !wp_doing_ajax()) {
    $katex_resources_required = true;
    require_once(KATEX__PLUGIN_DIR . ‘scripts/admin.php’);
    }
    /*
    if (!wp_doing_ajax()) {
    require_once(KATEX__PLUGIN_DIR . ‘scripts/block.php’);
    require_once(KATEX__PLUGIN_DIR . ‘scripts/shortcode.php’);
    require_once(KATEX__PLUGIN_DIR . ‘scripts/resource.php’);
    }
    */`

    Katex does not render at all if I disable the 3 lines you mentioned.

    Plugin Author Thomas Churchman

    (@beskhue)

    No. I mean just removing the condition itself, so KaTeX is always included:

    if (is_admin() && !wp_doing_ajax()) {
        $katex_resources_required = true;
        require_once(KATEX__PLUGIN_DIR . 'scripts/admin.php');
    }
    
    require_once(KATEX__PLUGIN_DIR . 'scripts/block.php');
    require_once(KATEX__PLUGIN_DIR . 'scripts/shortcode.php');
    require_once(KATEX__PLUGIN_DIR . 'scripts/resource.php');
    Thread Starter fabricedarr

    (@fabricedarr)

    No, it renders like raw latex but without the [katex][/katex] short code displaying. https://orientationbatistonparcours.srv11.createurdimage.fr/quizzes/derivees-piste-verte/

    Plugin Author Thomas Churchman

    (@beskhue)

    It seems like the shortcode is correctly handled now. However, as Learndash fetches the content asynchronously, KaTeX does not know to retry rendering all equations on the page: KaTeX only scans the page once for performance reasons.

    You can probably use the same trick as in:

    https://www.ads-software.com/support/topic/render-in-learndash-quiz/

    I.e., add this to your WordPress installation’s main functions.php:

    add_action( 'wp_print_footer_scripts', function() {
      if ( is_singular( 'sfwd-quiz' ) ) {
        ?>
        <script>
          (function($) {
            jQuery('.wpProQuiz_content').on('learndash-quiz-answer-response-contentchanged', function(e) {
              katexRender();
            });
    
            jQuery('.wpProQuiz_content').on('learndash-quiz-init', function(e) {
              katexRender();
            });
          })( jQuery );
        </script>
        <?php
      }
    }, 999);

    For better compatibility with these type of plugins, it might be possible for this KaTeX plugin to observe changes in the DOM and automatically render elements that appear. I have to think about it.

    Plugin Author Thomas Churchman

    (@beskhue)

    This probably has a better solution now: it might work out of the box using version 2.2.1.

    Also see https://www.ads-software.com/support/topic/katex-does-not-render-in-cm-tooltip-glossary

Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘Katex plugin not rendering in Learndash Quizzes’ is closed to new replies.