bookdown中的图表浮动体控制问题

问题缘起

在R中用 bookdown 包写书或报告时,经常遇到图或表偏离文字内容的情况,例如:一段文字中涉及一张图,在 word 里通常用手工的方式让图紧挨着段落文字,但在 Latex 中由于是代码排版,常常出现图或表离段落文字较远,或不在一页的情况,影响书或报告的阅读。由于 bookdown 生成PDF主要通过 pandoc 调用 Latex 编译完成,因此,掌握并熟悉 Latex 语法,解决输出PDF存在的格式问题很有必要。

解决办法

经查阅,在 Latex入门 一书334页,5.3.1节讲述了 Latex 中针对图、表的浮动体设置内容,主要涉及四个参数的选择,说明如下:

  • h 指 here ,浮动体内容放在代码所在的上下文位置;

  • t 指 top ,浮动体内容放在代码所在页面的顶部,可能是代码所在页的顶部,也可能是代码所在页之后一页;

  • b 指 bottom ,浮动体内容放在代码所在页面的底部;

  • p 指 page ,一个或多个浮动体内容放在单独的页面中,这个页面被称为浮动页(float page),有正文的页面称为文本页(text page)。

bookdown 中,设置图片的代码是: fig.pos = ‘!htbp’ ,示例如下:

{r keycocitation, out.width='100%', fig.pos='!htbp', fig.align='center', fig.cap="文献共引网络图",  echo=FALSE, message=FALSE, warning=FALSE}

考虑到 latex 对每个位置浮动体的总数和占用大小有一定限制,超出限制的浮动体会被排在较后的页面中,可以增加 ! 符号来忽略这些参数限制。进一步介绍,可以参阅 Latex入门 一书337-339页。

补充:在生成PDF报告时出现如下报错信息:

xeCJK时的警告:xeCJK warning: "CJKfamily-Unknown"

相应的解决办法见:https://blog.csdn.net/RobertChenGuangzhi/article/details/48979285

environ.sty 包可从以下网址下载: https://www.ctan.org/tex-archive/macros/latex/contrib/environ

在本地windows电脑上安装environ.sty 包的办法见:

Avatar
Wu, Jun
Associate professor
Next
Previous