一些背景:我已经使用Skim和BibDesk一段时间来阅读和注释科学期刊文章。最近,我购买了一个Android平板电脑,并希望用它来读取和注释.pdfs。我将参考库Eratosthenes与ezPDF Reader一起使用,并通过Dropbox同步所有文件。我遇到的问题是Skim默认将注释存储为扩展属性文件,其他设备无法通过Dropbox访问。通过将注释保存为.fdf文件,然后将.fdf文件链接到BibDesk中的引文条目,我解决了这个问题。 ezPDF阅读器可以将.fdf文件作为注释导入,如果注释文件链接到BibDesk条目,则.pdf和.fdf都可以轻松下载到平板电脑,而无需同步整个包含数百个引用的Dropbox文件夹。
我想写一个自动执行此操作的AppleScript,但我对Applecript很新,并且很难开始。我写了下面的脚本,当在skim中按下“command-s”时执行:
tell application "Skim"
set docPath to path of front document
set notesPath to text 1 thru -5 of docPath & ".fdf"
save front document
save front document in notesPath as "Notes as FDF"
end tell
这实质上是在保存当前文档的同时导出.fdf文件。在同一个脚本中,我想将.fdf文件链接到BibDesk中的相应引文条目。这将涉及:
我找不到那些做过类似事情的人,真的无法超越第一步。我尝试写一些基本的东西(假设引文条目突出显示,假设.fdf文件未链接),这不会产生任何结果:
tell application "BibDesk"
set thePub to selection
tell thePub
set theFieldName to "Local-URL-2"
set value of field theFieldName to fdfPath
end tell
end tell
熟悉Bibdesk应用程序的人是否能够帮助我完成此代码的第二部分?
非常感谢你。
答案 0 :(得分:1)
我不太熟悉脚本编写BibDesk,但我一直在探索一下。重要评论,以帮助指导您:
set theFieldName to "Local-URL-2"--generally better not to put
--something like this in a tell block if it isn't necessary
tell application "BibDesk"
--as you have it, you are simply putting the selection class
--into a variable. here we reference the specific selection
--object of the document object:
set thePubSel to selection of document 1
--and, since this returns a *list* of pubs, I'm grabbing just the first item
--(but a loop iterating through every publication in the selection perhaps better)
set thePub to item 1 of thePubSel
tell thePub
set value of field theFieldName of it to fdfPath
end tell
end tell
答案 1 :(得分:1)
以下代码令人满意地回答了我的初步问题。第一部分重申了保存和导出命令。第二部分定位包含链接的.pdf文件的引文条目(Skim中的前文档)。第三部分将.fdf文件附加(链接)到引文条目(感谢CRGreen提供了一些帮助)。
--save and export .fdf file
tell application "Skim"
set docPath to path of front document
set fdfPath to text 1 thru -5 of docPath & ".fdf"
save front document
save front document in fdfPath as "Notes as FDF"
end tell
--search for relevant citation entry
tell document 1 of application "BibDesk"
--sort all publications in library by Cite Key
set thePubs to (sort (get publications) by "Cite Key")
-check each publication individually (surely this is not the most efficient way to do this)
repeat with aPub in thePubs
--check to see if the .pdf is in the citation entry
tell aPub
if linked files contains (POSIX file docPath) then
set thePub to aPub
--once the citation is found, exit loop
exit repeat
end if
end tell
end repeat
--link the .fdf file to the citation entry (if it isn't already)
tell thePub
--if the fdf file exists in the linked file, do nothing
if linked files does not contain (POSIX file fdfPath) then
add (POSIX file fdfPath) to end of linked files
end if
end tell
end tell
我假设有更好的方法来搜索带有相关.pdf文件的引文条目(可能使用applescript搜索命令?)。这个解决方案适合我,但如果你知道一个更优雅的方法来解决这个问题,请随意提及。
要将脚本映射到键盘快捷键("命令"很方便),请参阅here(菜单标题是脚本的名称)。首先需要将脚本保存到〜/ Library / Application Support / Skim / Scripts目录中。
我只是在学习苹果,我意识到这对大多数人来说可能是一个非常微不足道的练习,但也许它会帮助另一个初学者。