LibreOffice Writer:从“查找全部”搜索中复制并粘贴到列表

LibreOffice Writer:从“查找全部”搜索中复制并粘贴到列表

我目前正在撰写法学博士论文,自然会用到很多缩写。按照惯例,我想附上一份缩写及其对应术语的列表。

我的所有缩写都由两个或多个大写字符组成(更准确地说:以大写字母开头)。示例包括:IO、EU、ICC、UNHCR 和 VCLT-IO。因此,我可以使用“匹配大小写”选项和以下正则表达式通过“查找全部”搜索来选择它们:

\b(?:[A-Z]){2,}

这样,文档中的所有缩写都突出显示后,我就可以按 Ctrl+C 来复制它们。但是,如果我尝试将缩写粘贴到例如新的 Writer 文档中,则输出如下:

欧盟驻华大使馆

我更希望的是,每个缩写都占一行:

欧盟驻科法治团

共同安全政策

橙汁

共同安全政策

橙汁

共同安全政策

橙汁

欧盟驻科法治团

欧盟驻科法治团

欧洲联盟

欧洲联盟

我的问题是:有什么方法可以复制粘贴缩写,以便每个实例都是另一个文档中的新行/段落/单元格?(我更希望能够粘贴到例如 calc 中,因为这样可以更容易地对列表进行排序并清除重复项。)

答案1

这是一个可以执行此操作的宏:

Sub CopySelectionsToNewDocument
    oDoc = ThisComponent
    oNewDoc = StarDesktop.LoadComponentFromUrl(_
        "private:factory/swriter", "_blank" , 0, Array())
    oNewText = oNewDoc.Text
    oNewViewCursor = oNewDoc.CurrentController.getViewCursor()
    oSels = oDoc.getCurrentController().getSelection()
    If oSels.supportsService("com.sun.star.text.TextRanges") Then
        For i = 0 To oSels.getCount() - 1
            oSel = oSels.getByIndex(i)
            If oSel.supportsService("com.sun.star.text.TextRange") Then
                oNewText.insertString(oNewViewCursor, oSel.getString() & CHR$(13), 0)
            End If
        Next
    End If
End Sub

要使用它,首先进行搜索以选择项目,然后运行宏将选定的项目复制到新文档。

新文档在Writer中,但可以轻松复制并粘贴到Calc中。

对于更强大的东西,LingTools 插件有一个名为“缩写列表”的组件。它是为语言写作而设计的,但它也可能适用于你的论文。该插件有助于发现不一致之处并创建一个唯一的列表。

相关内容