计算化学公社

 找回密码 Forget password
 注册 Register
Views: 743|回复 Reply: 3

[综合交流] cp2k离线api文档制作(结合Dash或Zeal使用)

[复制链接 Copy URL]

47

帖子

3

威望

980

eV
积分
1087

Level 4 (黑子)

发表于 Post on 2022-8-11 19:05:32 | 显示全部楼层 Show all |阅读模式 Reading model
本帖最后由 casea 于 2022-8-12 14:43 编辑

最近在学pyrosetta,跟随谷雨老师的教程时,发现老师自己制作了pyrosetta的离线api查询文档,通过dash程序可以很方便的查找关键字。
举一反三,cp2k的关键词很多,而且日常访问网页查询时可能会出现网络波动。那么是否可以自行构建docset文档结合dash使用呢?
在查询资料之后,Dash程序只适用于Macos,Zeal支持windows和linux(Zeal是借鉴了Dash编写的)。软件安装很简单查看官网即可(提供的网盘文件中提供了解压即用的Zeal程序包)
目前,Zeal内置了很多官方api文档。但是很多程序的离线api文档需要自己制作。在此,提供制作流程,于此同时网盘文件中提供了对应的已经制作好的cp2k.docset文件,只需将其放入zeal程序文件夹中的docset文件夹即可。


效果图:
202208111903314148..png
制作流程: 使用centos8系统生成,仅供参考,可以直接使用网盘的资料
1. mkdir docset
2. cd docset
3. wget -m https://manual.cp2k.org/cp2k-2022_1-branch/index.html
***2022/08/12更新***
在@highlight 的指点下,也可以采用如下方法生成html文件
这是官方给的说明https://manual.cp2k.org/cp2k-9_1-branch/generate_manual_howto.html

假设你有编译好的 cp2k.psmp,执行 cp2k.psmp --xml 得到 cp2k_input.xml
yum install java saxon
在 xml2html 里修改 export SAXON=/usr/share/java/saxon.jar
执行 ./xml2htm

4. mkdir -p cp2k.docset
5. mkdir -p cp2k.docset/Contents/Resources/Documents
6. mv manual.cp2k.org/cp2k-2022_1-branch/* cp2k.docset/Contents/Resources/Documents/
7. vi cp2k.docset/Contents/Info.plist
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5.         <key>CFBundleIdentifier</key>
  6.         <string>CP2K</string>
  7.         <key>CFBundleName</key>
  8.         <string>CP2K</string>
  9.         <key>DocSetPlatformFamily</key>
  10.         <string>CP2K</string>
  11.         <key>isDashDocset</key>
  12.         <true/>
  13. </dict>
  14. </plist>
复制代码

8. > sqlite3 cp2k.docset/Contents/Resources/docSet.dsidx
    > CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);
  > .exit
9. python docset.py

  1. # docset.py
  2. #!/usr/local/bin/python

  3. import os, re, sqlite3
  4. from bs4 import BeautifulSoup, NavigableString, Tag

  5. conn = sqlite3.connect('/home/casea/CASEADATA/docset/cp2k.docset/Contents/Resources/docSet.dsidx')
  6. cur = conn.cursor()

  7. try: cur.execute('DROP TABLE searchIndex;')
  8. except: pass
  9. cur.execute('CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);')
  10. cur.execute('CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path);')

  11. docpath = '/home/casea/CASEADATA/docset/cp2k.docset/Contents/Resources/Documents'

  12. page = open(os.path.join(docpath,'index.html')).read()
  13. soup = BeautifulSoup(page)

  14. any = re.compile('.*')
  15. for tag in soup.find_all('a', {'href':any}):
  16.     name = tag.text.strip()
  17.     if len(name) > 1:
  18.         path = tag.attrs['href'].strip()
  19.         if path != 'index.html':
  20.             cur.execute('INSERT OR IGNORE INTO searchIndex(name, type, path) VALUES (?,?,?)', (name, 'func', path))
  21.             print('name: %s, path: %s' % (name, path))

  22. conn.commit()
  23. conn.close()
复制代码
10. cp cp2k.docset/Contents/Resources/Documents/favicon.png cp2k.docset/icon@2x.png
11. 在修改favicon.png的像素尺寸为16x16,并保存为icon.png
12. 将生成的cp2k.docset复制到zeal程序文件夹中得docset文件夹下。





评分 Rate

参与人数
Participants 4
威望 +1 eV +13 收起 理由
Reason
biogon + 5
hebrewsnabla + 3 GJ!
sobereva + 1
ljc050512 + 5 谢谢

查看全部评分 View all ratings

169

帖子

1

威望

3337

eV
积分
3526

Level 5 (御坂)

发表于 Post on 2022-8-12 12:46:59 | 显示全部楼层 Show all
可以不用 wget 吧,使用 tools/manual 直接生成对应版本的 manual 或许更简单

47

帖子

3

威望

980

eV
积分
1087

Level 4 (黑子)

 楼主 Author| 发表于 Post on 2022-8-12 13:35:18 | 显示全部楼层 Show all
highlight 发表于 2022-8-12 12:46
可以不用 wget 吧,使用 tools/manual 直接生成对应版本的 manual 或许更简单

wget这一步确实有点耗时,这方法也是借鉴过来的。
请教一下使用tool/manual生成是如何操作的

169

帖子

1

威望

3337

eV
积分
3526

Level 5 (御坂)

发表于 Post on 2022-8-12 14:24:52 | 显示全部楼层 Show all
casea 发表于 2022-8-12 13:35
wget这一步确实有点耗时,这方法也是借鉴过来的。
请教一下使用tool/manual生成是如何操作的

就是按照 README 里写的来
假设你有编译好的 cp2k.psmp,执行 cp2k.psmp --xml 就能得到 cp2k_input.xml
安装 yum install java saxon
然后在 xml2html 里修改 export SAXON=/usr/share/java/saxon.jar
执行 ./xml2htm 就行了

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2023-2-6 03:40 , Processed in 0.432333 second(s), 26 queries .

快速回复 返回顶部 返回列表 Return to list