分享双语文档如何切换中英文视图的显示

效果演示

PixPin_2024-03-22_23-27-39

不改变原文的情况下实现中英文双语文档的切换显示,需求来源于 PKMer 群友 @五星一杠瓢虫

设计思路

配合 Dynamic Highlight 插件、Highlight In Preview 插件,参考文档 Dynamic-Highlights 插件的几种使用场景。使用正则表达式匹配文档中的中文或者英文段落,之后设置css来取消某一种的显示,为了方便切换中英文模式,利用QuickAdd来控制文档的cssclass中的属性。

  • 2024-03-22_23:39:本想着需要配合 Style setting 的样式控制来设置,测试了半天无法获取当前状态,最后居然用 CssClasses 来设置就好了。
    • 详情

      PixPin_2024-03-22_22-36-16 1

Dynamic Highlight 动态高亮的正则

  • chDisplay:
    • ^[\s0-9>\-\[\]*?[\u4e00-\u9fa5].*[。?;!\u4e00-\u9fa5]$
  • enDisplay:
    • ^[\s0-9>\-\[\]]*?[A-z0-9].*[\.\?\sA-z0-9\d]$

CSS Snippets

/* 中英文锻炼切换 */
.yamlDisplay,
.chDisplay,
.enDisplay {
  background: transparent !important;
}

.英文视图 .chDisplay,
.中文视图 .enDisplay {
  display: none !important;
  opacity: 0.2;
}

/* 鼠标悬浮式显示 */
.英文视图 .chDisplay:hover,
.中文视图 .enDisplay:hover {
  opacity: 1;
}

/* 拓展视图 */
/* .拓展视图 span.cm-highlight, */
.拓展视图 mark {
  color: transparent !important;
}

/* .拓展视图 span.cm-highlight:hover, */
.拓展视图 mark:hover {
  color: initial !important;
}

/* .拓展视图 .cm-strikethrough, */
.拓展视图 del {
  display: none !important;
}

QuickAdd Macro

const activeFile = app.workspace.getActiveFile();
const choices = ["默认视图", "拓展视图", "中文视图", "英文视图"];
module.exports = async (params) => {
  const quickaddApi = app.plugins.plugins.quickadd.api;
  const choice = await quickaddApi.suggester(choices, choices);

  await app.fileManager.processFrontMatter(activeFile, fm => {
    if (!fm["cssclasses"]) fm["cssclasses"] = [];
    // 清除所有选项
    fm["cssclasses"] = fm["cssclasses"].filter(item => !choices.includes(item));

    // 根据选择的选项添加对应的视图
    for (let i = 1; i < choices.length; i++) {
      if (choice === choices[i]) {
        fm["cssclasses"].push(choices[i]);
        return;
      }
    }
  });
  console.log("运行完成");
};

后记

  • 2024-03-23_00:07:或者设置透明度
    • 详情

      PixPin_2024-03-22_23-49-09

References

  1. PKMer:Dynamic-Highlights 插件的几种使用场景
4 个赞

如果中英文是上下部分的,可以看看这个PKMer:QuickAdd 脚本 - 利用 Canvas 平铺笔记

PixPin_2024-03-20_13-27-18

1 个赞

熊猫别熬夜大佬
多謝分享
新手我最近也在學習正則與英文要怎麼與Obsidian相結合
這篇真是太神了:+1::+1::+1:
謝謝您

1 个赞
  • 2024-03-25_16:34:#1添加一个拓展视图
    • 阅读视图下,高亮线会变成无文字状态,悬浮预览
    • 阅读视图下,删除线内的文字会直接不显示

PixPin_2024-03-25_16-43-50

1 个赞