应该是PDF的格式问题吧,里面的英文还是全角的看得好别扭,如果你是win系统的话,用Quicker应该好解决,如果只想在obsidian内解决倒是可以用Advanced paste或者quickadd专门设置个格式化粘贴。
以下是Advanced paste插件处理的流程:
- 安装Advanced Paste插件
- 打开插件设置,设置,Script Directory路径,默认为advpaste文件夹:
- 将下述js代码放到该Script Directory路径文件夹下:

// 文本格式化处理
export function processText(text) {
// 替换特殊空格为普通空格
text = text.replace(/[\ue5d2\u00a0\u2007\u202F\u3000\u314F\u316D\ue5cf]/g, ' ');
// 将全角字符转换为半角字符
text = text.replace(/[\uFF01-\uFF5E]/g, function (match) { return String.fromCharCode(match.charCodeAt(0) - 65248); });
// 替换英文之间的多个空格为一个空格
text = text.replace(/([a-zA-Z])([\u4e00-\u9fa5])/g, '$1 $2');
// 删除中文之间的空格
text = text.replace(/([0-9\.\u4e00-\u9fa5])\s+([0-9\.\u4e00-\u9fa5])/g, '$1$2');
text = text.replace(/([0-9\.\u4e00-\u9fa5])\s+([0-9\.\u4e00-\u9fa5])/g, '$1$2');
text = text.replace(/([\u4e00-\u9fa5])\s+/g, '$1');
text = text.replace(/\s+([\u4e00-\u9fa5])/g, '$1');
// 在中英文之间添加空格
text = text.replace(/([\u4e00-\u9fa5])([a-zA-Z])/g, '$1 $2');
text = text.replace(/([a-zA-Z])([\u4e00-\u9fa5])/g, '$1 $2');
return text;
}
- 重启ob或者重载后,Advanced paste会出现该定义的命令,建议设置快捷键方便调用可以格式化你的剪切板文本:
整体设置有点麻烦,不过一劳永逸,如果还想进一步优化,可以借助GPT以及查看它的说明文档。

