給Obsidian增加高亮Callout/Admonition中文字功能(用于一鍵中英對照&pdf回鏈)
背景
我看書/文章的時候經(jīng)常采用翻譯成中英對照的形式。而對于callout中的內(nèi)容一點擊就會打開,不能直接選擇進行高亮,因此之前我的中英對照是只有英文在callout中(參考前面的文章)。因此增加點擊callout不直接展開、選擇callout中的文字可以進行高亮的功能。
效果
1. 一鍵從pdf到中英對照雙列callout,并且附上pdf回鏈

2. 可以對callout中的文字&普通的文字進行高亮(可以在設置中自定義設置)

3. 雙列callout可以輕松調(diào)整寬度(搭配Editor Width Slider)

4. 回鏈可以正常點擊,跳轉(zhuǎn)到pdf (這里可以是bookxnote、zotero、bookmaster等等)

實現(xiàn)
禁止callout的點擊事件。注冊mousedown事件,在立面判斷是點擊到callout元素,取消事件的默認行為、禁止事件冒泡
高亮文字。這里的關鍵是如何從選擇的文字來修改原始文件內(nèi)容,這里obsidian的editor接口無法直接獲得在callout中選擇的文字對應于文件內(nèi)容的什么什么位置。如果采用獲得選擇的文字,然后對文件內(nèi)容進行替換的話,無法處理所選擇的文字在文中出現(xiàn)多次的問題。因此這里我采用的是通過docView來聯(lián)系DOM元素與文件內(nèi)容,獲得所點擊DOM元素在文件內(nèi)容中的索引,然后獲得所選文字在DOM元素中的offset,然后修改文件內(nèi)容。
標簽: