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

Bookdown: Fix extra space before Chinese string inside R code chunk

当中文字符串在R代码块中时,编译后的PDF会在字符串前多出一个space,如何避免这个多余的space?请参考github - bookdown-chinese .

中的最小情况

这个问题是由 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