新包 pagedown 求测试:另一条通向(PDF)奴役之路
- 已编辑
yihui 将来如果用CSS彻底代替LaTeX不知道是一个什么场景?Rmd->md->html->其他格式?
- 已编辑
pagedown 测试报告
测试环境:
> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Simplified)_People's Republic of China.936
[2] LC_CTYPE=Chinese (Simplified)_People's Republic of China.936
[3] LC_MONETARY=Chinese (Simplified)_People's Republic of China.936
[4] LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_People's Republic of China.936
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.1 rsconnect_0.8.12 htmltools_0.3.6 tools_3.5.1 yaml_2.2.0 Rcpp_1.0.0 rmarkdown_1.11.2
[8] knitr_1.21 pagedown_0.0.26 xfun_0.4 digest_0.6.18 packrat_0.5.0 evaluate_0.12
预览工具:Google Chrome Version 71.0.3578.98 (Official Build) (64-bit)
安装
安装正常,只是结束时出现警告信息:
Warning messages:
1: In untar2(tarfile, files, list, exdir) :
skipping pax global extended headers
2: In untar2(tarfile, files, list, exdir) :
skipping pax global extended headers
3: In untar2(tarfile, files, list, exdir) :
skipping pax global extended headers
4: In untar2(tarfile, files, list, exdir) :
skipping pax global extended headers
5: In untar2(tarfile, files, list, exdir) :
skipping pax global extended headers
6: In untar2(tarfile, files, list, exdir) :
skipping pax global extended headers
此外,RStudio 起初我没安装预览版,可能导致在菜单里没找到 pagedown 模板。升级到最新预览版就好了。
意外的惊喜是,内置的 Viewer 在预览版里终于好用了。我终于可以用上无限月读了。喜大普奔。
生成 html
六个自带模板,测试结果如下:
| template | RStudio Viewer | Chrome | print to pdf |
| --------------------------------- | --------------------- |----------- | ------------ |
| Business Card | good | good | good |
| HTML letter | good | bad | N.A. |
| HTML Resume | good | bad | N.A. |
| Poster | good | good | good |
| HTML Poster | good | good | good |
| Paged HTML documents | N.A. | N.A. | N.A. |
说明:
Paged HTML documents 在菜单的模板列表里没找到,安装路径 pagedown\rmarkdown\templates\ 下也没有。
五个模板的编译和在 RStudio Viewer 里的预览很完美。尤其是简历模板,惊艳。
HTML Letter 和 Resume 生成的 html 文件,用 chrome 打开时闪一下,然后一片空白,什么都没有显示。禁用全部插件后依旧。用 IE 能打开看到内容,但比较难看,占满了宽度。
chrome 里打印成 pdf 时,要勾选 Options - Background graphics,否则有些效果出不来。
建议
poster 模板里的一级标题用的是双实线标记:
================================================================================
我试了一下,改为 #
也能正常编译。既然如此,如果没有其他原因的话,建议示例用 #
表示一级标题,跟其他包的示例文档相一致。(我的私心是为了 mindr 包方便从中生成思维导图。)
本论坛不支持上面测试结果表格的 markdown 语法?
作为不看说明书成员组的一员,我忽略了readme里关于pandoc
的版本提醒。
目前发现的问题是pagedown::poster_relaxed
这个模版生产的海报在 Safari 跟 Chrome 下预览是正常的,在火狐下就跑偏了,估计需要对不同浏览器进行支持。其余模版没有问题。
另外 remotes
包竟然有 install_github
了,比 devtools
包轻多了。
- 已编辑
tctcab CSS 确实也容易砸到脚:https://slides.yihui.name/2018-blogdown-rstudio-conf-Yihui-Xie.html#33 但 CSS 砸到脚的前提是它足够复杂。多数 CSS 库确实也是有够复杂的,但如果我们能从 Markdown 出发,那么 CSS 就有简化的可能性。我用别人的一个复杂 CSS 库做了一张海报之后(poster_relaxed
),心想这货应该不至于那么复杂吧,于是本着极简原则,一天时间就写了另一个海报模板(poster_jacobs
),也挺像模像样的。
CSS/JS 社区应该比 LaTeX 大多了,所以要是遇到问题能得到的帮助资源也会多一些。现代浏览器的开发者工具(Developer Tools)也让调整 CSS 变得很便利,不用像 LaTeX 那样调一次就得重编一次 PDF。
老实说,这条路的确会很长,坑也不少。要看目标是什么了,只要不求完美的精致,用网页生成的粗糙 PDF 可能多数时候也够用了。
chuxinyuan 是的。目前的“其它格式”主要是 PDF,当然我觉得转 Word 或电子书等其它格式也不是不可能。
dapengde 谢谢详细测试。你给取的中文名“佩奇党”将来可能会招来小猪佩奇的小粉丝(就像 COS 招来 cosplay 的人一样)。
Paged HTML documents 我忘了写模板。不过任意 R Markdown 文档里指定输出格式为
pagedown::html_paged
应该就可以。简历模板是一份真简历,要是有读博士的机会可以跟简历主人联系。
这是因为在浏览器中浏览这些页面的时候需要一个服务器,比如无限月读(它会开启一个本地服务器)。
是的,我会在文档提醒这个。
双实线标记是为了视觉上更好地分块。一个井号太不显眼了。为了严谨支持 Markdown 的话,我还是建议通过 Pandoc 来解析文档(system2('pandoc', c('-f', 'markdown', '-t', 'json'), stdout = TRUE)
之后再用 jsonlite::fromJSON()
提取标题),而不要用正则表达式。
本论坛应该是不支持表格语法吧。
yufree 目前先以 Chrome 支持为主,因为只有它家支持通过命令行打印 PDF,虽然这支持力度也不咋地),别的浏览器都没测试。
devtools 包的确是千斤重,我一直在呼吁他们把 install_github
这种函数抽离出去,现在 remotes 包中的这个函数基本已经跟 devtools 里的等价了。我平时用 devtools 其实也就用两个功能,一个是这个 install_github()
,另一个是 load_all()
。
- 已编辑
测试报告
环境
> sessionInfo()
R version 3.5.1 (2018-07-02)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.1 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/openblas/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/libopenblasp-r0.2.20.so
locale:
[1] LC_CTYPE=en_US.UTF-8
[2] LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8
[4] LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8
[6] LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8
[8] LC_NAME=C
[9] LC_ADDRESS=C
[10] LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8
[12] LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets
[6] methods base
loaded via a namespace (and not attached):
[1] Rcpp_1.0.0 bookdown_0.8 later_0.7.5
[4] digest_0.6.18 R6_2.2.2 magrittr_1.5
[7] evaluate_0.12 xaringan_0.8.5 stringi_1.2.4
[10] promises_1.0.1 rstudioapi_0.8 rmarkdown_1.11
[13] tools_3.5.1 servr_0.11 stringr_1.3.1
[16] rsconnect_0.8.8 httpuv_1.4.5 xfun_0.4
[19] yaml_2.2.0 compiler_3.5.1 htmltools_0.3.6
[22] pagedown_0.0.27 knitr_1.21
- 估计是预览版,没碰到安装没问题
- 6个自带模板,不过paged html documents没有出现在 template的列表里,测试了其他五个
问题
总的问题: 网页里缩放页面之后布局变动很大,输出pdf时按照当前网页的缩放比例,如果像我一样在chrome里预览-print to pdf的话这是一个随机的不可控因素,感觉不大好,特别是海报的话,缩放看整体布局是必要的,具体的话:
- pagedown::html_letters 在25%时4页变7页
- pagedown::html_resume 2页变6页
- pagedown::poster_jacobs 目测没变化
- pagedown::poster_relaxed authors栏,文字出框了
html_letter
的self contained
的问题,pagedown::html_letter
默认self_contained
为false时,knit之后可以在Rstudio里看到,但没有分页,但在chrome里预览失败(,报错信息:
但是可以paged.js:23887 Fetch API cannot load file:///home/tc/GIT/cosx_exps/test82_files/paged-0.0.27/css/default.css. URL scheme must be "http" or "https" for CORS request. add @ paged.js:23887 paged.js:23887 Fetch API cannot load file:///home/tc/GIT/cosx_exps/test82_files/paged-0.0.27/css/letter.css. URL scheme must be "http" or "https" for CORS request. add @ paged.js:23887 paged.js:23887 Uncaught (in promise) TypeError: Failed to fetch at Polisher.add (paged.js:23887) at Previewer.preview (paged.js:26907) at paged.js:26976
inf_mr()
来预览,没问题
references的问题
- 示例文档的YAML里见到
references
项,感觉手动编辑reference很麻烦,塞进YAML里也显得臃肿,是不支持.bib吗?在poster_relaxed里还.bib和references都有这就更奇怪了。
- 示例文档的YAML里见到
poster_relaxed的布局问题
- 各个版块布局的顺序很难控制
- 看了一下示例文档,加了一个区域或删除一个版块后所有版块的整体布局都乱套了,
poster_relaxed
是漂亮,但摇摇欲坠的感觉,没有poster_jacobs
稳定
附图
其实我总担心chrome老更新,pagedown是不是得不停的更新?
tctcab 缺的那个模板我现在加上了。
页面布局的确对缩放很敏感,这一点不是很好控制。
poster_relaxed
是导入的别人的样式,后来我觉得太复杂,于是自己写了一个poster_jacobs
,背后的样式表轻便许多,所以更稳定一点(但也不能缩小太多,否则也会乱)。如 dapengde 所说,打印的时候恢复 100% 就好了。用
self_contained: false
的时候需要一个网页服务器才能让背后的 Paged.js 库正常读取 CSS 并完成排版工作,因为正常情况下浏览器不允许 JS 读取本地文件(安全问题)。无限月读会创建一个网页服务器。有时候我只是懒得写一个外部的 .bib 文件,所以就偷懒把参考文献以
references
的形式写在 Rmd 文档里了。references 和 bibliography 这两项 Pandoc 都支持,也可以混用。海报布局是写死的,如果要增删版块的话,需要了解 CSS 网格布局并自行修改 CSS:https://css-tricks.com/snippets/css/complete-guide-grid/ 如果有兴趣,不妨看一眼 poster_jacobs 的 CSS 源码,它是我这个门外汉写出来的:https://github.com/rstudio/pagedown/blob/master/inst/resources/css/poster-jacobs.css 里面除了那个标题底线(实际上是个很扁的椭圆)略有点伎俩之外,剩下的代码都很笨拙。
谢谢!
chuxinyuan Chrome 的更新对 CSS 带来的影响应该是微乎其微,这一点不必太担心,它的伤害值应该不会比 LaTeX 包的更新带来的伤害值大。
最近更新自己的简历,进一步体验了一下 pagedown 的 Resume 模板,有三个不解之处,望各位赐教:
- markdown 的基本语法在有些地方没有得到完全支持。例如,每个项目下的第一行里(例如默认模板的
B.S. in Information and Computing Sciences
一行)如果使用超级链接[]()
和项目列表-
,在得到的 html 里没有显示出来。在每个项目下第四行里是可以显示的。 - Aside 里的内容只能在第一页的右边栏显示。其他页右侧的阴影栏是空的。我试图在 Aside 里填写更多的内容,然而溢出的部分并没有顺延到后续页。如果简历总共就两页,这样的布局尚好,然而如果有四五页,除第一页之外的其他页右栏空着似乎有点奇怪。
- 简历的每个项目下面第二行和第三行默认是地点和年份。如果该项目缺少地点信息,用 N/A 即可,然而如果缺少年代信息,用 N/A 就不行了,空格也不行,空着也不行。我找到的方法是用全角空格,行了。我觉得最好跟地点信息一致,缺少的话也用 N/A,不然可能令人困惑。
- 已编辑
- 第一行最好是一段话(
<p>
),列表或其它类型的元素目前不支持。超链接问题我刚修正了,段落里面可以用超链接。 - 第二页以及后面的页上可以写边栏内容,参见图 3.2:https://pagedown.rbind.io
- 年份现在可以用
N/A
了(抄送问过我同样问题的 @earowang )。