Bookdown:修复R代码块中的中文字符串之前的额外空间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bookdown:修复R代码块中的中文字符串之前的额外空间相关的知识,希望对你有一定的参考价值。

当中文字符串里面的R代码块时,编译后的PDF会在字符串前得到一个冗余空间,如何避免这个额外的空间呢?请参考github - bookdown-chinese 的最小案例。

example

答案

此问题是由LaTeX包xeCJK引起的。默认情况下,它在中文和非中文字符之间添加空格,verbatim环境除外。在您的情况下,代码实际上不在verbatim环境中,因此您必须让xeCJK知道它不应该自动添加空格。

解决方案是将此行添加到您的LaTeX前导码(Highlighting环境由Pandoc在将Markdown转换为LaTeX时定义为语法高亮代码,并且它基于fancyvrb包):

RecustomVerbatimEnvironment{Highlighting}{Verbatim}{commandchars={},formatcom=xeCJKVerbAddon}

对于R Markdown文档,此行可以保存在.tex文件中,例如preamble.tex,并通过includes选项包含,例如,

output:
  pdf_document:
    includes:
      in_header: preamble.tex

有关完整的技术背景,请参阅this Github issue

以上是关于Bookdown:修复R代码块中的中文字符串之前的额外空间的主要内容,如果未能解决你的问题,请参考以下文章

R Markdown、Knitr、Pandoc和Bookdown之间的关系

笔记 数据科学中的 R 语言

笔记 数据科学中的 R 语言

笔记 数据科学中的 R 语言

在启用 ARC 的代码中修复警告“在此块中强烈捕获 [an object] 可能会导致保留周期”

在引发之前恢复python尝试异常块中的更改