SAS Kernel环境下默认折叠所有代码单元格的实现方法
我之前用SAS Kernel的时候也碰到过这个问题,那些通用的折叠代码单元格的JS脚本经常失效,主要是因为不同Kernel的单元格DOM结构可能有细微差异。下面给你几个实用的解决方案,都能实现默认折叠所有代码单元格,只显示Markdown、输出内容、图表和表格:
方案1:用CSS快速隐藏代码输入(最简单直接)
直接在Notebook里新建一个Markdown单元格,粘贴下面的代码并运行,立刻就能隐藏所有代码单元格的输入部分:
%%html <style> /* 隐藏代码单元格的输入区域 */ .code_cell .input { display: none !important; } /* 可选:保留折叠按钮,方便你手动展开特定代码 */ .code_cell .input_collapser { display: block !important; position: absolute; top: 10px; left: 10px; } </style>
这个方法的优点是兼容性极强,不管用什么Kernel,只要Jupyter的基础页面结构没变就会生效,而且不需要复杂的逻辑。
方案2:自定义JavaScript脚本(精准触发折叠交互)
如果你需要保留“折叠/展开”的交互功能,而不是直接隐藏代码,可以试试这个适配SAS Kernel的JS脚本。新建一个Code单元格,用%%javascript魔法命令运行:
%%javascript // 遍历所有代码单元格,触发折叠操作 document.querySelectorAll('.code_cell').forEach(cell => { // 查找折叠按钮(兼容多数Kernel的选择器) const foldButton = cell.querySelector('.input_collapser') || cell.querySelector('.fa-caret-down'); if (foldButton) { // 仅当单元格未折叠时点击按钮 if (!cell.classList.contains('collapsed')) { foldButton.click(); } } });
如果运行后没效果,你可以右键代码单元格选择「检查元素」,查看折叠按钮的具体类名,替换掉上面的选择器即可。
方案3:用Jupyter扩展实现默认折叠(一劳永逸)
如果经常需要做这类演示,推荐安装jupyter_contrib_nbextensions中的Codefolding扩展,它支持配置默认折叠所有代码单元格,完美适配SAS Kernel:
- 先安装扩展包:
pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user
- 启用Codefolding扩展:
jupyter nbextension enable codefolding/main
- 打开Jupyter Notebook,点击顶部的「Nbextensions」标签,找到「Codefolding」选项,勾选「Collapse all code cells by default」并保存设置。之后每次打开Notebook,所有代码单元格都会自动折叠。
内容的提问来源于stack exchange,提问作者cs0815
相关产品推荐
相关产品推荐

