您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
New features for Capytale's Jupyter's notebooks : (1) admonition's question quick add, (1) admonition's note quick add, (3) Admonition's spoiler button feature, (4) restart & clear all cells outputs shortcut
- // ==UserScript==
- // @name Capytale Jupyter Notebook : more tools
- // @namespace http://tampermonkey.net/
- // @version 2025-01-20d
- // @description New features for Capytale's Jupyter's notebooks : (1) admonition's question quick add, (1) admonition's note quick add, (3) Admonition's spoiler button feature, (4) restart & clear all cells outputs shortcut
- // @author James Web (in the area)
- // @supportURL https://codeberg.org/jrm-omg/userscripts
- // @include https://capytale2.ac-paris.fr/p/basthon/**
- // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- // Wait until Basthon's ready
- let ticTac;
- function myCallback() {
- if (document.querySelector('#MathJax_Message')) {
- // Basthon is ready, go go go !
- clearInterval(ticTac);
- // (1) Admonition's question button feature
- function addAdmoQuestion() {
- let cell = Jupyter.notebook.insert_cell_below('markdown')
- cell.set_text('!!! question\n\n!!!')
- }
- let qEl = document.createElement('button');
- qEl.className = 'btn btn-default';
- qEl.title = 'Ajouter une admonition « question » après la cellule active';
- qEl.innerHTML = '<i class="fa-question-circle fa"></i>';
- qEl.addEventListener('click', addAdmoQuestion);
- // (2) Admonition's note button feature
- function addAdmoNote() {
- let cell = Jupyter.notebook.insert_cell_below('markdown')
- cell.set_text('!!! note\n\n!!!')
- }
- let nEl = document.createElement('button');
- nEl.className = 'btn btn-default';
- nEl.title = 'Ajouter une admonition « note » après la cellule active';
- nEl.innerHTML = '<i class="fa-pencil fa"></i>';
- nEl.addEventListener('click', addAdmoNote);
- // (3) Admonition's spoiler button feature
- function addAdmoSpoiler() {
- let cell = Jupyter.notebook.insert_cell_below('markdown')
- cell.set_text('??? quote Indice *— à ouvrir uniquement en cas de difficultés*\n\n???')
- }
- let sEl = document.createElement('button');
- sEl.className = 'btn btn-default';
- sEl.title = 'Ajouter une admonition « spoiler » après la cellule active';
- sEl.innerHTML = '<i class="fa-envelope-o fa"></i>';
- sEl.addEventListener('click', addAdmoSpoiler);
- // (4) Restart & clear all cells outputs shortcut
- function restartAndClean() {
- document.querySelector('#restart_run_all').click();
- setTimeout(()=>{
- document.querySelector('.modal-footer .btn-danger').click();
- setTimeout(()=>{
- document.querySelector('#restart_clear_output').click();
- setTimeout(()=>{
- document.querySelector('.modal-footer .btn-danger').click();
- }, 500)
- }, 500)
- }, 500)
- }
- let rEl = document.createElement('button');
- rEl.className = 'btn btn-default';
- rEl.title = 'Tout exécuter + Effacer les sorties';
- rEl.innerHTML = '<i class="fa-truck fa"></i>';
- rEl.addEventListener('click', restartAndClean);
- // Hiding the #cmd_palette .btn-group (to get more space)
- document.querySelector('#cmd_palette').style.display = 'none';
- // Insert new buttons inside the user-scripts-group
- let usgEl = document.querySelector('.user-scripts-group');
- if (!usgEl) {
- usgEl = document.createElement('div');
- usgEl.className = 'btn-group user-scripts-group';
- document.querySelector('#maintoolbar-container').append(usgEl);
- }
- usgEl.append(qEl);
- usgEl.append(nEl);
- usgEl.append(sEl);
- usgEl.append(rEl);
- }
- }
- ticTac = setInterval(myCallback, 500);
- })();