我目前正在撰写法学博士论文,自然会用到很多缩写。按照惯例,我想附上一份缩写及其对应术语的列表。
我的所有缩写都由两个或多个大写字符组成(更准确地说:以大写字母开头)。示例包括: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 插件有一个名为“缩写列表”的组件。它是为语言写作而设计的,但它也可能适用于你的论文。该插件有助于发现不一致之处并创建一个唯一的列表。