问题缘起
在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 包的办法见: