GitBook 自定义代码高亮问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
pheyer

GitBook 自定义代码高亮问题

  •  
  •   pheyer 2015 年 11 月 1 日 10707 次点击
    这是一个创建于 3827 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近 Swift 2.1 版本发布,觉得 Swift 也差不得稳定,可以开始学习了。于是就下载了《 the-swift-programming-language-in-chinese 》电子书开始慢慢学习。

    学习过程中发现不太喜欢里面的代码高亮(提供的 PDF 和 EPub 格式甚至没有代码高亮),想换成如同Prism Demo - Okaidia Theme一样的代码高亮方式。这是我在使用了 MacDown 这个软件写 MarkDown 文章后,发现的一个不错黑底代码高亮风格,在 MacDown 里面的名字是 Github2 css/okaidia ,全名大概是 Prism Okaidia Theme 。

    各种搜索,找到了两种相关的 okaidia 代码高亮资源,但问题是不知道怎么用。

    第一种是在 npmjs 上找到的prismjs-okaidia-theme,这应该可以通过下面的命令进行安装:

    npm install prismjs-okaidia-theme -g 

    但是安装之后怎么应用到 GitBook 上,我没找到答案。

    第二种是去这个链接里手动配置代码高亮样式并下载 js 与 css 文件,同样是在使用上遇到难题。有一个相关的资料:根据Introduction | Swift Codeblocks Syntax Highlight, Coding 和 Gitbook 都通过 highlightjs 支持 swift 语法高亮。其中有这么一句:一般 html 解决办法见highlight.js,需要 xcode.css 、 highlight.pack.js ,看了一下还是没怎么搞懂。

    也是学习 Swift 才第一次接触 GitBook ,很多东西包括 Js 与 NPM 都不甚了解,所以在这里求教一下 GitBook 高手,应该怎么把上面的代码高亮资源应用到 GitBook 里?

    7 条回复    2015-11-01 22:02:19 +08:00
    phyng
        1
    phyng  
       2015 年 11 月 1 日
    使用这个插件 https://github.com/gaearon/gitbook-plugin-prism ,然后可能要修改一下 https://github.com/gaearon/gitbook-plugin-prism/blob/master/index.js 里面的这一行 var prismCSS = require.resolve('prismjs/themes/prism.css');,改成你要的 themes/prism-okaidia.css
    pheyer
        2
    pheyer  
    OP
       2015 年 11 月 1 日
    @phyng 你说的链接我看到过,下载这个插件的命令应该是 npm install gitbook-plugin-prism
    -g 。问题是如果我修改了 index.js ,不就是更新了插件源码吗,我怎么重新编译插件?或者说不用编译,找到插件路径修改就行?如果是的话这个路径在哪里?
    还有 themes/prism-okaidia.css 这个路径在我安装了插件之后就有了吗?或者还是要我自己提供?
    抱歉,新手总是有些不明白的地方
    phyng
        3
    phyng  
       2015 年 11 月 1 日
    @pheyer
    1. 是的, js 不需要编译
    2. npm 加 -g 参数默认是安装在系统目录,不加 -g 默认安装路径在项目文件夹下的 node_modules/
    3. npm 通过 package.json 配置, gitbook-plugin-prism 项目的 package.json 里面写明了依赖 prismjs ,安装的时候会自动下载 prism
    4. gitbook 的插件是通过 book.json 设置,但是每次改动插件需要通过 gitbook install 加载
    ---
    我闲着试了一下,这个插件不完善, prism-okaidia.css 优先级不高,我简单的加了一些 important ……
    Github : https://github.com/phyng/gitbook-plugin-prism-test
    Demo : http://phyng.com/gitbook-plugin-prism-test/
    pheyer
        4
    pheyer  
    OP
       2015 年 11 月 1 日
    @phyng 谢谢,现在差不多实现我想要的效果了,不过貌似有点小 bug
    关于你说的 important 我是用代码比较才知道哪些是要加 important 的,大概改动了三个文件。
    bug 代码示例:
    ```
    let initialBits: UInt8 = 0b00001111
    let invertedBits = ~initialBits // 等于 0b11110000
    ```
    当类似上面的代码没有指定语言时,显示的效果是完全黑块,字体居然是黑色了是在前面的 Swift 书中发现的,好多代码块都没有指定语言
    另外一个问题是代码高亮的字体好像比较单薄,从你给的 Demo 里就可以看出来,不如 http://colobu.com/2014/10/09/gitbook-quickstart/这个网页的里面代码那么饱满
    pheyer
        5
    pheyer  
    OP
       2015 年 11 月 1 日
    @pheyer 偶然发现字体单薄是在 Chrome 中比较明显,在 Firefox 中好多了, Mac 环境
    phyng
        6
    phyng  
       2015 年 11 月 1 日
    @pheyer 字体问题大概因为你给的链接里面的字体大小是 16px ,然后可能还跟 font-family 也有关,这些都是 CSS 的问题;没有指定语言的时候 markdown 解析器自然不会高亮(高亮就是解析语言不同的 token 加上不同的 class 再通过设置不同 class 的样式),可以写个程序给源文件指定一下语言
    --
    修正了没有语言的效果,字体大小设置为 16px ,(CSS 里面使用 !important 是很脏的代码- -!): https://github.com/phyng/gitbook-plugin-prism-test/commit/92036de20f22df166ece9aec57b6fe9bcd9b17f7
        7
    pheyer  
    OP
       2015 年 11 月 1 日
    @phyng 嗯, bug 解决了
    目前也就看看网页了,试了一转换成 EPUB, Mobi, PDF 格式,代码显示乱得一塌糊涂,坑还是有很多,就不管了吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2883 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 13:07 PVG 21:07 LAX 06:07 JFK 09:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86