Greasy Fork is available in English.

文献翻译格式化

自动移除从PDF等复制的文本中包含的换行符,不需要的连接符,测试了谷歌翻译,有道翻译。一般只用这两个。

// ==UserScript==
// @name         文献翻译格式化
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  自动移除从PDF等复制的文本中包含的换行符,不需要的连接符,测试了谷歌翻译,有道翻译。一般只用这两个。
// @author       zhengyangqi
// @match        https://translate.google.com/*
// @match        https://translate.google.cn/*
// @match        http://fanyi.youdao.com/
// @icon         https://translate.google.cn/favicon.ico
// ==/UserScript==

javascript: document.getElementsByTagName('textarea')[0].addEventListener('input',
    function ()
    {
        var txt = "";
        txt = document.getElementsByTagName('textarea')[0].value;

        //第一步:连字符与换行连用表示单词拼接
        txt = txt.replace(/-\n/g,"");
        txt = txt.replace(/- /g,""); //有的连字符后面有空格

        //第二步:换行符替换为空格
        txt = txt.replace(/(?<![\.?!;:\n])\n/g," "); //(?<![\.?!;:\n])这个用法不明白,我在\n后面添加无效
        txt = txt.replace(/([\.?!;:])\n([0-9a-zA-z])/g,"$1 $2"); //以句号、问号、感叹号、分号、冒号结尾,但是后一个字符为0-9a-zA-z,也替换为空格。使用分组

        //第三步:去除段开头空格
        txt = txt.replace(/(\n) +/g,"$1");

        //第四步:换行符替换为双回车
        txt = txt.replace(/(?<=[\.?!;:])\n+/g,"\n\n");

        document.getElementsByTagName('textarea')[0].value = txt;
    }
);