【求助】复制pdf文字的时候,很多空白格如何批量删除呢?有没有插件实现这个

应该是PDF的格式问题吧,里面的英文还是全角的看得好别扭,如果你是win系统的话,用Quicker应该好解决,如果只想在obsidian内解决倒是可以用Advanced paste或者quickadd专门设置个格式化粘贴。

以下是Advanced paste插件处理的流程:

  1. 安装Advanced Paste插件
  2. 打开插件设置,设置,Script Directory路径,默认为advpaste文件夹:
  3. 将下述js代码放到该Script Directory路径文件夹下:
    image
// 文本格式化处理
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;
}
  1. 重启ob或者重载后,Advanced paste会出现该定义的命令,建议设置快捷键方便调用可以格式化你的剪切板文本:

整体设置有点麻烦,不过一劳永逸,如果还想进一步优化,可以借助GPT以及查看它的说明文档。

2 个赞