Achuan-2

Achuan-2 学生 资讯
关注
64407 号成员,2021-01-09 23:22:39 加入
8.2k
个人主页 浏览
1.5k
帖子 + 回帖 + 评论
605h35m
在线时长
公众号:Achuan 同学
  • 如何让数学公式渲染 支持 $ 公式 $ ,$$ 公式 $$ 格式, 也支持 \(公式 \), \[公式]\ 这样的标识符

    2024-09-21 13:41

    +1,用 ai 常常有这个困扰,只能用 prompt 让 ai 输出标准 markdown 格式的公式

  • 我的很多笔记标题变成 Untitled 了

    2024-09-19 09:13

    我很早之前也出现过

    怀疑是之前的某个同步 bug,导致云端存储的笔记出现了问题,丢失了 title,出现这个问题的笔记都是父文档,后面尽管更新笔记,云端同步到其他设备也依然有问题

    建议把云端笔记目录全部删除,新建新的目录,重新全量上传

    否则下次全量同步,依然可能出现问题

    操作过后,我现在就没有这个问题了

  • 在一个区域需要有多个图片是怎么排版的

    2024-09-16 11:42

    确实,图片排版不适合用超级块,适合一个块放多个图片,超级块放图片,编辑器宽度改变,图片的高度和宽度也会改变,原来是对齐的,编辑器宽度改变就不对齐了

  • 需求统计:你是否需要“自动检测代码块的语言“功能的插件

    2024-09-07 11:18

    +1,需要

    接入 ai 准确性比较好吧

  • 在线分享专业版他来啦!

    2024-09-05 11:41

    支持!!!也期待下发布工具专业版!

  • 如何进行知识管理丨 P.A.R.A 系统:以行动为导向

    2024-08-27 11:00

    因为书签管理笔记是为了行动,home 页面是为了归档

    Project 和 Area 我希望专精,在书签里列当前最重要的就好,不重要的不列,不需要列表,bookmark+ 插件可以排序,对我来说足够用了

    当 Project 的一个项目完成,领域的主题学习完成,我就可以在书签中移除这些笔记了

  • 如何进行知识管理丨 P.A.R.A 系统:以行动为导向

    2024-08-24 16:00

    是的,用了那个书签增强插件,因为书签管理方便,也不需要跳转到 home 页面,可以一直显示在一侧

  • 如何进行知识管理丨 P.A.R.A 系统:以行动为导向

    2024-08-23 12:57

    现在改用书签来搭建 PARA 体系了,没用 home 页面

  • 日记记录的展现样式 求助 or 建议

    2024-08-20 10:13

    不会,已经写了四个月的日记了

  • Ai 带来的变化与我的“刻意练习”

    2024-08-11 18:25

    没用过大模型模拟情境

    但是也能想到几个实用的例子

    • 模拟英语对话,练习英语口语
    • 模拟面试
    • 练习有情商的回答
  • 分享思源代码片段调试技巧

    2024-08-11 08:39

    看后面的替换文件,我觉得我会倾向于直接 vscode 打开主题文件夹,在主题里直接写,css 在 theme.css 写是即时生效的,js 需要刷新下

  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 21:46

    才知道有 closest 方法,学习了哈哈

  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 21:22

    原来这样呀。
    ps:如果出现的是 hljs,querySelector 选择代码语言要更改下,因为代码语言是兄弟节点不是子节点,会查找不到

  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 20:55

    所以我改成了这样就没问题了

                // 监听新增代码
                if(mutation.target.classList.contains("hljs")) {
                    if(codeTimer) clearTimeout(codeTimer);
                    codeTimer = setTimeout(() => {
                        const langText = mutation.previousSibling.textContent;
                        // 添加语言
                        addLanguage(langText);
                        // 设置默认语言
                        setDefaultLang();
                        // console.log(mutation.target.querySelector(".protyle-action__language")?.textContent, 'selected');
                    }, 40);
                }
    
  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 20:51

    就是 mutation 监控的问题,因为我确实测试了,新增代码块没有检测到 code-block 变化,,所以 if 判断里面的代码没有执行

    code-block 新增,不覆盖思源的上一个选择代码语言,所以下一次新增代码,就变为了上一次选择的代码语言,而不是代码片段设置的代码语言了

    我新建空白工作空间测试了,依然检测不到 code-block 变化

  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 19:55

    我用你的方式(即斜杆命令创建不指定语言的代码块),也是一样的结果,监听 mutation,也是只有 hljs 变化,没有 code-block 变化

    思源是最新版

    系统是 windows11

    代码

    // 功能:代码块最近使用的语言置顶
    (async ()=>{
        // 配置默认的代码语言,注意如果设置了这个参数,则会覆盖上一次使用的语言。始终默认用这个语言,为空不设置
        const defaultCodeLang = "python";
    
        // 配置最近代码语言最大显示个数
        const recentlyCodeLangLength = 10;
    
        // 配置置顶的代码语言,这个配置里的语言始终置顶,比如 ["js", "java", "php"]
        let topCodeLang = [];
    
        // 配置持久化文件的存储路径
        const storagePath = "/data/storage/recently_code_lang.json";
    
       
    
    

    录屏

    思源文档设置默认语言.gif

  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 19:08

    创建默认的 python 高亮代码块,用的是、、、,用这个方法是不会监听到 code-block 变化的

  • 为了让文档层级导航插件能用于 MOC 笔记法,我写了一个对反链进行过滤的代码片段

    2024-08-09 16:36

    学习这篇帖子代码片段实现代码块最近使用的语言置顶 - 链滴 (ld246.com)

    放弃 setInterval 定时执行,用了 MutationObserver 来监控 DOM 变化

    
    
    (async ()=>{function filterAndReorderLinks() {
        const filterPatterns = [
            /^\d{8} \w{3}$/, // Example: 20240728 Sun
            /^\d{6}$/,
            /^\d{8} ~ \d{8}$/,
            /^\d{8} \- \d{8}$/
            // Add more patterns here if needed
        ];
    
        const containers = document.querySelectorAll("div.og-hierachy-navigate-backlink-doc-container");
        if (containers.length === 0) {
            return;
        }
    
        containers.forEach(container => {
            const refLinks = container.querySelectorAll("span.refLinks.docLinksWrapper");
            if (refLinks.length === 0) {
                return;
            }
    
            // Hide elements that match any pattern in filterPatterns
            refLinks.forEach(link => {
                const docName = link.getAttribute("title");
                if (filterPatterns.some(pattern => pattern.test(docName))) {
                    link.style.display = "none";
                } else {
                    link.style.display = ""; // Reset display property if it doesn't match
                }
            });
    
            // Separate elements into two arrays: one for @-prefixed and one for otherItems
            const mocItems = [];
            const otherItems = [];
    
            refLinks.forEach(link => {
                const docName = link.getAttribute("title");
                if (docName.startsWith("@")) {
                    mocItems.push(link);
                } else {
                    otherItems.push(link);
                }
            });
    
            // Sort the 'otherItems' array based on the 'title' attribute in ascending order
            otherItems.sort((a, b) => {
                const titleA = a.getAttribute("title").toUpperCase(); // Ignore upper and lowercase
                const titleB = b.getAttribute("title").toUpperCase(); // Ignore upper and lowercase
                return titleA.localeCompare(titleB);
            });
    
            // Clear only the refLinks elements and append them in the desired order
            refLinks.forEach(link => link.remove());
            mocItems.concat(otherItems).forEach(link => {
                container.appendChild(link);
            });
        });
    }
        // 监控dom变化
        function observeDomChange(targetNode, callback) {
            const config = { childList: true, subtree: true };
            const observer = new MutationObserver((mutationsList) => {
                for (const mutation of mutationsList) {
                    if (mutation.type === 'childList') {
                        callback(mutation);
                    }
                }
            });
            observer.observe(targetNode, config);
            // 返回observer,用于停止观察
            // observer.disconnect();
            return observer;
        }
    // 等待元素渲染完成后执行的函数
    function whenElementExist(selector) {
        return new Promise(resolve => {
            const checkForElement = () => {
                let element = null;
                if (typeof selector === 'function') {
                    element = selector();
                } else {
                    element = document.querySelector(selector);
                }
                if (element) {
                    resolve(element);
                } else {
                    // 如果元素不存在,等浏览器再次重绘,递归调用checkForElement,直到元素出现
                    requestAnimationFrame(checkForElement);
                }
            };
            checkForElement();
        });
    }
    
    // 等待笔记区出现
    whenElementExist(".layout__center").then((element)=>{
      
        const observer = observeDomChange(element, (mutation) => {
        // 监听弹窗代码列表
        if(mutation.target.classList.contains("protyle-top") || mutation.target.classList.contains("og-hn-heading-docs-container")) {
            setTimeout(filterAndReorderLinks, 100);
        }
    
    });
    });
    
    
    })();
    
  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 15:42

    if(mutation.target.classList.contains("code-block")) {

    这个好像有点问题,貌似是不执行的,新增代码块的 mutation.target.classList 只有 hljs

    我设置默认语言为 python,新增代码块确实是 python 语法高亮,再新增一个 matlab 代码块,之后再新增不指定语言的代码块,默认就是 matlab 代码块了

  • [js] 代码片段实现代码块最近使用的语言置顶

    2024-08-09 11:16

    谢谢大佬,这个很好用!👍

    代码写的真好
    js 小白,学习了 observeDomChangewhenElementExist 的使用

  • 日记记录的展现样式 求助 or 建议

    2024-08-08 17:24

    等思源数据库的画廊视图

    我现在整年的日记都用一个数据库来管理

  • 为了让文档层级导航插件能用于 MOC 笔记法,我写了一个对反链进行过滤的代码片段

    2024-08-08 10:49

    因为我还是喜欢文档来管理内容,也能更沉浸去创作。

    目前块引用也基本是文档引用,块粒度的引用对我而言,不如文档引用安全,容易失效

  • 集市什么时候新增评论和评分功能

    2024-08-07 18:25

    支持,现在插件使用,没有评分和评论,用户只能自己看 readme 和亲自尝试,有了评分和评论就简单做下筛选,

    可以知道哪些插件评分很高,自己可以试试(下载量其实只能当做受欢迎程度程度参考之一,因为和插件的受众多少以及插件更新频率有很大关系)

    哪些插件其实并不好用,做的并不完善,需要警惕使用

    而评论功能除了避坑、简单了解插件有哪些不足,还可以分享用户使用插件的场景,对于用户而言,绝对是利好的。至于对于开发者而言,我是觉得要接受评论的好坏的,把插件分享到集市是好心,但是其实也是对集市资源的一种占用,别人因为看到集市有这个插件而去尝试,然后发表意见,就是很正常的事情。把东西放到互联网上,其实就应该要做好被评论的准备。

    我喜欢把自己写的文章放到互联网上,因为我知道自己的文章有局限性,我其实非常期待别人能找出问题,告诉我,也想要和同道之人讨论进步。如果评论区只是夸赞,我反而有点失望,没有我想要的建设性意见。其实自己有时候也在想,互联网上信息良莠不齐,人人都可以发言,劣币常常驱逐良币,自己是不是同时也给别人找资料时造成了误导呢?

    现在评分和评论暂时可以缓缓,因为集市插件不并多,等插件非常多了,个人觉得还是有必要出的。

    论坛虽然可以讨论插件,但是非常信息过于零散,是不如评论功能便携好用的

  • 代码块功能优化建议

    2024-08-07 18:23

    让 ai 给代码块填充语言即可

  • 在思源笔记里如何管理主题笔记

    2024-08-04 16:40

    生物学

  • 在思源笔记里如何管理主题笔记

    2024-08-04 14:06

    举个用数据库管理的例子

    我计划每周要学习统计分析,并且发小红书和微信公众号

    今天学完了 z 检验,加入《统计分析》和《博客》数据库

    Clip20240804140307.png

    那么我可以在 z 检验这篇笔记直接看到我的整个统计分析学习进度

    Clip20240804140752.png

    也可以看到博客发布到平台的情况

    Clip20240804140640.png

  • 从 2024 年的视角来看,以 Roam Research 为首的双向链接似乎已经降温

    2024-07-31 22:43

    加一,所以我之前就提过 issue,建议添加相关笔记功能了,建议的是能手动添加相关笔记,就是在属性里加一个相关笔记,可以添加多个笔记链接进去,有一个面板能显示本笔记所有相关的笔记,但是被否了

    如果用 dailynote 笔记法的话,反链面板更适合积累想法,当笔记的历史记录,用反链面板找相关的笔记,很容易有太多噪声

    除非完全弃用 dailynote,双链真的就是用来建立关联,而不是传递零碎信息的,这样反链面板才干净些

    说到底,反链面板本身的设计就是去找这个块在哪里被引用了,并不是为找相关块而设计的,被引用不代表是我想要的相关和归属关系